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 muestran a continuación ocurren en la máquina de Windows que ejecuta el software de agente de prueba de GRL. Descarga e instala el arnés de prueba de subprocesos GRL más reciente antes de continuar.

Una vez instalados, hay dos métodos de automatización para el dispositivo que se está probando (DUT):

  1. Herramienta de automatización de OpenThread, dispositivos
  2. Modo de prueba de DUT automático de los arneses de prueba

Herramienta de automatización de OpenThread

Instalar

  1. Instala el siguiente software:
    • Python 2.7
    • Git para Windows (se recomienda compatibilidad con 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 del archivo.
  3. Agrega el siguiente parámetro al archivo de configuración del agente de prueba, que se encuentra en C:\GRL\Thread1.1\Config\Configuration.ini:
    BrowserAutoNavigate = False

Compatibilidad mixta con testbed

La herramienta de automatización de agente también admite bases de prueba mixtas, en las que los dispositivos de referencia que se usan en cada caso de prueba son un conjunto mixto de dispositivos y no todos los mismos. Por ejemplo, en lugar de usar 32 placas TI CC2538 que ejecuten OpenThread para todos los casos de prueba, puedes mezclar los cuatro dispositivos de referencia de Thread para cada caso de prueba según lo desees.

Para usar bases de prueba mixtas, se necesita una configuración adicional:

  1. Agrega el siguiente parámetro adicional al archivo de configuración de agente de prueba, que se encuentra en C:\GRL\Thread1.1\Config\Configuration.ini:
    EnableDeviceSelection = True
  2. Descarga el archivo de configuración de topología desde el 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 usa en cada función en cada caso de prueba.

El archivo de configuración de topología que proporciona el grupo de subprocesos se puede modificar para otras configuraciones de lecho mixto, pero se debe usar la configuración original para obtener la certificación oficial.

Los valores válidos para usar en dispositivos de referencia en el archivo de configuración de topología son los siguientes:

Valor en el archivo de configuración de topología Dispositivo de referencia de prueba de agente
ARM ARM: NXP FRDM-K64F con Firefly 6LoWPAN Shield
NXP NXP(Freescale): llaves USB-KW24D512
OpenThread OpenThread: TI CC2538DK
SiLabs Silabs: Memoria USB EM358x

Cada entrada del caso de prueba en el archivo de configuración de la topología debe estar en una línea separada y tener el formato role:device en pares de la siguiente manera:

5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM

Modo DUT automático de los arneses de prueba

El software de agente de prueba de GRL proporciona una función avanzada de descubrimiento automático (Auto DUT) que acelera el proceso de validación para los proveedores de pila de referencia de Thread.

OpenThread proporciona una interfaz del controlador de host (THCI) de ejemplo que permite que el agente de prueba controle tu componente o producto como si fuera una de las plataformas de referencia. Según las características del puerto en serie de tu plataforma específica, tu DUT podría tener las siguientes características:

Como la plataforma de referencia de OpenThread existente

Si el puerto en serie de DUT funciona con la configuración 115200 8-N-1 y el dispositivo responde correctamente después de cada restablecimiento físico del dispositivo (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 agente 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 en 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, se conecta un dispositivo 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 un comando diferente. 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. Actualice la lista Golden Device:
    1. Abre C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Actualiza el grupo de 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 de DUT automático.

Funcionan como una nueva plataforma de referencia

Si el puerto en serie del DUT no funciona con la configuración correspondiente, o si el dispositivo no responde correctamente después de restablecer el dispositivo físico (genera código ilegible en un plazo de 3 a 6 segundos después del restablecimiento), se puede personalizar el subproceso de OpenThread para tratar el dispositivo como una plataforma nueva en el agente de prueba.

Por ejemplo, para personalizar THCI con la plataforma Nordic Semiconductor nRF52840:

  1. Cierra el agente 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 diferir entre los dispositivos de destino. En el caso de la plataforma nórdica nRF52840:

    1. Cambia el nombre del archivo OpenThread.py por nRF52840.py.
    2. Cambia los primeros tres casos de "OpenThread" a "nRF52840":

      >> Device : nRF52840 THCI
      >> Class : nRF52840
      
      class nRF52840(IThci):
      
    3. Cambia los parámetros del puerto en 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. Agregue la información de la plataforma nueva al agente de prueba:

    1. Crea un ícono (en formato png o jpg) para facilitar la diferenciación de tu plataforma y copiarla 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 sea 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 en 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, se conecta un dispositivo 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 un comando diferente. 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. Actualice la lista Golden Device:

    1. Abre C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Agrega un grupo de plataformas nuevo al 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 de DUT automático.

Habilita el modo de DUT automático

Después de que se complete una de las dos opciones de configuración anteriores:

  1. Abre el agente de prueba GRL; el dispositivo o puerto ahora aparece como un dispositivo de referencia nuevo.
  2. Selecciona la casilla de verificación Enable Auto DUT Device Selection 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 el DUT.
Subtitulado instantáneo de la certificación de OT