Konfiguracja automatyzacji certyfikatów

Do zautomatyzowania testów certyfikacyjnych wymagana jest dodatkowa konfiguracja.

Wszystkie kroki instalacji i konfiguracji opisane są na komputerze z systemem Windows, na którym działa oprogramowanie GRL Test Harness. Zanim przejdziesz dalej, pobierz i zainstaluj najnowszą wersję szelki do testowania wątków GRL.

Po zainstalowaniu są dwie metody automatyzacji urządzenia objętego testem:

  1. Narzędzie do automatyzacji wykorzystującej szelki OpenThread
  2. Tryb jałowego duplikowania trybu testowego

Narzędzie do automatyzacji szelek OpenThread

Zainstaluj

  1. Zainstaluj to oprogramowanie:
    • Python 2.7
    • Git for Windows (zdecydowanie zalecamy obsługę Bash)
  2. Skopiuj repozytorium OpenThread, aby uzyskać skrypty automatyzacji:
    git clone https://github.com/openthread/openthread
    
  3. Wymagania dotyczące Pythona:
    cd tools/harness-automation
    pip install -r requirements.txt
    
  4. Zainstaluj Google Chrome 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.
  3. Dodaj ten parametr do pliku konfiguracji szelki testowej, którą znajdziesz na stronie C:\GRL\Thread1.1\Config\Configuration.ini:
    BrowserAutoNavigate = False

Mieszane wsparcie dla testów

Harness Automation Tool obsługuje również mieszane nośniki testowe, w przypadku których referencyjne urządzenia używane w każdym przypadku testowym są mieszanką różnych urządzeń, a nie wszystkich. Na przykład zamiast używać 32 kart TI CC2538 we wszystkich przypadkach testowych, możesz dowolnie zestawiać ze sobą wszystkie 4 urządzenia referencyjne do poszczególnych wątków.

Aby korzystać z różnych łóżek testowych, potrzebna jest dodatkowa konfiguracja:

  1. Dodaj ten dodatkowy parametr do pliku konfiguracyjnego szelki testowej, który znajdziesz pod adresem 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 urządzeniu, którego należy użyć w przypadku każdej roli w poszczególnych przypadkach testowych.

Plik konfiguracji topologii udostępniony przez grupę Threading można zmienić na potrzeby innych konfiguracji łóżek mieszanych, ale do oficjalnej certyfikacji należy użyć oryginalnej konfiguracji.

Prawidłowe wartości używane w przypadku urządzeń referencyjnych w pliku konfiguracji topologii to:

Wartość w pliku konfiguracji topologii Urządzenie referencyjne z szelkami testowymi
ARM ARM: NXP FRDM-K64F z Firefly 6LoWPAN Shield
NXP NXP(dowolna skala): dongle USB-KW24D512
OpenThread OpenThread: TI CC2538DK,
SiLabs Beztłuszczowe: pamięć USB EM358x

Każda pozycja przypadku testowego w pliku konfiguracji topologii musi być w oddzielnym wierszu i być sformatowana w role:device w następujący sposób:

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

Przetestuj tryb automatycznego szelkowania

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

OpenThread zapewnia przykładowy interfejs Thread Host Controller Interface (THCI)<ph class="ph-1-1">, który pozwala szelkowi testowej kontrolować komponent lub produkt tak, jak gdyby należała do jednej z platform referencyjnych. Zgodnie z cechami portu szeregowego Twojej platformy podwójny numer referencyjny może:

Działa jako istniejąca platforma referencyjna OpenThread

Jeśli port szeregowy DUT działa w ustawieniach 115200 8-N-1, a urządzenie reaguje poprawnie po każdym zresetowaniu urządzenia (na przykład w celu potwierdzenia prawidłowego połączenia z systemem Windows), platforma może użyć narzędzia OpenThread THCI. To narzędzie umożliwia urządzeniu działanie jako platforma referencyjna OpenThread podczas testowania.

  1. Zamykaj pasek testowy (jeśli jest otwarty).
  2. Podłącz urządzenie do komputera z systemem Windows.
  3. Znajdź identyfikator sprzętowy portu szeregowego urządzenia za pomocą modułu Python pySerial:
    1. Zainstaluj pySerial na komputerze z systemem Windows.
    2. Użyj Pythona w wierszu poleceń systemu Windows, aby wymienić wszystkie identyfikatory urządzeń (VID i PID) urządzeń podłączonych do komputera. W tym wyniku jedno urządzenie jest połączone z identyfikatorem VID=1366, a 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ę złotych urządzeń:
    1. Otwórz aplikację C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Zaktualizuj grupę OpenThread w tablicy GoldenDeviceHardwareIds o identyfikator 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 tryb automatycznego przenoszenia.

Praca jako nowa platforma referencyjna

Jeśli port szeregowy DUT nie działa zgodnie z odpowiednimi ustawieniami portu szeregowego lub urządzenie nie reaguje prawidłowo po zresetowaniu urządzenia (w ciągu 3–6 sekund od zresetowania), nie otrzyma od niego kodu, który można odczytać, możesz dostosować OpenThread THCI tak, aby traktował urządzenie jako nową platformę w kategorii testowej.

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

  1. Zamykaj pasek testowy (jeśli jest otwarty).
  2. Zmodyfikuj /tools/harness-thci/OpenThread.py na podstawie cech UART urządzenia docelowego. Modyfikacje mogą różnić się w zależności od urządzenia docelowego. W przypadku platformy Nordic nRF52840:

    1. Zmień nazwę pliku OpenThread.py na nRF52840.py.
    2. Zmień 3 pierwsze wystąpienia ciągu "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 nieczytelnych kodów wyjściowych 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 folderu C:\GRL\Thread1.1\Thread_Harness\THCI

  4. Dodaj nowe informacje o platformie do szelki testowej:

    1. Utwórz ikonę (w formacie png lub jpg), aby ułatwić rozróżnianie platformy i kopiować ją do C:\GRL\Thread1.1\Web\images.
    2. Dodaj w sekcji C:\GRL\Thread1.1\Web\data\deviceInputFields.xml nową sekcję DEVICE, gdzie 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 za pomocą modułu Python pySerial:

    1. Zainstaluj pySerial na komputerze z systemem Windows.
    2. Użyj Pythona w wierszu poleceń systemu Windows, aby wymienić wszystkie identyfikatory urządzeń (VID i PID) urządzeń podłączonych do komputera. W tym wyniku jedno urządzenie jest połączone z identyfikatorem VID=1366, a 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ę złotych urządzeń:

    1. Otwórz aplikację C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Dodaj w tablicy GoldenDeviceHardwareIds nową grupę platform z identyfikatorem 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 tryb automatycznego przenoszenia.

Włącz tryb automatycznego usuwania duplikatów

Po wykonaniu jednej z dwóch powyższych opcji konfiguracji:

  1. Otwórz szelkę testów GRL. Urządzenie/port pojawi się jako nowe urządzenie referencyjne.
  2. Zaznacz pole wyboru Włącz automatyczne wybieranie urządzeń DUT pod listą Obsługiwany sprzęt.
  3. Wybierz opcję Ustaw jako duplikat pod urządzeniem docelowym lub portem, aby określić je jako numer DUT.
Certyfikat automatyzacji sprzedaży