인증 자동화 설정

인증 테스트를 자동화하려면 추가 설정이 필요합니다.

아래의 모든 설치 및 구성 단계는 GRL 테스트 하네스 소프트웨어를 실행하는 Windows 머신에서 이루어집니다. 계속하기 전에 최신 GRL 스레드 테스트 하니스를 다운로드하여 설치합니다.

설치 후 테스트 대상 기기(DUT)에는 두 가지 자동화 방법이 있습니다.

  1. OpenThread 하네스 자동화 도구
  2. 테스트 하네스 자동 DUT 모드

OpenThread 하네스 자동화 도구

설치

  1. 다음 소프트웨어를 설치합니다.
    • Python 2.7
    • Windows용 Git (Bash 지원 권장)
  2. OpenThread 저장소를 클론하여 자동화 스크립트를 가져옵니다.
    git clone https://github.com/openthread/openthread
    
  3. Python 요구사항을 설치합니다.
    cd tools/harness-automation
    pip install -r requirements.txt
    
  4. Google ChromeChromeDriver를 모두 설치합니다.

구성

  1. 자동화 도구의 구성 파일을 만듭니다.
    cp autothreadharness/settings_sample.py autothreadharness/settings.py
    
  2. 파일의 안내에 따라 새 구성 파일을 업데이트합니다.
  3. C:\GRL\Thread1.1\Config\Configuration.ini에 있는 테스트 하네스 구성 파일에 다음 매개변수를 추가합니다.
    BrowserAutoNavigate = False

혼합 테스트베드 지원

Harness Automation Tool은 각 테스트 사례에 사용된 참조 기기가 모두 동일한 기기가 아닌 혼합된 기기 집합인 혼합 테스트베드도 지원합니다. 예를 들어 모든 테스트 사례에 OpenThread를 실행하는 TI CC2538 보드 32개를 사용하는 대신 각 테스트 사례에 원하는 대로 네 가지 스레드 참조 기기를 혼합하여 사용할 수 있습니다.

혼합 테스트베드를 사용하려면 다음을 추가로 구성해야 합니다.

  1. C:\GRL\Thread1.1\Config\Configuration.ini에 있는 테스트 하네스 구성 파일에 다음 추가 매개변수를 추가합니다.
    EnableDeviceSelection = True
  2. 스레드 그룹에서 토폴로지 구성 파일을 다운로드합니다. 이 파일을 C:\GRL\Thread1.1\Thread_Harness\TestScriptsTopologyConfig.txt로 추가합니다. 이 파일은 각 테스트 사례에서 각 역할에 사용할 참조 기기를 자세히 설명합니다.

스레드 그룹에서 제공하는 토폴로지 구성 파일은 다른 혼합 침대 구성에 맞게 수정할 수 있지만 공식 인증에는 원래 구성을 사용해야 합니다.

토폴로지 구성 파일에서 참조 기기에 사용할 수 있는 유효한 값은 다음과 같습니다.

토폴로지 구성 파일의 값 테스트 하네스 참조 기기
ARM ARM: NXP FRDM-K64F(Firefly 6LoWPAN Shield 포함)
NXP NXP(Freescale): USB-KW24D512 동글
OpenThread OpenThread: TI CC2538DK
SiLabs Silabs: EM358x USB 스틱

토폴로지 구성 파일의 각 테스트 사례 항목은 별도의 줄에 있어야 하며 다음과 같이 role:device 쌍으로 형식이 지정되어야 합니다.

5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM

테스트 하네스 자동 DUT 모드

GRL 테스트 하니스 소프트웨어는 고급 자동 검색 기능(Auto DUT)을 제공하여 스레드 참조 스택 공급업체의 검증 프로세스를 가속화합니다.

OpenThread는 테스트 하네스가 참조 플랫폼 중 하나인 것처럼 구성요소나 제품을 제어할 수 있는 스레드 호스트 컨트롤러 인터페이스 (THCI)의 예를 제공합니다. 특정 플랫폼의 직렬 포트 특성에 따라 DUT는 다음 중 하나일 수 있습니다.

기존 OpenThread 참조 플랫폼 역할

