Configurazione dell'automazione delle certificazioni

Per automatizzare i test di certificazione, è necessaria una configurazione aggiuntiva.

Tutti i passaggi di installazione e configurazione riportati di seguito vengono eseguiti sul computer Windows su cui è in esecuzione il software GRL Test Harness. Scarica e installa l'ultima versione di GRL Thread Test Harness prima di continuare.

Una volta installato, esistono due metodi di automazione per il dispositivo in fase di test (DUT):

  1. Strumento di automazione dell'imbracatura OpenThread
  2. Modalità automatica DUT di Test Harness

Strumento di automazione dell'imbracatura OpenThread

Installa

  1. Installa il seguente software:
    • Python 2.7
    • Git per Windows (il supporto di Bash è vivamente consigliato)
  2. Clona il repository OpenThread per ottenere gli script di automazione:
    git clone https://github.com/openthread/openthread
    
  3. Installa i requisiti di Python:
    cd tools/harness-automation
    pip install -r requirements.txt
    
  4. Installa sia Google Chrome sia ChromeDriver.

Configura

  1. Crea un file di configurazione per lo strumento di automazione:
    cp autothreadharness/settings_sample.py autothreadharness/settings.py
    
  2. Aggiorna il nuovo file di configurazione seguendo le istruzioni riportate nel file.
  3. Aggiungi il seguente parametro al file di configurazione di Test Harness, disponibile all'indirizzo C:\GRL\Thread1.1\Config\Configuration.ini:
    BrowserAutoNavigate = False

Supporto per testbed misti

Lo strumento di automazione dell'imbracatura supporta anche i testbed misti, in cui i dispositivi di riferimento utilizzati in ogni scenario di test sono un insieme misto di dispositivi anziché tutti lo stesso dispositivo. Ad esempio, anziché utilizzare 32 schede TI CC2538 che eseguono OpenThread per tutti gli scenari di test, puoi combinare e abbinare tutti e quattro i dispositivi di riferimento Thread per ogni scenario di test come preferisci.

Per utilizzare testbed misti, è necessaria una configurazione aggiuntiva:

  1. Aggiungi il seguente parametro aggiuntivo al file di configurazione di Test Harness, che si trova in C:\GRL\Thread1.1\Config\Configuration.ini:
    EnableDeviceSelection = True
  2. Scarica il file di configurazione della topologia dal gruppo di thread. Aggiungi questo file come TopologyConfig.txt a C:\GRL\Thread1.1\Thread_Harness\TestScripts. Questo file specifica quale dispositivo di riferimento utilizzare per ogni ruolo in ogni scenario di test.

Il file di configurazione della topologia fornito da Thread Group può essere modificato per altre configurazioni di letti misti, ma per la certificazione ufficiale deve essere utilizzata la configurazione originale.

I valori validi da utilizzare per i dispositivi di riferimento nel file di configurazione della topologia sono:

Valore nel file di configurazione della topologia Dispositivo di riferimento per il test harness
ARM ARM: NXP FRDM-K64F con Firefly 6LoWPAN Shield
NXP NXP(Freescale): USB-KW24D512 Dongles
OpenThread OpenThread: TI CC2538DK
SiLabs Silabs: EM358x USB Stick

Ogni voce dello scenario di test nel file di configurazione della topologia deve trovarsi su una riga separata e formattata in coppie role:device nel seguente modo:

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

Modalità Test Harness Auto DUT

Il software GRL Test Harness fornisce una funzionalità di rilevamento automatico avanzata (Auto DUT) che accelera la procedura di convalida per i fornitori di stack di riferimento Thread.

OpenThread fornisce un esempio di interfaccia di controllo host Thread (THCI) che consente a Test Harness di controllare il componente o il prodotto come se fosse una delle piattaforme di riferimento. In base alle caratteristiche della porta seriale della tua piattaforma specifica, il DUT potrebbe:

Funge da piattaforma di riferimento OpenThread esistente

