Configuração da automação das certificações

Para automatizar os testes de certificação, é necessário fazer uma configuração adicional.

Todas as etapas de instalação e configuração abaixo ocorrem na máquina Windows que executa o software GRL Test Harness. Faça o download e instale a GRL Thread Test Harness mais recente antes de continuar.

Depois de instalado, há dois métodos de automação para o dispositivo em teste (DUT):

  1. Ferramenta de automação de plataforma OpenThread
  2. Modo Auto DUT do Test Harness

Ferramenta de automação de plataforma OpenThread

Instalar

  1. Instale os seguintes softwares:
    • Python 2.7
    • Git para Windows (é altamente recomendável ter suporte para Bash)
  2. Clone o repositório OpenThread para receber os scripts de automação:
    git clone https://github.com/openthread/openthread
    
  3. Instale os requisitos do Python:
    cd tools/harness-automation
    pip install -r requirements.txt
    
  4. Instale o Google Chrome e o ChromeDriver.

Configurar

  1. Crie um arquivo de configuração para a ferramenta de automação:
    cp autothreadharness/settings_sample.py autothreadharness/settings.py
    
  2. Atualize o novo arquivo de configuração de acordo com as instruções nele.
  3. Adicione o seguinte parâmetro ao arquivo de configuração do Test Harness, encontrado em C:\GRL\Thread1.1\Config\Configuration.ini:
    BrowserAutoNavigate = False

Suporte a testbeds mistos

A ferramenta de automação de plataforma também oferece suporte a plataformas de teste mistas, em que os dispositivos de referência usados em cada caso de teste são um conjunto misto de dispositivos, em vez de todos serem iguais. Por exemplo, em vez de usar 32 placas TI CC2538 executando OpenThread para todos os casos de teste, você pode misturar e combinar entre todos os quatro dispositivos de referência Thread para cada caso de teste conforme desejado.

Para usar testbeds mistos, é necessário fazer uma configuração extra:

  1. Adicione o seguinte parâmetro ao arquivo de configuração do Test Harness, encontrado em C:\GRL\Thread1.1\Config\Configuration.ini:
    EnableDeviceSelection = True
  2. Faça o download do arquivo de configuração de topologia do Thread Group. Adicione este arquivo como TopologyConfig.txt a C:\GRL\Thread1.1\Thread_Harness\TestScripts. Esse arquivo detalha qual dispositivo de referência usar para cada função em cada caso de teste.

O arquivo de configuração de topologia fornecido pelo grupo Thread pode ser modificado para outras configurações de leito misto, mas para certificação oficial, a configuração original precisa ser usada.

Os valores válidos para usar em dispositivos de referência no arquivo de configuração de topologia são:

Valor no arquivo de configuração de topologia Dispositivo de referência do arcabouço de testes
ARM ARM: NXP FRDM-K64F com Firefly 6LoWPAN Shield
NXP NXP(Freescale): dongles USB-KW24D512
OpenThread OpenThread: TI CC2538DK
SiLabs Silabs: EM358x USB Stick

Cada entrada de caso de teste no arquivo de configuração de topologia precisa estar em uma linha separada e formatada em pares role:device da seguinte maneira:

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

Modo DUT automático do arcabouço de testes

O software GRL Test Harness oferece um recurso avançado de descoberta automática (Auto DUT) que acelera o processo de validação para fornecedores de pilha de referência do Thread.

O OpenThread oferece um exemplo de interface do controlador de host do Thread (THCI) que permite que o Test Harness controle seu componente ou produto como se fosse uma das plataformas de referência. De acordo com as características da porta serial da sua plataforma específica, o DUT pode:

Atuando como a plataforma de referência OpenThread atual

