Para automatizar las pruebas de certificación, se requiere una configuración adicional.
Todos los pasos de instalación y configuración que se indican a continuación se realizan en la máquina con Windows que ejecuta el software de GRL Test Harness. Descarga e instala el GRL Thread Test Harness más reciente antes de continuar.
Una vez instalado, existen dos métodos de automatización para el dispositivo bajo prueba (DUT):
Herramienta de automatización de OpenThread Harness
Instalar
- Instala el siguiente software:
- Python 2.7
- Git para Windows (se recomienda el uso de Bash)
- Clona el repositorio de OpenThread para obtener las secuencias de comandos de automatización:
git clone https://github.com/openthread/openthread - Instala los requisitos de Python:
cd tools/harness-automationpip install -r requirements.txt - Instala Google Chrome y ChromeDriver.
Configurar
- Crea un archivo de configuración para la herramienta de automatización:
cp autothreadharness/settings_sample.py autothreadharness/settings.py - Actualiza ese nuevo archivo de configuración según las instrucciones que se indican en él.
- Agrega el siguiente parámetro al archivo de configuración de Test Harness, que se encuentra en
C:\GRL\Thread1.1\Config\Configuration.ini:BrowserAutoNavigate = False
Compatibilidad con bancos de pruebas mixtos
La herramienta de automatización de arneses también admite bancos de pruebas mixtos, en los que los dispositivos de referencia que se usan en cada caso de prueba son un conjunto mixto de dispositivos en lugar de ser todos iguales. Por ejemplo, en lugar de usar 32 placas TI CC2538 que ejecutan OpenThread para todos los casos de prueba, puedes combinar los cuatro dispositivos de referencia de Thread para cada caso de prueba según lo desees.
Para usar bancos de pruebas mixtos, se requiere una configuración adicional:
- Agrega el siguiente parámetro adicional al archivo de configuración de Test Harness, que se encuentra en
C:\GRL\Thread1.1\Config\Configuration.ini:EnableDeviceSelection = True
- Descarga el archivo de configuración de topología del grupo de subprocesos.
Agrega este archivo como
TopologyConfig.txtaC:\GRL\Thread1.1\Thread_Harness\TestScripts. En este archivo, se detalla qué dispositivo de referencia se debe usar para cada rol en cada caso de prueba.
El archivo de configuración de topología que proporciona Thread Group se puede modificar para otras configuraciones de lecho mixto, pero para la certificación oficial se debe usar la configuración original.
Los valores válidos que se pueden usar para los dispositivos de referencia en el archivo de configuración de la topología son los siguientes:
| Valor en el archivo de configuración de topología | Dispositivo de referencia del agente de prueba |
|---|---|
ARM |
ARM: NXP FRDM-K64F con placa Firefly 6LoWPAN |
NXP |
NXP(Freescale): Dongles USB-KW24D512 |
OpenThread |
OpenThread: TI CC2538DK |
SiLabs |
Silabs: EM358x USB Stick |
Cada entrada de caso de prueba en el archivo de configuración de topología debe estar en una línea separada y tener el formato de pares role:device de la siguiente manera:
5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM
Modo de DUT automático del agente de prueba
El software GRL Test Harness proporciona una función avanzada de detección automática (Auto DUT) que acelera el proceso de validación para los proveedores de la pila de referencia de Thread.
OpenThread proporciona un ejemplo de interfaz de controlador de host de Thread (THCI) que permite que el arnés de prueba controle tu componente o producto como si fuera una de las plataformas de referencia. Según las características del puerto serie de tu plataforma específica, el DUT podría hacer lo siguiente:
Actúa como la plataforma de referencia existente de OpenThread
Si el puerto serie del DUT funciona con la configuración 115200 8-N-1 y el dispositivo responde correctamente después de cada restablecimiento físico (por ejemplo, para confirmar la conexión válida del dispositivo a la máquina Windows), la plataforma puede usar la herramienta THCI de OpenThread. Esta herramienta permite que el dispositivo actúe como la plataforma de referencia de OpenThread durante las pruebas.
- Cierra el arnés de prueba de GRL si está abierto.
- Conecta el dispositivo a la máquina con Windows.
- Busca el identificador de hardware del puerto serie del dispositivo con el módulo pySerial de Python:
- Instala pySerial en la máquina con Windows.
- Usa Python en la línea de comandos de Windows para enumerar todos los identificadores de hardware (VID y PID) de los dispositivos conectados a la máquina. En este resultado, un dispositivo está conectado con un identificador de VID=1366 y PID=1015:
python -m serial.tools.list_ports -vCOM10desc: USB Serial Port (COM10)hwid: USB\VID_1366+PID_1015+MI_00 - Si ya conoces el puerto COM, puedes usar otro comando. Por ejemplo, si el puerto COM es
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']
- Actualiza la lista de dispositivos de referencia:
- Abre
C:\GRL\Thread1.1\Config\Configuration.ini. - Actualiza el grupo OpenThread en el array
GoldenDeviceHardwareIdscon el VID y el PID de los dispositivos: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']}
- Abre
- Habilita el modo DUT automático.
Actúa como una nueva plataforma de referencia
Si el puerto serie del DUT no funciona con la configuración adecuada del puerto serie o si el dispositivo no responde correctamente después de un restablecimiento físico (genera un código ilegible entre 3 y 6 segundos después del restablecimiento), se puede personalizar la THCI de OpenThread para que trate el dispositivo como una plataforma nueva en el arnés de prueba.
Por ejemplo, para personalizar la THCI con la plataforma Nordic Semiconductor nRF52840, haz lo siguiente:
- Cierra el arnés de prueba de GRL si está abierto.
Modifica
/tools/harness-thci/OpenThread.pysegún las características de UART del dispositivo de destino. Las modificaciones pueden variar entre los dispositivos objetivo. En el caso de la plataforma Nordic nRF52840, haz lo siguiente:- Cambia el nombre del archivo
OpenThread.pypornRF52840.py. Cambia las tres primeras ocurrencias de "OpenThread" por "nRF52840":
>> Device : nRF52840 THCI >> Class : nRF52840 class nRF52840(IThci):Cambia los parámetros del puerto serie:
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()Cambia el tiempo de suspensión para eliminar el impacto de la salida de código ilegible después de restablecer el dispositivo:
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)
- Cambia el nombre del archivo
Copia el archivo
nRF52840.pymodificado enC:\GRL\Thread1.1\Thread_Harness\THCI.Agrega la información de la nueva plataforma al arnés de prueba:
- Crea un ícono (en formato PNG o JPG) para que sea más fácil diferenciar tu plataforma y cópialo en
C:\GRL\Thread1.1\Web\images. Actualiza
C:\GRL\Thread1.1\Web\data\deviceInputFields.xmlcon una nueva secciónDEVICE, en la que el parámetrothumbnailes el archivo de ícono:<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>
- Crea un ícono (en formato PNG o JPG) para que sea más fácil diferenciar tu plataforma y cópialo en
Conecta el dispositivo a la máquina con Windows.
Busca el identificador de hardware del puerto serie del dispositivo con el módulo pySerial de Python:
- Instala pySerial en la máquina con Windows.
- Usa Python en la línea de comandos de Windows para enumerar todos los identificadores de hardware (VID y PID) de los dispositivos conectados a la máquina. En este resultado, un dispositivo está conectado con un identificador de VID=1366 y PID=1015:
python -m serial.tools.list_ports -vCOM10desc: USB Serial Port (COM10)hwid: USB\VID_1366+PID_1015+MI_00 - Si ya conoces el puerto COM, puedes usar otro comando. Por ejemplo, si el puerto COM es
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']
Actualiza la lista de dispositivos dorados:
- Abre
C:\GRL\Thread1.1\Config\Configuration.ini. - Agrega un nuevo grupo de plataformas en el array
GoldenDeviceHardwareIdscon el VID y el PID del dispositivo: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'}
- Abre
Habilita el modo DUT automático
Después de completar una de las dos opciones de configuración anteriores, haz lo siguiente:
- Abre el GRL Test Harness. El dispositivo o puerto ahora aparecerá como un nuevo dispositivo de referencia.
- Selecciona la casilla de verificación Enable Auto DUT Device Selection que se encuentra debajo de la lista de hardware compatible.
- Selecciona el botón de selección Set as DUT debajo del dispositivo o puerto de destino para establecer el dispositivo como DUT.