인증 테스트를 자동화하려면 추가 설정이 필요합니다.
아래의 모든 설치 및 구성 단계는 GRL 테스트 하네스 소프트웨어를 실행하는 Windows 머신에서 진행됩니다. 계속하기 전에 최신 GRL 스레드 테스트 하네스를 다운로드하여 설치합니다.
설치되면 테스트 대상 기기(DUT)의 두 가지 자동화 방법이 있습니다.
OpenThread Hars 자동화 도구
설치
- 다음 소프트웨어를 설치합니다.
- Python 2.7
- Windows용 Git (Bash 지원이 적극 권장됨)
- OpenThread 저장소를 클론하여 자동화 스크립트를 가져옵니다.
git clone https://github.com/openthread/openthread
- Python 요구사항 설치:
cd tools/harness-automation
pip install -r requirements.txt
- Chrome 및 ChromeDriver를 모두 설치합니다.
구성
- 자동화 도구의 구성 파일
cp autothreadharness/settings_sample.py autothreadharness/settings.py
- 파일의 안내에 따라 새 구성 파일을 업데이트합니다.
C:\GRL\Thread1.1\Config\Configuration.ini
에 있는 테스트 하네스 구성 파일에 다음 매개변수를 추가합니다.BrowserAutoNavigate = False
혼합된 테스트베드 지원
또한 하네스 자동화 도구는 혼합된 테스트베드를 지원합니다. 여기서 각 테스트 사례에 사용되는 참조 기기는 동일한 기기가 아닌 혼합된 기기 세트입니다. 예를 들어 모든 테스트 사례에 OpenThread가 실행되는 TI CC2538 보드 32개를 사용하는 대신 각 테스트 사례의 4개의 스레드 참조 기기를 원하는 대로 혼합하여 매칭할 수 있습니다.
혼합 테스트베드를 사용하려면 추가 구성이 필요합니다.
C:\GRL\Thread1.1\Config\Configuration.ini
에 있는 다음 추가 매개변수를 테스트 하네스 구성 파일에 추가합니다.EnableDeviceSelection = True
- 스레드 그룹에서 토폴로지 구성 파일을 다운로드합니다.
이 파일을
TopologyConfig.txt
에C:\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 참조 플랫폼 역할을 할 수 있습니다.
- GRL 테스트 하네스가 열려 있는 경우 닫습니다.
- Windows 컴퓨터에 기기를 연결합니다.
- Python pySerial 모듈을 사용하여 기기 직렬 포트 하드웨어 식별자를 찾습니다.
- Windows 시스템에 pySerial을 설치합니다.
- Windows 명령줄에서 Python을 사용하여 시스템에 연결된 기기의 모든 하드웨어 식별자 (VID 및 PID)를 열거합니다. 이 출력에서 기기 1개는 VID=1366 및 PID=1015라는 식별자와 연결되어 있습니다.
python -m serial.tools.list_ports -v
COM10desc: 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']
- Golden Device 목록을 업데이트합니다.
C:\GRL\Thread1.1\Config\Configuration.ini
를 엽니다.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']}
- 자동 DUT 모드 사용 설정
새로운 참조 플랫폼 역할
DUT의 직렬 포트가 적절한 직렬 포트 설정에서 작동하지 않거나 기기가 물리적 재설정 (3~6초 이내에 읽을 수 없는 코드 출력) 후에 기기가 올바르게 응답하지 않는 경우 OpenThread THCI를 맞춤설정하여 기기를 테스트 하네스의 새 플랫폼으로 처리할 수 있습니다.
예를 들어 Nordic Semiconductor nRF52840 플랫폼을 사용하여 THCI를 맞춤설정하려면 다음 단계를 따르세요.
- GRL 테스트 하네스가 열려 있는 경우 닫습니다.
대상 기기의 UART 특성을 기반으로
/tools/harness-thci/OpenThread.py
를 수정합니다. 수정은 대상 기기 간에 다를 수 있습니다. Nordic nRF52840 플랫폼의 경우:OpenThread.py
파일의 이름을nRF52840.py
로 바꿉니다.처음 3개의 &&tt;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
에 복사할 수 있습니다. 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>
- 플랫폼을 PNG와 jpg 형식으로 더 쉽게
만들어 플랫폼을 쉽게 구별하고
Windows 컴퓨터에 기기를 연결합니다.
Python pySerial 모듈을 사용하여 기기 직렬 포트 하드웨어 식별자를 찾습니다.
- Windows 시스템에 pySerial을 설치합니다.
- Windows 명령줄에서 Python을 사용하여 시스템에 연결된 기기의 모든 하드웨어 식별자 (VID 및 PID)를 열거합니다. 이 출력에서 기기 1개는 VID=1366 및 PID=1015라는 식별자와 연결되어 있습니다.
python -m serial.tools.list_ports -v
COM10desc: 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']
Golden 기기 목록을 업데이트합니다.
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 테스트 하네스를 엽니다. 이제 기기/포트가 새 참조 기기로 표시됩니다.
- 지원되는 하드웨어 목록 아래에 있는 Auto DUT 기기 선택 사용 설정 체크박스를 선택합니다.
- 대상 기기/포트에서 DUT로 설정 라디오 버튼을 선택하여 기기를 DUT로 설정합니다.