Konfiguracja automatyzacji certyfikacji

Aby zautomatyzować testy certyfikacyjne, musisz wykonać dodatkową konfigurację.

Wszystkie poniższe kroki instalacji i konfiguracji są wykonywane na komputerze z systemem Windows, na którym jest zainstalowane oprogramowanie GRL Test Harness. Zanim przejdziesz dalej, pobierz i zainstaluj najnowszą wersję GRL Thread Test Harness.

Po zainstalowaniu dostępne są 2 metody automatyzacji urządzenia testowego:

  1. Narzędzie do automatyzacji OpenThread Harness
  2. Tryb automatycznego testowania urządzenia w jarzmie testowym

Narzędzie do automatyzacji OpenThread Harness

Zainstaluj

  1. Zainstaluj to oprogramowanie:
    • Python 2.7
    • Git dla systemu Windows (zdecydowanie zalecana jest obsługa powłoki Bash)
  2. Sklonuj repozytorium OpenThread, aby uzyskać skrypty automatyzacji:
    git clone https://github.com/openthread/openthread
    
  3. Zainstaluj wymagania Pythona:
    cd tools/harness-automation
    pip install -r requirements.txt
    
  4. Zainstaluj zarówno Google Chrome, jak i ChromeDriver.

Skonfiguruj

  1. Utwórz plik konfiguracji narzędzia do automatyzacji:
    cp autothreadharness/settings_sample.py autothreadharness/settings.py
    
  2. Zaktualizuj nowy plik konfiguracji zgodnie z instrukcjami w pliku.
  3. Dodaj ten parametr do pliku konfiguracji jarzma testowego, który znajdziesz w tym miejscu:C:\GRL\Thread1.1\Config\Configuration.ini
    BrowserAutoNavigate = False

Obsługa mieszanych platform testowych

Narzędzie do automatyzacji Harness obsługuje też mieszane platformy testowe, w których urządzenia referencyjne używane w każdym przypadku testowym stanowią mieszany zestaw urządzeń, a nie wszystkie są takie same. Na przykład zamiast używać 32 płytek TI CC2538 z oprogramowaniem OpenThread we wszystkich przypadkach testowych, możesz w każdym przypadku testowym dowolnie łączyć wszystkie 4 urządzenia referencyjne Thread.

Aby korzystać z mieszanych platform testowych, musisz wykonać dodatkową konfigurację:

  1. Dodaj ten parametr dodatkowy do pliku konfiguracji Test Harness, który znajdziesz w lokalizacji C:\GRL\Thread1.1\Config\Configuration.ini:
    EnableDeviceSelection = True
  2. Pobierz plik konfiguracji topologii z grupy wątków. Dodaj ten plik jako TopologyConfig.txt do C:\GRL\Thread1.1\Thread_Harness\TestScripts. Ten plik zawiera szczegółowe informacje o tym, którego urządzenia referencyjnego należy użyć w przypadku każdej roli w każdym przypadku testowym.

Plik konfiguracji topologii dostarczony przez Thread Group można modyfikować w przypadku innych konfiguracji mieszanych, ale w celu uzyskania oficjalnego certyfikatu należy użyć oryginalnej konfiguracji.

Prawidłowe wartości, które można zastosować w przypadku urządzeń referencyjnych w pliku konfiguracji topologii:

Wartość w pliku konfiguracji topologii Urządzenie referencyjne jarzma testowego
ARM ARM: NXP FRDM-K64F z Firefly 6LoWPAN Shield
NXP NXP(Freescale): USB-KW24D512 Dongles
OpenThread OpenThread: TI CC2538DK
SiLabs Silabs: EM358x USB Stick

Każdy wpis testowy w pliku konfiguracji topologii musi znajdować się w osobnym wierszu i mieć format par role:device:

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

Tryb automatycznego testowania urządzenia w jarzmie testowym

Oprogramowanie GRL Test Harness udostępnia zaawansowaną funkcję automatycznego wykrywania (Auto DUT), która przyspiesza proces weryfikacji stosu referencyjnego Thread dla dostawców.

OpenThread udostępnia przykładowy interfejs kontrolera hosta Thread (THCI), który umożliwia narzędziu Test Harness sterowanie komponentem lub produktem tak, jakby był on jedną z platform referencyjnych. Zgodnie z charakterystyką portu szeregowego na Twojej platformie urządzenie DUT może:

pełnić funkcję istniejącej platformy referencyjnej OpenThread,

