Automatisierung der Zertifizierung einrichten

Für die Automatisierung von Zertifizierungstests ist eine zusätzliche Einrichtung erforderlich.

Alle Installations- und Konfigurationsschritte unten werden auf dem Windows-Computer ausgeführt, auf dem die GRL Test Harness-Software ausgeführt wird. Laden Sie die aktuelle Version von GRL Thread Test Harness herunter und installieren Sie sie, bevor Sie fortfahren.

Nach der Installation gibt es zwei Automatisierungsmethoden für das zu testende Gerät (Device Under Test, DUT):

  1. OpenThread Harness Automation Tool
  2. Test Harness Auto DUT-Modus

OpenThread Harness Automation Tool

Installieren

  1. Installieren Sie die folgende Software:
    • Python 2.7
    • Git für Windows (Bash-Unterstützung wird dringend empfohlen)
  2. Klonen Sie das OpenThread-Repository, um die Automatisierungsskripts zu erhalten:
    git clone https://github.com/openthread/openthread
    
  3. Python-Anforderungen installieren:
    cd tools/harness-automation
    pip install -r requirements.txt
    
  4. Installieren Sie sowohl Google Chrome als auch ChromeDriver.

Konfigurieren

  1. Konfigurationsdatei für das Automatisierungstool erstellen:
    cp autothreadharness/settings_sample.py autothreadharness/settings.py
    
  2. Aktualisieren Sie die neue Konfigurationsdatei gemäß der Anleitung in der Datei.
  3. Fügen Sie der Konfigurationsdatei für Test Harness, die sich unter C:\GRL\Thread1.1\Config\Configuration.ini befindet, den folgenden Parameter hinzu:
    BrowserAutoNavigate = False

Unterstützung für gemischte Testumgebungen

Das Harness Automation Tool unterstützt auch gemischte Testumgebungen, in denen die in den einzelnen Testläufen verwendeten Referenzgeräte eine gemischte Gruppe von Geräten und nicht alle dasselbe Gerät sind. Anstatt beispielsweise 32 TI CC2538-Boards mit OpenThread für alle Testläufe zu verwenden, können Sie für jeden Testlauf die vier Thread-Referenzgeräte beliebig kombinieren.

Für die Verwendung gemischter Testumgebungen ist eine zusätzliche Konfiguration erforderlich:

  1. Fügen Sie der Konfigurationsdatei für Test Harness unter C:\GRL\Thread1.1\Config\Configuration.ini den folgenden zusätzlichen Parameter hinzu:
    EnableDeviceSelection = True
  2. Laden Sie die Topologiekonfigurationsdatei aus der Thread-Gruppe herunter. Fügen Sie diese Datei als TopologyConfig.txt zu C:\GRL\Thread1.1\Thread_Harness\TestScripts hinzu. In dieser Datei wird beschrieben, welches Referenzgerät für jede Rolle in jedem Testlauf verwendet werden soll.

Die von der Thread Group bereitgestellte Topologiekonfigurationsdatei kann für andere gemischte Bettkonfigurationen geändert werden. Für die offizielle Zertifizierung muss jedoch die ursprüngliche Konfiguration verwendet werden.

Gültige Werte für Referenzgeräte in der Topologiekonfigurationsdatei sind:

Wert in der Topologiekonfigurationsdatei Referenzgerät für Test-Harnisch
ARM ARM: NXP FRDM-K64F mit Firefly 6LoWPAN Shield
NXP NXP(Freescale): USB-KW24D512-Dongles
OpenThread OpenThread: TI CC2538DK
SiLabs Silabs: EM358x USB-Stick

Jeder Testlauf-Eintrag in der Topologiekonfigurationsdatei muss sich in einer separaten Zeile befinden und als role:device-Paare formatiert sein:

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

Automatischer DUT-Modus für Test-Harnisch

Die GRL Test Harness-Software bietet eine erweiterte automatische Erkennungsfunktion (Auto DUT), die den Validierungsprozess für Anbieter von Thread-Referenzstacks beschleunigt.

OpenThread bietet ein Beispiel für das Thread Host Controller Interface (THCI), mit dem das Test-Harness Ihre Komponente oder Ihr Produkt so steuern kann, als wäre es eine der Referenzplattformen. Je nach den Merkmalen des seriellen Ports Ihrer spezifischen Plattform kann Ihr Prüfling entweder:

Als vorhandene OpenThread-Referenzplattform fungieren

