인증 자동화 설정

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

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

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

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

OpenThread Hars 자동화 도구

설치

  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. ChromeChromeDriver를 모두 설치합니다.

구성

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

혼합된 테스트베드 지원

또한 하네스 자동화 도구는 혼합된 테스트베드를 지원합니다. 여기서 각 테스트 사례에 사용되는 참조 기기는 동일한 기기가 아닌 혼합된 기기 세트입니다. 예를 들어 모든 테스트 사례에 OpenThread가 실행되는 TI CC2538 보드 32개를 사용하는 대신 각 테스트 사례의 4개의 스레드 참조 기기를 원하는 대로 혼합하여 매칭할 수 있습니다.

혼합 테스트베드를 사용하려면 추가 구성이 필요합니다.

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

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

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

토폴로지 구성 파일의 값 테스트 하네스 참조 기기
ARM ARM: Firefly 6LoWPAN Shield를 갖춘 NXP FRDM-K64F
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)를 열거합니다. 이 출력에서 기기 1개는 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. Golden Device 목록을 업데이트합니다.
    1. C:\GRL\Thread1.1\Config\Configuration.ini를 엽니다.
    2. GoldenDeviceHardwareIds 배열에서 OpenThread 그룹을 기기의 VID 및 PID로 업데이트합니다.
      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. 처음 3개의 &&tt;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. C:\GRL\Thread1.1\Web\data\deviceInputFields.xml를 새로운 DEVICE 섹션으로 업데이트합니다. 여기서 thumbnail 매개변수는 아이콘 파일입니다.

      <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)를 열거합니다. 이 출력에서 기기 1개는 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. Golden 기기 목록을 업데이트합니다.

    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. 지원되는 하드웨어 목록 아래에 있는 Auto DUT 기기 선택 사용 설정 체크박스를 선택합니다.
  3. 대상 기기/포트에서 DUT로 설정 라디오 버튼을 선택하여 기기를 DUT로 설정합니다.
OT 인증 자동 DUT