Einrichtung der Zertifizierungsautomatisierung

Zur Automatisierung von Zertifizierungstests ist eine zusätzliche Einrichtung erforderlich.

Alle folgenden Installations- und Konfigurationsschritte finden auf dem Windows-Computer statt, auf dem die GRL-Testgurtsoftware ausgeführt wird. Laden Sie den aktuellen GRL-Thread-Test-Geschirr herunter und installieren Sie ihn, bevor Sie fortfahren.

Nach der Installation gibt es zwei Automatisierungsmethoden für das zu testende Gerät:

  1. OpenThread-Geschirr-Automatisierungstool
  2. Auto-DUT-Modus für Kabelbaum testen

OpenThread-Geschirr-Automatisierungstool

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 abzurufen:
    git clone https://github.com/openthread/openthread
    
  3. Installieren Sie Python-Anforderungen:
    cd tools/harness-automation
    pip install -r requirements.txt
    
  4. Installieren Sie Google Chrome und ChromeDriver.

Konfigurieren

  1. Erstellen Sie eine Konfigurationsdatei für das Automatisierungstool:
    cp autothreadharness/settings_sample.py autothreadharness/settings.py
    
  2. Aktualisieren Sie die neue Konfigurationsdatei gemäß der Anleitung in der Datei.
  3. Füge der folgenden Konfigurationsdatei den folgenden Parameter hinzu: C:\GRL\Thread1.1\Config\Configuration.ini.
    BrowserAutoNavigate = False

Gemischte Unterstützung für Testbetten

Das Tool „Geschirrautomatisierung“ unterstützt auch gemischte Testbetten. Dabei sind die in den einzelnen Testfällen verwendeten Referenzgeräte gemischt und nicht alle dasselbe Gerät. Statt 32 TI CC2538-Boards zu verwenden, die OpenThread für alle Testläufe ausführen, können Sie die gewünschten vier Thread-Referenzgeräte für jeden Testfall beliebig kombinieren.

Für die Verwendung von gemischten Testbetten ist zusätzliche Konfiguration erforderlich:

  1. Füge der Datei C:\GRL\Thread1.1\Config\Configuration.ini den folgenden zusätzlichen Parameter hinzu, der sich unter der Test Trapezkonfiguration befindet:
    EnableDeviceSelection = True
  2. Laden Sie die Topologie-Konfigurationsdatei aus der Thread-Gruppe herunter. Füge diese Datei als TopologyConfig.txt zu C:\GRL\Thread1.1\Thread_Harness\TestScripts hinzu. Diese Datei gibt an, welches Referenzgerät für jede Rolle in jedem Testfall verwendet werden soll.

Die von der Thread-Gruppe 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 Topologie-Konfigurationsdatei sind:

Wert in der Topologie-Konfigurationsdatei Referenzgerät für Testgurt
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 Testfalleintrag in der Topologie-Konfigurationsdatei muss in einer separaten Zeile stehen und in role:device-Paaren formatiert sein:

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

Automatischen DUT-Modus testen

Die GRL-Test-Bereitstellungsprotokoll bietet ein erweitertes Auto Discovery-Feature (Auto DUT), das den Validierungsprozess für Thread-Referenz-Stack-Anbieter beschleunigt.

OpenThread bietet ein Beispiel für eine Thread-Host-Schnittstelle (THCI), mit der der Test-Turpe Ihre Komponente oder Ihr Produkt so steuern kann, als wäre sie eine der Referenzplattformen. Je nach den Eigenschaften des seriellen Ports kann Ihr DUT entweder:

Sie dienen als vorhandene OpenThread-Referenzplattform

Wenn der serielle Port des DUT-Geräts unter den Einstellungen 115200 8-N-1 funktioniert und das Gerät nach jedem Zurücksetzen des physischen Geräts richtig reagiert (z. B. um die gültige Verbindung des Geräts zum Windows-Computer zu bestätigen), kann die Plattform das OpenThread-THCI-Tool verwenden. Mit diesem Tool kann das Gerät beim Testen als OpenThread-Referenzplattform genutzt werden.

  1. Schließen Sie den GRL-Test, falls dieser geöffnet ist.
  2. Verbinden Sie das Gerät mit dem Windows-Computer.
  3. Suchen Sie mithilfe des pySerial-Moduls von Python nach der Hardware-ID des seriellen Ports:
    1. Installieren Sie pySerial auf dem Windows-Computer.
    2. Verwenden Sie Python in der Windows-Befehlszeile, um alle Hardwarekennungen (VID und PID) für Geräte aufzulisten, die mit der Maschine verbunden sind. In dieser Ausgabe ist ein Gerät mit der Kennung VID = 1366 und PID = 1.015 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 lautet:
      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-Geräte:
    1. Öffnen Sie C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Aktualisiere die OpenThread-Gruppe im GoldenDeviceHardwareIds-Array mit der VID und PID 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. Aktivieren Sie den automatischen DUT-Modus.

Die Plattform als Referenzplattform

Sollte der serielle Port des DUT-Geräts nicht unter den richtigen Einstellungen für den seriellen Port funktionieren oder das Gerät nach dem Zurücksetzen eines physischen Geräts nicht reagieren (Ausgabe von 3–6 Sekunden nach dem Zurücksetzen), dann wird OpenThread THCI so angepasst, dass das Gerät als neue Plattform in der Testumgebung behandelt wird.

So passt du beispielsweise THCI mit der Plattform Nordic Semiconductor nRF52840 an:

  1. Schließen Sie den GRL-Test, falls dieser geöffnet ist.
  2. Passen Sie /tools/harness-thci/OpenThread.py auf Grundlage der UART-Eigenschaften des Zielgeräts an. Änderungen können sich je nach Zielgerät unterscheiden. Für die Nordic nRF52840 Plattform:

    1. Benenne die Datei OpenThread.py in nRF52840.py um.
    2. Ändern Sie 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. Ändern Sie die Ruhezeit, um die Auswirkungen nicht lesbarer Codeausgaben 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. Geänderte nRF52840.py-Datei in C:\GRL\Thread1.1\Thread_Harness\THCI kopieren

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

    1. Erstellen Sie ein Symbol (im PNG- oder JPG-Format), um Ihre Plattform einfacher zu unterscheiden und in C:\GRL\Thread1.1\Web\images zu kopieren.
    2. Aktualisiere 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. Verbinden Sie das Gerät mit dem Windows-Computer.

  6. Suchen Sie mithilfe des pySerial-Moduls von Python nach der Hardware-ID des seriellen Ports:

    1. Installieren Sie pySerial auf dem Windows-Computer.
    2. Verwenden Sie Python in der Windows-Befehlszeile, um alle Hardwarekennungen (VID und PID) für Geräte aufzulisten, die mit der Maschine verbunden sind. In dieser Ausgabe ist ein Gerät mit der Kennung VID = 1366 und PID = 1.015 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 lautet:
      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 Chrome-Geräte:

    1. Öffnen Sie C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Füge im 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. Aktivieren Sie den automatischen DUT-Modus.

Auto-DUT-Modus aktivieren

Nachdem Sie eine der beiden oben genannten Konfigurationsoptionen abgeschlossen haben:

  1. Öffnen Sie den GRL-Test-Track. Das Gerät oder der Port wird jetzt als neues Referenzgerät angezeigt.
  2. Klicke unter der Liste Unterstützte Hardware auf das Kästchen Automatische DUT-Geräteauswahl aktivieren.
  3. Wählen Sie das Optionsfeld Als DUT festlegen unter dem Zielgerät oder -port aus, um das Gerät als DUT festzulegen.
OT-Zertifizierung – automatische Variante