Wenn der serielle Anschluss des Prüflings unter den Einstellungen 115200 8-N-1 funktioniert und das Gerät nach jedem Zurücksetzen des physischen Geräts korrekt reagiert (z. B. um die gültige Verbindung des Geräts mit dem Windows-Computer zu bestätigen), kann die Plattform das OpenThread THCI-Tool verwenden. Mit diesem Tool kann das Gerät während des Tests als OpenThread-Referenzplattform fungieren.

  1. Schließen Sie das GRL Test Harness, falls es geöffnet ist.
  2. Schließen Sie das Gerät an den Windows-Computer an.
  3. Suchen Sie mit dem Python-Modul „pySerial“ nach der Hardware-ID des seriellen Geräteanschlusses:
    1. Installieren Sie pySerial auf dem Windows-Computer.
    2. Verwenden Sie Python in der Windows-Befehlszeile, um alle Hardware-IDs (VID und PID) für Geräte aufzulisten, die mit dem Computer verbunden sind. In dieser Ausgabe ist ein Gerät mit der Kennung VID=1366 und PID=1015 verbunden:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Wenn Sie den COM-Port bereits kennen, können Sie einen anderen Befehl verwenden. Wenn der COM-Port beispielsweise COM10 ist:
      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. Aktualisieren Sie die Liste der Golden Devices:
    1. Öffnen Sie C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Aktualisieren Sie die OpenThread-Gruppe im GoldenDeviceHardwareIds-Array mit der VID und PID des Geräts bzw. der Geräte:
      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. Automatischen DUT-Modus aktivieren

Als neue Referenzplattform fungieren

Wenn der serielle Port des DUT mit den richtigen Einstellungen für den seriellen Port nicht funktioniert oder das Gerät nach dem Zurücksetzen des physischen Geräts nicht richtig reagiert (innerhalb von 3 bis 6 Sekunden nach dem Zurücksetzen wird ein nicht lesbarer Code ausgegeben), kann OpenThread THCI so angepasst werden, dass das Gerät in der Testumgebung als neue Plattform behandelt wird.

So passen Sie THCI beispielsweise mit der Plattform Nordic Semiconductor nRF52840 an:

  1. Schließen Sie das GRL Test Harness, falls es geöffnet ist.
  2. Ändern Sie /tools/harness-thci/OpenThread.py entsprechend den UART-Merkmalen des Zielgeräts. Änderungen können je nach Zielgerät unterschiedlich sein. Bei der Nordic nRF52840-Plattform:

    1. Benennen Sie die Datei OpenThread.py in nRF52840.py um.
    2. Ändere die ersten drei Vorkommen von „OpenThread“ in „nRF52840“:

      >> Device : nRF52840 THCI
      >> Class : nRF52840
      
      class nRF52840(IThci):
      
    3. Ändern Sie die Parameter des seriellen Ports:

      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. So ändern Sie die Ruhezeit, um die Auswirkungen einer unleserlichen Codeausgabe nach dem Zurücksetzen des Geräts zu vermeiden:

      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. Kopieren Sie die geänderte Datei nRF52840.py nach C:\GRL\Thread1.1\Thread_Harness\THCI.

  4. Fügen Sie dem Test Harness die neuen Plattforminformationen hinzu:

    1. Erstellen Sie ein Symbol (im PNG- oder JPG-Format), um Ihre Plattform leichter von anderen zu unterscheiden, und kopieren Sie es nach C:\GRL\Thread1.1\Web\images.
    2. Aktualisieren Sie C:\GRL\Thread1.1\Web\data\deviceInputFields.xml mit einem neuen DEVICE-Abschnitt, wobei der Parameter thumbnail die Symboldatei ist:

      <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. Schließen Sie das Gerät an den Windows-Computer an.

  6. Suchen Sie mit dem Python-Modul „pySerial“ nach der Hardware-ID des seriellen Geräteanschlusses:

    1. Installieren Sie pySerial auf dem Windows-Computer.
    2. Verwenden Sie Python in der Windows-Befehlszeile, um alle Hardware-IDs (VID und PID) für Geräte aufzulisten, die mit dem Computer verbunden sind. In dieser Ausgabe ist ein Gerät mit der Kennung VID=1366 und PID=1015 verbunden:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Wenn Sie den COM-Port bereits kennen, können Sie einen anderen Befehl verwenden. Wenn der COM-Port beispielsweise COM10 ist:
      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. Aktualisieren Sie die Liste der Golden Devices:

    1. Öffnen Sie C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Fügen Sie dem GoldenDeviceHardwareIds-Array eine neue Plattformgruppe mit der VID und PID des Geräts hinzu:
      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. Automatischen DUT-Modus aktivieren

Automatischen DUT-Modus aktivieren

Nachdem eine der beiden oben genannten Konfigurationsoptionen abgeschlossen ist:

  1. Öffnen Sie das GRL Test Harness. Das Gerät/der Port wird jetzt als neues Referenzgerät angezeigt.
  2. Klicken Sie unter der Liste der unterstützten Hardware das Kästchen Enable Auto DUT Device Selection (Automatische Auswahl des DUT-Geräts aktivieren) an.
  3. Wählen Sie unter dem Zielgerät bzw. ‑anschluss das Optionsfeld Als Prüfling festlegen aus, um das Gerät als Prüfling festzulegen.
Automatische DUT-Zertifizierung für OT