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 Windows. ejecutando el software de GRL Test Harness. Descarga e instala la versión más reciente Arnés de prueba del subproceso GRL antes y continúa.

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

  1. Herramienta de automatización de OpenThread
  2. Prueba el modo DUT automático

Herramienta de automatización de OpenThread

Instalar

  1. Instala el siguiente software:
    • Python 2.7
    • Git para Windows (se recomienda la 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 el archivo de configuración nuevo según las instrucciones .
  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 mixta de Testbed

La herramienta de automatización de aprovechamiento también admite conjuntos de pruebas mixtos, en los que la referencia En cada caso de prueba, los dispositivos son un conjunto mixto de dispositivos, no todos los mismo dispositivo. Por ejemplo, en lugar de usar 32 placas TI CC2538 en OpenThread para todos los casos de prueba, puedes combinar los cuatro Thread dispositivos de referencia para cada caso de prueba según lo desees.

Para usar testbeds mixtos, se necesita una configuración adicional:

  1. Agrega el siguiente parámetro adicional a la configuración del agente de prueba en C:\GRL\Thread1.1\Config\Configuration.ini:
    EnableDeviceSelection = True
  2. Descarga el archivo de configuración de topología desde Thread Grupo Agrega este archivo como TopologyConfig.txt a C:\GRL\Thread1.1\Thread_Harness\TestScripts Este archivo detalla cuáles dispositivo de referencia para cada rol en cada caso de prueba.

El archivo de configuración de topología proporcionado por Thread Group se puede modificar para otras configuraciones de cama mixta, pero para la certificación oficial se usa configuración de seguridad.

Valores válidos para usar en dispositivos de referencia en el archivo de configuración de topología son:

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

Cada entrada de caso de prueba en el archivo de configuración de topología debe estar en un y con el formato de pares role:device de la siguiente manera:

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

Cómo probar el modo de DUT automático del arnés

El software del arnés de prueba de GRL proporciona una función avanzada de detección automática (Auto DUT), que acelera el proceso de validación de la pila de referencia de subprocesos proveedores.

OpenThread proporciona un ejemplo Interfaz del controlador de host de Thread (THCI) que permite que el arnés de prueba controle tu componente o producto como si una de las plataformas de referencia. Según las características del puerto en serie de en tu plataforma específica, el DUT podría hacer lo siguiente:

Actuar como la plataforma de referencia de OpenThread existente

Si el puerto en serie del DUT funciona en la configuración de 115200 8-N-1 y el que el dispositivo responda correctamente luego de cada restablecimiento físico (por ejemplo, a confirmar la conexión válida del dispositivo a la máquina Windows) y, a continuación, la plataforma puedes usar la herramienta OpenThread THCI. Esta herramienta permite que el dispositivo 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 de Windows.
  3. Encuentra el identificador de hardware del puerto en serie del dispositivo con el archivo pySerial de Python. módulo:
    1. Instala pySerial en la máquina de Windows.
    2. Usa Python en la línea de comandos de Windows para enumerar todo el hardware identificadores (VID y PID) de los dispositivos conectados a la máquina. En este de salida, un dispositivo está conectado con un identificador de VID=1366 y PID=1,015:
      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. Para 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 dorados:
    1. Abre C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Actualiza el grupo OpenThread en el array GoldenDeviceHardwareIds. por 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.

Actuar como una nueva plataforma de referencia

Si el puerto en serie del DUT no funciona con el puerto en serie adecuado del dispositivo o el dispositivo no responde correctamente luego de restablecer (genera un código ilegible dentro de los 3-6 segundos posteriores al restablecimiento) y, luego, OpenThread THCI se puede personalizar para tratar el dispositivo como una nueva plataforma en la prueba. Arnés.

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

  1. Cierra el arnés de prueba de GRL si está abierto.
  2. Modificar /tools/harness-thci/OpenThread.py según las características de UART del dispositivo de destino. Las modificaciones pueden difieren entre los dispositivos de destino. En el caso de la plataforma Nordic nRF52840:

    1. Cambia el nombre del archivo OpenThread.py a nRF52840.py.
    2. Cambiar las tres primeras instancias 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 sueño para eliminar el impacto de resultados de código ilegibles 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 plataforma nueva al agente de prueba:

    1. Crea un ícono (en formato png o jpg) para facilitar la diferenciación tu plataforma y cópiala en C:\GRL\Thread1.1\Web\images.
    2. Actualiza C:\GRL\Thread1.1\Web\data\deviceInputFields.xml con un nuevo elemento Sección DEVICE, en la que el parámetro thumbnail es el archivo del í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 de Windows.

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

    1. Instala pySerial en la máquina de Windows.
    2. Usa Python en la línea de comandos de Windows para enumerar todo el hardware identificadores (VID y PID) de los dispositivos conectados a la máquina. En este de salida, un dispositivo está conectado con un identificador de VID=1366 y PID=1,015:
      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. Para 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. por 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:

  1. Abre el arnés de prueba de GRL. El dispositivo o puerto ahora aparece como una referencia nueva. dispositivo.
  2. Selecciona la casilla de verificación Enable Auto DUT Device Selection (Habilitar la selección de dispositivos de Auto DUT) debajo de la casilla de verificación Compatible Lista de hardware.
  3. Elige el botón de selección Set as DUT debajo del dispositivo o puerto de destino para establecer el dispositivo como el DUT.
Certificación OT Auto DUT