DUT의 직렬 포트가 115200 8-N-1 설정에서 작동하고 기기가 모든 실제 기기 재설정 후 올바르게 응답하는 경우 (예: 기기의 Windows 머신에 대한 유효한 연결을 확인하기 위해) 플랫폼은 OpenThread THCI 도구를 사용할 수 있습니다. 이 도구를 사용하면 테스트 중에 기기가 OpenThread 참조 플랫폼으로 작동할 수 있습니다.

  1. GRL 테스트 하니스가 열려 있으면 닫습니다.
  2. 기기를 Windows 머신에 연결합니다.
  3. Python pySerial 모듈을 사용하여 기기 직렬 포트 하드웨어 식별자를 찾습니다.
    1. Windows 컴퓨터에 pySerial을 설치합니다.
    2. Windows 명령줄에서 Python을 사용하여 머신에 연결된 기기의 모든 하드웨어 식별자 (VID 및 PID)를 열거합니다. 이 출력에서 한 기기는 VID=1366 및 PID=1015 식별자로 연결됩니다.
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. COM 포트를 이미 알고 있는 경우 다른 명령어를 사용할 수 있습니다. 예를 들어 COM 포트가 COM10인 경우:
      python -c "import serial.tools.list_ports;print [ports[2] for ports in serial.tools.list_ports.comports() if ports[0] == 'COM10']"
      ['USB\VID_1366+PID_1015+MI_00']
  4. 골든 기기 목록을 업데이트합니다.
    1. C:\GRL\Thread1.1\Config\Configuration.ini를 엽니다.
    2. 기기의 VID와 PID를 사용하여 GoldenDeviceHardwareIds 배열에서 OpenThread 그룹을 업데이트합니다.
      GoldenDeviceHardwareIds = {
      'NXP': ['VID:PID=1FC9:0300','VID:PID=15A2:0300','VID:PID=1366:1015'],
      'SiLabs': 'VID:PID=10C4:8A5E',
      'ARM': 'VID:PID=0D28:0204',
      'OpenThread':['VID:PID=10C4:EA60','VID:PID=1366:1015']}
  5. 자동 DUT 모드 사용 설정

새 참조 플랫폼 역할

DUT의 직렬 포트가 적절한 직렬 포트 설정에서 작동하지 않거나 기기가 실제 기기 재설정 후 올바르게 응답하지 않는 경우 (재설정 후 3~6초 이내에 읽을 수 없는 코드를 출력) OpenThread THCI를 맞춤설정하여 테스트 하니스에서 기기를 새 플랫폼으로 처리할 수 있습니다.

