Para automatizar os testes de certificação, é necessária 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 versão mais recente do GRL Thread Test Harness antes de continuar.
Após a instalação, há dois métodos de automação para o dispositivo em teste (DUT, na sigla em inglês):
Ferramenta de automação de arremesso de OpenThread
Instalar
- Instale o seguinte software:
- Python 2.7
- Git para Windows (o suporte ao Bash é altamente recomendado)
- Clone o repositório do OpenThread para receber os scripts de automação:
git clone https://github.com/openthread/openthread
- Instale os requisitos do Python:
cd tools/harness-automation
pip install -r requirements.txt
- Instale o Google Chrome e o ChromeDriver.
Configurar
- Crie um arquivo de configuração para a ferramenta de automação:
cp autothreadharness/settings_sample.py autothreadharness/settings.py
- Atualize esse novo arquivo de configuração de acordo com as instruções contidas nele.
- Adicione o seguinte parâmetro ao arquivo de configuração do arcabouço de testes, encontrado em
C:\GRL\Thread1.1\Config\Configuration.ini
:BrowserAutoNavigate = False
Suporte misto com testbed
A ferramenta de automação Harness também é compatível com canteiros de teste mistos, em que os dispositivos de referência usados em cada caso de teste são um conjunto misto de dispositivos, e não todos o mesmo dispositivo. Por exemplo, em vez de usar 32 placas TI CC2538 executando o OpenThread para todos os casos de teste, você pode combinar todos os quatro dispositivos de referência Thread para cada caso de teste.
Para usar camas de teste mistas, é necessária uma configuração adicional:
- Adicione o seguinte parâmetro ao arquivo de configuração de arcabouço de testes, encontrado em
C:\GRL\Thread1.1\Config\Configuration.ini
:EnableDeviceSelection = True
- Faça o download do arquivo de configuração de topologia do grupo
Thread.
Adicione esse arquivo como
TopologyConfig.txt
aC:\GRL\Thread1.1\Thread_Harness\TestScripts
. Esse arquivo detalha qual dispositivo de referência usar para cada papel em cada caso de teste.
O arquivo de configuração de topologia fornecido pelo grupo de linhas de execução pode ser modificado para outras configurações de mix misto, mas para certificação oficial, a configuração original precisa ser usada.
Os valores válidos a serem usados para 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(Escala livre): Dongles USB-KW24D512 |
OpenThread |
OpenThread: TI CC2538DK |
SiLabs |
Silabs: dispositivo USB EM358x |
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
Testar o modo DUT do Harness Auto
O software GRL Test Harness fornece um recurso de descoberta automática (Auto DUT) que acelera o processo de validação para fornecedores de pilha de referência de linhas de execução.
O OpenThread fornece um exemplo de interface de controlador de host de linha de execução (THCI, na sigla em inglês) que permite que o arcabouço de testes controle seu componente ou produto como se ele fosse uma das plataformas de referência. De acordo com as características da porta serial da sua plataforma específica, o DUT pode:
funcionar como a plataforma de referência existente do OpenThread.
Se a porta serial do DUT funcionar nas 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 OpenThread THCI. Essa ferramenta permite que o dispositivo atue como a plataforma de referência do OpenThread durante os testes.
- Feche o arcabouço de testes GRL, se ele estiver aberto.
- Conecte o dispositivo à máquina Windows.
- Localize o identificador de hardware da porta serial do dispositivo usando o módulo pySerial do Python:
- Instale o pySerial na máquina Windows.
- Use o Python na linha de comando do Windows para enumerar todos os identificadores de hardware (VID e PID) para 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
COM10desc: USB Serial Port (COM10)
hwid: USB\VID_1366+PID_1015+MI_00
- Se você já conhece a porta COM, pode usar um comando diferente. 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']
- Atualize a lista de dispositivos Golden:
- Abra o
C:\GRL\Thread1.1\Config\Configuration.ini
- 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']}
- Abra o
- Ativar o modo DUT automático.
Uma nova plataforma de referência
Se a porta serial da DUT não funcionar nas configurações de porta serial adequadas ou se o dispositivo não responder corretamente após uma redefinição de dispositivo físico (saída de código ilegível dentro de três a seis segundos após a redefinição), a OpenThread THCI poderá ser personalizada para tratar o dispositivo como uma nova plataforma no Harness Test.
Por exemplo, para personalizar o THCI usando a plataforma Nordic Semiconductor nRF52840:
- Feche o arcabouço de testes GRL, se ele estiver aberto.
Modifique
/tools/harness-thci/OpenThread.py
com base nas características da UART do dispositivo de destino. As modificações podem ser diferentes entre os dispositivos de destino. No caso da plataforma Nórdica nRF52840:- Renomeie o arquivo
OpenThread.py
comonRF52840.py
. Altere as três primeiras ocorrências de "OpenThread" para "nRF52840":
>> Device : nRF52840 THCI >> Class : nRF52840 class nRF52840(IThci):
Altere 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()
Mude o tempo de suspensão 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)
- Renomeie o arquivo
Copie o arquivo
nRF52840.py
modificado paraC:\GRL\Thread1.1\Thread_Harness\THCI
Adicione as novas informações da plataforma ao arcabouço de testes:
- Crie um ícone (no formato png ou jpg) para facilitar a diferenciação
da plataforma e copiá-lo para
C:\GRL\Thread1.1\Web\images
. Atualize
C:\GRL\Thread1.1\Web\data\deviceInputFields.xml
com uma nova seçãoDEVICE
, em que o parâmetrothumbnail
é o arquivo do í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>
- Crie um ícone (no formato png ou jpg) para facilitar a diferenciação
da plataforma e copiá-lo para
Conecte o dispositivo à máquina Windows.
Encontre o identificador de hardware da porta serial do dispositivo usando o módulo pySerial do Python:
- Instale o pySerial na máquina Windows.
- Use o Python na linha de comando do Windows para enumerar todos os identificadores de hardware (VID e PID) para 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
COM10desc: USB Serial Port (COM10)
hwid: USB\VID_1366+PID_1015+MI_00
- Se você já conhece a porta COM, pode usar um comando diferente. 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']
Atualize a lista de dispositivos Golden:
- Abra o
C:\GRL\Thread1.1\Config\Configuration.ini
- 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'}
- Abra o
Ativar o modo DUT automático
Depois que uma das duas opções de configuração acima for concluída:
- Abra o arcabouço de testes do GRL. Agora, o dispositivo/porta aparece como um novo dispositivo de referência.
- Marque a caixa de seleção Enable Auto DUT Device Selection abaixo da lista "Hardware compatível".
- Selecione o botão de opção Definir como DUT no dispositivo/porta de destino para definir o dispositivo como DUT.
