Configuración de la automatización de la certificación

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):

  1. Herramienta de automatización de arneses de OpenThread
  2. Modo DUT automático de Test Harness

Herramienta de automatización de OpenThread Harness

Instalar

  1. Instala el siguiente software:
    • Python 2.7
    • Git para Windows (se recomienda el uso de Bash)
  2. Clona el repositorio de OpenThread para obtener las secuencias de comandos de automatización:
    git clone https://github.com/openthread/openthread
    
  3. Instala los requisitos de Python:
    cd tools/harness-automation
    pip install -r requirements.txt
    
  4. Instala Google Chrome y ChromeDriver.

Configurar

  1. Crea un archivo de configuración para la herramienta de automatización:
    cp autothreadharness/settings_sample.py autothreadharness/settings.py
    
  2. Actualiza ese nuevo archivo de configuración según las instrucciones que se indican en él.
  3. 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:

  1. 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
  2. Descarga el archivo de configuración de topología del grupo de subprocesos. Agrega este archivo como TopologyConfig.txt a C:\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.

  1. Cierra el arnés de prueba de GRL si está abierto.
  2. Conecta el dispositivo a la máquina con Windows.
  3. Busca el identificador de hardware del puerto serie del dispositivo con el módulo pySerial de Python:
    1. Instala pySerial en la máquina con Windows.
    2. 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 -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. 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']
  4. Actualiza la lista de dispositivos de referencia:
    1. Abre C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Actualiza el grupo OpenThread en el array GoldenDeviceHardwareIds con 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']}
  5. 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:

  1. Cierra el arnés de prueba de GRL si está abierto.
  2. Modifica /tools/harness-thci/OpenThread.py segú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:

    1. Cambia el nombre del archivo OpenThread.py por nRF52840.py.
    2. Cambia las tres primeras ocurrencias de "OpenThread" por "nRF52840":

      >> Device : nRF52840 THCI
      >> Class : nRF52840
      
      class nRF52840(IThci):
      
    3. 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()
    4. 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)
  3. Copia el archivo nRF52840.py modificado en C:\GRL\Thread1.1\Thread_Harness\THCI.

  4. Agrega la información de la nueva plataforma al arnés de prueba:

    1. 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.
    2. Actualiza C:\GRL\Thread1.1\Web\data\deviceInputFields.xml con una nueva sección DEVICE, en la que el parámetro thumbnail es 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>
      
  5. Conecta el dispositivo a la máquina con Windows.

  6. Busca el identificador de hardware del puerto serie del dispositivo con el módulo pySerial de Python:

    1. Instala pySerial en la máquina con Windows.
    2. 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 -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. 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']
  7. Actualiza la lista de dispositivos dorados:

    1. Abre C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Agrega un nuevo grupo de plataformas en el array GoldenDeviceHardwareIds con 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'}
  8. Habilita el modo DUT automático.

Habilita el modo DUT automático

Después de completar una de las dos opciones de configuración anteriores, haz lo siguiente:

  1. Abre el GRL Test Harness. El dispositivo o puerto ahora aparecerá como un nuevo dispositivo de referencia.
  2. Selecciona la casilla de verificación Enable Auto DUT Device Selection que se encuentra debajo de la lista de hardware compatible.
  3. Selecciona el botón de selección Set as DUT debajo del dispositivo o puerto de destino para establecer el dispositivo como DUT.
Certificación de OT, Auto DUT