예를 들어 Nordic Semiconductor nRF52840 플랫폼을 사용하여 THCI를 맞춤설정하려면 다음을 실행합니다.

  1. GRL 테스트 하니스가 열려 있으면 닫습니다.
  2. 타겟 기기의 UART 특성에 따라 /tools/harness-thci/OpenThread.py을 수정합니다. 수정사항은 타겟 기기마다 다를 수 있습니다. Nordic nRF52840 플랫폼의 경우:

    1. OpenThread.py 파일 이름을 nRF52840.py로 바꿉니다.
    2. 'OpenThread'가 처음 세 번 나오는 부분을 'nRF52840'으로 변경합니다.

      >> Device : nRF52840 THCI
      >> Class : nRF52840
      
      class nRF52840(IThci):
      
    3. 직렬 포트 매개변수를 변경합니다.

      def _connect(self):
          print 'My port is %s' % self.port
          if self.port.startswith('COM'):
              self.handle = serial.Serial(self.port, 115200, timeout=0)
              time.sleep(1)
              self.handle.write('\r\n')
              time.sleep(0.1)
              self._is_net = False
          elif ':' in self.port:
              host, port = self.port.split(':')
              self.handle = socket.create_connection((host, port))
              self.handle.setblocking(0)
              self._is_net = True
          else:
              raise Exception('Unknown port schema')
          self.UIStatusMsg = self.getVersionNumber()
    4. 기기 재설정 후 읽을 수 없는 코드 출력의 영향을 없애려면 절전 모드 시간을 변경하세요.

      def powerDown(self):
          """power down the Thread device"""
          print '%s call powerDown' % self.port
          self._sendline('reset')
          self.isPowerDown = True
          time.sleep(8)  # New addition
      
      def reboot(self):
          """reset and rejoin to Thread Network without any timeout
      
          Returns:
              True: successful to reset and rejoin the Thread Network
              False: fail to reset and rejoin the Thread Network
          """
          print '%s call reboot' % self.port
          try:
              self._sendline('reset')
              self.isPowerDown = True
              time.sleep(8)  # Updated from 3 to 8
      
      def reset(self):
          """factory reset"""
          print '%s call reset' % self.port
          try:
              self._sendline('factoryreset')
              time.sleep(8)  # Updated from 3 to 8
              self._read()
      
      def resetAndRejoin(self, timeout):
          """reset and join back Thread Network with a given timeout delay
      
          Args:
              timeout: a timeout interval before rejoin Thread Network
      
          Returns:
              True: successful to reset and rejoin Thread Network
              False: fail to reset and rejoin the Thread Network
          """
          print '%s call resetAndRejoin' % self.port
          print timeout
          try:
              self._sendline('reset')
              self.isPowerDown = True
              time.sleep(timeout)
              if timeout < 8:      # Sleep a bit longer if the timeout is short
                  time.sleep(8 - timeout)
  3. 수정된 nRF52840.py 파일을 C:\GRL\Thread1.1\Thread_Harness\THCI에 복사합니다.

  4. 테스트 하니스에 새 플랫폼 정보를 추가합니다.

    1. 플랫폼을 더 쉽게 구분할 수 있도록 아이콘 (png 또는 jpg 형식)을 만들고 C:\GRL\Thread1.1\Web\images에 복사합니다.
    2. thumbnail 매개변수가 아이콘 파일인 새 DEVICE 섹션으로 C:\GRL\Thread1.1\Web\data\deviceInputFields.xml를 업데이트합니다.

      <DEVICE name="nRF52840" thumbnail="nRF52840.jpg" description ="nRF52840: Nordic" THCI="nRF52840">
          <ITEM label="Serial Line"
                type="text"
                forParam="SerialPort"
                validation="COM"
                hint="eg: COM1">COM
          </ITEM>
          <ITEM label="Speed"
                type="text"
                forParam="SerialBaudRate"
                validation="baud-rate"
                hint="eg: 115200">115200
          </ITEM>
      </DEVICE>
      
  5. 기기를 Windows 머신에 연결합니다.

  6. Python pySerial 모듈을 사용하여 기기 직렬 포트 하드웨어 식별자를 찾습니다.

    1. Windows 컴퓨터에 pySerial을 설치합니다.
    2. Windows 명령줄에서 Python을 사용하여 머신에 연결된 기기의 모든 하드웨어 식별자 (VID 및 PID)를 열거합니다. 이 출력에서 한 기기는 VID=1366 및 PID=1015 식별자로 연결됩니다.
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. COM 포트를 이미 알고 있는 경우 다른 명령어를 사용할 수 있습니다. 예를 들어 COM 포트가 COM10인 경우:
      python -c "import serial.tools.list_ports;print [ports[2] for ports in serial.tools.list_ports.comports() if ports[0] == 'COM10']"
      ['USB\VID_1366+PID_1015+MI_00']
  7. 골든 기기 목록을 업데이트합니다.

    1. C:\GRL\Thread1.1\Config\Configuration.ini를 엽니다.
    2. 기기의 VID와 PID를 사용하여 GoldenDeviceHardwareIds 배열에 새 플랫폼 그룹을 추가합니다.
      GoldenDeviceHardwareIds = {
      'NXP': ['VID:PID=1FC9:0300','VID:PID=15A2:0300','VID:PID=1366:1015'],
      'SiLabs': 'VID:PID=10C4:8A5E',
      'ARM': 'VID:PID=0D28:0204',
      'OpenThread':'VID:PID=10C4:EA60',
      'nRF52840': 'VID:PID=1366:1015'}
  8. 자동 DUT 모드 사용 설정

자동 DUT 모드 사용 설정

위의 두 구성 옵션 중 하나를 완료한 후 다음 단계를 따르세요.

  1. GRL 테스트 하네스를 열면 기기/포트가 이제 새 참조 기기로 표시됩니다.
  2. 지원되는 하드웨어 목록 아래에서 Enable Auto DUT Device Selection 체크박스를 선택합니다.
  3. 타겟 기기/포트 아래에서 DUT로 설정 라디오 버튼을 선택하여 기기를 DUT로 설정합니다.
OT 인증 자동 DUT