Se la porta seriale del DUT funziona con le impostazioni 115200 8-N-1 e il dispositivo risponde correttamente dopo ogni ripristino fisico (ad esempio, per confermare la connessione valida del dispositivo alla macchina Windows), la piattaforma può utilizzare lo strumento THCI OpenThread. Questo strumento consente al dispositivo di fungere da piattaforma di riferimento OpenThread durante i test.

  1. Chiudi GRL Test Harness, se è aperto.
  2. Collega il dispositivo al computer Windows.
  3. Trova l'identificatore hardware della porta seriale del dispositivo utilizzando il modulo Python pySerial:
    1. Installa pySerial sulla macchina Windows.
    2. Utilizza Python nella riga di comando di Windows per enumerare tutti gli identificatori hardware (VID e PID) per i dispositivi connessi al computer. In questo output, un dispositivo è connesso con un identificatore 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 conosci già la porta COM, puoi utilizzare un comando diverso. Ad esempio, se la porta COM è 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. Aggiorna l'elenco dei dispositivi di riferimento:
    1. Apri C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Aggiorna il gruppo OpenThread nell'array GoldenDeviceHardwareIds con il VID e il PID del dispositivo o dei dispositivi:
      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. Attiva la modalità DUT automatica.

Fungendo da nuova piattaforma di riferimento

Se la porta seriale del DUT non funziona con le impostazioni corrette della porta seriale o se il dispositivo non risponde correttamente dopo un ripristino fisico del dispositivo (output di codice illeggibile entro 3-6 secondi dal ripristino), è possibile personalizzare THCI OpenThread per trattare il dispositivo come una nuova piattaforma nel Test Harness.

Ad esempio, per personalizzare THCI utilizzando la piattaforma Nordic Semiconductor nRF52840:

  1. Chiudi GRL Test Harness, se è aperto.
  2. Modifica /tools/harness-thci/OpenThread.py in base alle caratteristiche UART del dispositivo di destinazione. Le modifiche possono variare a seconda dei dispositivi di destinazione. Nel caso della piattaforma Nordic nRF52840:

    1. Rinomina il file OpenThread.py in nRF52840.py.
    2. Modifica le prime tre occorrenze di "OpenThread" in "nRF52840":

      >> Device : nRF52840 THCI
      >> Class : nRF52840
      
      class nRF52840(IThci):
      
    3. Modifica i parametri della porta seriale:

      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. Modifica il tempo di sospensione per eliminare l'impatto dell'output del codice illeggibile dopo il ripristino del 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 il file nRF52840.py modificato in C:\GRL\Thread1.1\Thread_Harness\THCI

  4. Aggiungi le nuove informazioni sulla piattaforma a Test Harness:

    1. Crea un'icona (in formato PNG o JPG) per distinguere più facilmente la tua piattaforma e copiala in C:\GRL\Thread1.1\Web\images.
    2. Aggiorna C:\GRL\Thread1.1\Web\data\deviceInputFields.xml con una nuova sezione DEVICE, in cui il parametro thumbnail è il file dell'icona:

      <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. Collega il dispositivo al computer Windows.

  6. Trova l'identificatore hardware della porta seriale del dispositivo utilizzando il modulo Python pySerial:

    1. Installa pySerial sulla macchina Windows.
    2. Utilizza Python nella riga di comando di Windows per enumerare tutti gli identificatori hardware (VID e PID) per i dispositivi connessi al computer. In questo output, un dispositivo è connesso con un identificatore 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 conosci già la porta COM, puoi utilizzare un comando diverso. Ad esempio, se la porta COM è 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. Aggiorna l'elenco dei dispositivi di riferimento:

    1. Apri C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Aggiungi un nuovo gruppo di piattaforme nell'array GoldenDeviceHardwareIds con il VID e il 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. Attiva la modalità DUT automatica.

Attiva la modalità DUT automatica

Dopo aver completato una delle due opzioni di configurazione riportate sopra:

  1. Apri GRL Test Harness. Il dispositivo/la porta viene ora visualizzato come nuovo dispositivo di riferimento.
  2. Seleziona la casella di controllo Abilita selezione automatica dispositivo DUT sotto l'elenco dell'hardware supportato.
  3. Seleziona il pulsante di opzione Imposta come DUT sotto il dispositivo/la porta di destinazione per impostare il dispositivo come DUT.
OT Certification Auto DUT