Jeśli port szeregowy DUT działa w ustawieniach 115200 8-N-1, a urządzenie prawidłowo odpowiada po każdym fizycznym resecie (np. w celu potwierdzenia prawidłowego połączenia z komputerem z systemem Windows), platforma może używać narzędzia OpenThread THCI. To narzędzie umożliwia urządzeniu pełnienie funkcji platformy referencyjnej OpenThread podczas testowania.

  1. Jeśli narzędzie GRL Test Harness jest otwarte, zamknij je.
  2. Podłącz urządzenie do komputera z systemem Windows.
  3. Znajdź identyfikator sprzętowy portu szeregowego urządzenia, korzystając z modułu pySerial w języku Python:
    1. Zainstaluj pySerial na komputerze z systemem Windows.
    2. Użyj języka Python w wierszu poleceń systemu Windows, aby wyświetlić wszystkie identyfikatory sprzętu (VID i PID) urządzeń podłączonych do komputera. W tym wyniku jedno urządzenie jest połączone z identyfikatorem VID=1366 i PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Jeśli znasz już port COM, możesz użyć innego polecenia. Jeśli na przykład port COM to 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. Zaktualizuj listę urządzeń wzorcowych:
    1. Otwórz pokój C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Zaktualizuj grupę OpenThread w tablicy GoldenDeviceHardwareIds, podając identyfikatory VID i PID urządzeń:
      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. Włącz automatyczny tryb urządzenia.

pełnić rolę nowej platformy referencyjnej,

Jeśli port szeregowy DUT nie działa z prawidłowymi ustawieniami portu szeregowego lub urządzenie nie odpowiada prawidłowo po fizycznym zresetowaniu (w ciągu 3–6 sekund od zresetowania wysyła nieczytelny kod), można dostosować OpenThread THCI, aby traktować urządzenie jako nową platformę w Test Harness.

Aby na przykład dostosować THCI za pomocą platformy Nordic Semiconductor nRF52840:

  1. Jeśli narzędzie GRL Test Harness jest otwarte, zamknij je.
  2. Zmodyfikuj parametr /tools/harness-thci/OpenThread.py zgodnie z charakterystyką UART urządzenia docelowego. Modyfikacje mogą się różnić w zależności od urządzeń docelowych. W przypadku platformy Nordic nRF52840:

    1. Zmień nazwę pliku OpenThread.py na nRF52840.py.
    2. Zmień pierwsze 3 wystąpienia słowa „OpenThread” na „nRF52840”:

      >> Device : nRF52840 THCI
      >> Class : nRF52840
      
      class nRF52840(IThci):
      
    3. Zmień parametry portu szeregowego:

      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. Zmień czas uśpienia, aby wyeliminować wpływ nieczytelnego kodu wyjściowego po zresetowaniu urządzenia:

      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. Skopiuj zmodyfikowany plik nRF52840.py do C:\GRL\Thread1.1\Thread_Harness\THCI

  4. Dodaj informacje o nowej platformie do narzędzia Test Harness:

    1. Utwórz ikonę (w formacie PNG lub JPG), aby łatwiej było odróżnić Twoją platformę, i skopiuj ją do C:\GRL\Thread1.1\Web\images.
    2. Zaktualizuj C:\GRL\Thread1.1\Web\data\deviceInputFields.xml, dodając nową sekcję DEVICE, w której parametr thumbnail to plik ikony:

      <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. Podłącz urządzenie do komputera z systemem Windows.

  6. Znajdź identyfikator sprzętowy portu szeregowego urządzenia, korzystając z modułu pySerial Pythona:

    1. Zainstaluj pySerial na komputerze z systemem Windows.
    2. Użyj języka Python w wierszu poleceń systemu Windows, aby wyświetlić wszystkie identyfikatory sprzętu (VID i PID) urządzeń podłączonych do komputera. W tym wyniku jedno urządzenie jest połączone z identyfikatorem VID=1366 i PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Jeśli znasz już port COM, możesz użyć innego polecenia. Jeśli na przykład port COM to 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. Zaktualizuj listę urządzeń Golden Device:

    1. Otwórz pokój C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Dodaj nową grupę platform w tablicy GoldenDeviceHardwareIds z identyfikatorami VID i PID urządzenia:
      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. Włącz automatyczny tryb urządzenia.

Włączanie trybu automatycznego DUT

Po zakończeniu jednej z dwóch powyższych opcji konfiguracji:

  1. Otwórz GRL Test Harness. Urządzenie lub port pojawi się teraz jako nowe urządzenie referencyjne.
  2. Zaznacz pole wyboru Enable Auto DUT Device Selection (Włącz automatyczny wybór urządzenia DUT) pod listą Supported Hardware (Obsługiwany sprzęt).
  3. Wybierz przycisk opcji Ustaw jako DUT pod urządzeniem docelowym lub portem, aby ustawić urządzenie jako DUT.
Automatyczne testowanie urządzenia w ramach certyfikacji OT