Se a porta serial do DUT funcionar com configurações de 115200 8-N-1 e o dispositivo responder corretamente após cada redefinição física (por exemplo, para confirmar a conexão válida do dispositivo com a máquina Windows), a plataforma poderá usar a ferramenta THCI do OpenThread. Essa ferramenta permite que o dispositivo funcione como a plataforma de referência do OpenThread durante os testes.

  1. Feche o GRL Test Harness, se ele estiver aberto.
  2. Conecte o dispositivo à máquina Windows.
  3. Encontre o identificador de hardware da porta serial do dispositivo usando o módulo pySerial do Python:
    1. Instale o pySerial na máquina Windows.
    2. Use o Python na linha de comando do Windows para enumerar todos os identificadores de hardware (VID e PID) dos dispositivos conectados à máquina. Nesta saída, um dispositivo está conectado com um identificador de VID=1366 e PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Se você já conhece a porta COM, use outro comando. Por exemplo, se a porta COM for 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. Atualize a lista de dispositivos principais:
    1. Abra C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Atualize o grupo OpenThread na matriz GoldenDeviceHardwareIds com o VID e o PID dos 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. Ative o modo DUT automático.

Atuando como uma nova plataforma de referência

Se a porta serial do DUT não funcionar com as configurações corretas ou se o dispositivo não responder corretamente após uma redefinição física (saídas de código ilegível em 3 a 6 segundos após a redefinição), o THCI do OpenThread poderá ser personalizado para tratar o dispositivo como uma nova plataforma no Test Harness.

Por exemplo, para personalizar o THCI usando a plataforma Nordic Semiconductor nRF52840:

  1. Feche o GRL Test Harness, se ele estiver aberto.
  2. Modifique /tools/harness-thci/OpenThread.py com base nas características da UART do dispositivo de destino. As modificações podem variar entre os dispositivos de destino. No caso da plataforma Nordic nRF52840:

    1. Renomeie o arquivo OpenThread.py como nRF52840.py.
    2. Mude as três primeiras ocorrências de "OpenThread" para "nRF52840":

      >> Device : nRF52840 THCI
      >> Class : nRF52840
      
      class nRF52840(IThci):
      
    3. Mude os parâmetros da porta serial:

      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. Mude o tempo de inatividade para eliminar o impacto da saída de código ilegível após a redefinição do 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. Copie o arquivo nRF52840.py modificado para C:\GRL\Thread1.1\Thread_Harness\THCI.

  4. Adicione as novas informações da plataforma ao Test Harness:

    1. Crie um ícone (em formato png ou jpg) para facilitar a diferenciação da sua plataforma e copie para C:\GRL\Thread1.1\Web\images.
    2. Atualize C:\GRL\Thread1.1\Web\data\deviceInputFields.xml com uma nova seção DEVICE, em que o parâmetro thumbnail é o arquivo de ícone:

      <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. Conecte o dispositivo à máquina Windows.

  6. Encontre o identificador de hardware da porta serial do dispositivo usando o módulo pySerial do Python:

    1. Instale o pySerial na máquina Windows.
    2. Use o Python na linha de comando do Windows para enumerar todos os identificadores de hardware (VID e PID) dos dispositivos conectados à máquina. Nesta saída, um dispositivo está conectado com um identificador de VID=1366 e PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Se você já conhece a porta COM, use outro comando. Por exemplo, se a porta COM for 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. Atualize a lista de dispositivos principais:

    1. Abra C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Adicione um novo grupo de plataformas na matriz GoldenDeviceHardwareIds com o VID e o PID do 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. Ative o modo DUT automático.

Ativar o modo DUT automático

Depois de concluir uma das duas opções de configuração acima:

  1. Abra o GRL Test Harness. O dispositivo/porta vai aparecer como um novo dispositivo de referência.
  2. Marque a caixa de seleção Ativar seleção automática de dispositivo DUT abaixo da lista de hardware compatível.
  3. Selecione o botão de opção Definir como DUT no dispositivo/porta de destino para definir o dispositivo como o DUT.
OT Certification Auto DUT