인증 테스트를 자동화하려면 추가 설정이 필요합니다.
아래의 모든 설치 및 구성 단계는 GRL 테스트 하네스 소프트웨어를 실행하는 Windows 머신에서 이루어집니다. 계속하기 전에 최신 GRL 스레드 테스트 하니스를 다운로드하여 설치합니다.
설치 후 테스트 대상 기기(DUT)에는 두 가지 자동화 방법이 있습니다.
OpenThread 하네스 자동화 도구
설치
- 다음 소프트웨어를 설치합니다.
- Python 2.7
- Windows용 Git (Bash 지원 권장)
- OpenThread 저장소를 클론하여 자동화 스크립트를 가져옵니다.
git clone https://github.com/openthread/openthread - Python 요구사항을 설치합니다.
cd tools/harness-automationpip install -r requirements.txt - Google Chrome과 ChromeDriver를 모두 설치합니다.
구성
- 자동화 도구의 구성 파일을 만듭니다.
cp autothreadharness/settings_sample.py autothreadharness/settings.py - 파일의 안내에 따라 새 구성 파일을 업데이트합니다.
C:\GRL\Thread1.1\Config\Configuration.ini에 있는 테스트 하네스 구성 파일에 다음 매개변수를 추가합니다.BrowserAutoNavigate = False
혼합 테스트베드 지원
Harness Automation Tool은 각 테스트 사례에 사용된 참조 기기가 모두 동일한 기기가 아닌 혼합된 기기 집합인 혼합 테스트베드도 지원합니다. 예를 들어 모든 테스트 사례에 OpenThread를 실행하는 TI CC2538 보드 32개를 사용하는 대신 각 테스트 사례에 원하는 대로 네 가지 스레드 참조 기기를 혼합하여 사용할 수 있습니다.
혼합 테스트베드를 사용하려면 다음을 추가로 구성해야 합니다.
C:\GRL\Thread1.1\Config\Configuration.ini에 있는 테스트 하네스 구성 파일에 다음 추가 매개변수를 추가합니다.EnableDeviceSelection = True
- 스레드 그룹에서 토폴로지 구성 파일을 다운로드합니다.
이 파일을
C:\GRL\Thread1.1\Thread_Harness\TestScripts에TopologyConfig.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 참조 플랫폼으로 작동할 수 있습니다.
- GRL 테스트 하니스가 열려 있으면 닫습니다.
- 기기를 Windows 머신에 연결합니다.
- Python pySerial 모듈을 사용하여 기기 직렬 포트 하드웨어 식별자를 찾습니다.
- Windows 컴퓨터에 pySerial을 설치합니다.
- Windows 명령줄에서 Python을 사용하여 머신에 연결된 기기의 모든 하드웨어 식별자 (VID 및 PID)를 열거합니다. 이 출력에서 한 기기는 VID=1366 및 PID=1015 식별자로 연결됩니다.
python -m serial.tools.list_ports -vCOM10desc: USB Serial Port (COM10)hwid: USB\VID_1366+PID_1015+MI_00 - 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']
- 골든 기기 목록을 업데이트합니다.
C:\GRL\Thread1.1\Config\Configuration.ini를 엽니다.- 기기의 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']}
- 자동 DUT 모드 사용 설정
새 참조 플랫폼 역할
DUT의 직렬 포트가 적절한 직렬 포트 설정에서 작동하지 않거나 기기가 실제 기기 재설정 후 올바르게 응답하지 않는 경우 (재설정 후 3~6초 이내에 읽을 수 없는 코드를 출력) OpenThread THCI를 맞춤설정하여 테스트 하니스에서 기기를 새 플랫폼으로 처리할 수 있습니다.
예를 들어 Nordic Semiconductor nRF52840 플랫폼을 사용하여 THCI를 맞춤설정하려면 다음을 실행합니다.
- GRL 테스트 하니스가 열려 있으면 닫습니다.
타겟 기기의 UART 특성에 따라
/tools/harness-thci/OpenThread.py을 수정합니다. 수정사항은 타겟 기기마다 다를 수 있습니다. Nordic nRF52840 플랫폼의 경우:OpenThread.py파일 이름을nRF52840.py로 바꿉니다.'OpenThread'가 처음 세 번 나오는 부분을 'nRF52840'으로 변경합니다.
>> Device : nRF52840 THCI >> Class : nRF52840 class nRF52840(IThci):직렬 포트 매개변수를 변경합니다.
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()기기 재설정 후 읽을 수 없는 코드 출력의 영향을 없애려면 절전 모드 시간을 변경하세요.
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)
수정된
nRF52840.py파일을C:\GRL\Thread1.1\Thread_Harness\THCI에 복사합니다.테스트 하니스에 새 플랫폼 정보를 추가합니다.
- 플랫폼을 더 쉽게 구분할 수 있도록 아이콘 (png 또는 jpg 형식)을 만들고
C:\GRL\Thread1.1\Web\images에 복사합니다. 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>
- 플랫폼을 더 쉽게 구분할 수 있도록 아이콘 (png 또는 jpg 형식)을 만들고
기기를 Windows 머신에 연결합니다.
Python pySerial 모듈을 사용하여 기기 직렬 포트 하드웨어 식별자를 찾습니다.
- Windows 컴퓨터에 pySerial을 설치합니다.
- Windows 명령줄에서 Python을 사용하여 머신에 연결된 기기의 모든 하드웨어 식별자 (VID 및 PID)를 열거합니다. 이 출력에서 한 기기는 VID=1366 및 PID=1015 식별자로 연결됩니다.
python -m serial.tools.list_ports -vCOM10desc: USB Serial Port (COM10)hwid: USB\VID_1366+PID_1015+MI_00 - 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']
골든 기기 목록을 업데이트합니다.
C:\GRL\Thread1.1\Config\Configuration.ini를 엽니다.- 기기의 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'}
자동 DUT 모드 사용 설정
위의 두 구성 옵션 중 하나를 완료한 후 다음 단계를 따르세요.
- GRL 테스트 하네스를 열면 기기/포트가 이제 새 참조 기기로 표시됩니다.
- 지원되는 하드웨어 목록 아래에서 Enable Auto DUT Device Selection 체크박스를 선택합니다.
- 타겟 기기/포트 아래에서 DUT로 설정 라디오 버튼을 선택하여 기기를 DUT로 설정합니다.