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:
- Narzędzie do automatyzacji wykorzystującej szelki OpenThread
- Tryb jałowego duplikowania trybu testowego
Narzędzie do automatyzacji szelek OpenThread
Zainstaluj
- Zainstaluj to oprogramowanie:
- Python 2.7
- Git for Windows (zdecydowanie zalecamy obsługę Bash)
- Skopiuj repozytorium OpenThread, aby uzyskać skrypty automatyzacji:
git clone https://github.com/openthread/openthread
- Wymagania dotyczące Pythona:
cd tools/harness-automation
pip install -r requirements.txt
- Zainstaluj Google Chrome i ChromeDriver.
Skonfiguruj
- Utwórz plik konfiguracji narzędzia do automatyzacji:
cp autothreadharness/settings_sample.py autothreadharness/settings.py
- Zaktualizuj nowy plik konfiguracji zgodnie z instrukcjami.
- 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:
- Dodaj ten dodatkowy parametr do pliku konfiguracyjnego szelki testowej, który znajdziesz pod adresem
C:\GRL\Thread1.1\Config\Configuration.ini
:EnableDeviceSelection = True
- Pobierz plik konfiguracji topologii z grupy wątków.
Dodaj ten plik jako
TopologyConfig.txt
doC:\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.
- Zamykaj pasek testowy (jeśli jest otwarty).
- Podłącz urządzenie do komputera z systemem Windows.
- Znajdź identyfikator sprzętowy portu szeregowego urządzenia za pomocą modułu Python pySerial:
- Zainstaluj pySerial na komputerze z systemem Windows.
- 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
COM10desc: USB Serial Port (COM10)
hwid: USB\VID_1366+PID_1015+MI_00
- 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']
- Zaktualizuj listę złotych urządzeń:
- Otwórz aplikację
C:\GRL\Thread1.1\Config\Configuration.ini
. - 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']}
- Otwórz aplikację
- 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:
- Zamykaj pasek testowy (jeśli jest otwarty).
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:- Zmień nazwę pliku
OpenThread.py
nanRF52840.py
. Zmień 3 pierwsze wystąpienia ciągu "OpenThread" na "nRF52840":
>> Device : nRF52840 THCI >> Class : nRF52840 class nRF52840(IThci):
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()
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)
- Zmień nazwę pliku
Skopiuj zmodyfikowany plik
nRF52840.py
do folderuC:\GRL\Thread1.1\Thread_Harness\THCI
Dodaj nowe informacje o platformie do szelki testowej:
- Utwórz ikonę (w formacie png lub jpg), aby ułatwić rozróżnianie platformy i kopiować ją do
C:\GRL\Thread1.1\Web\images
. Dodaj w sekcji
C:\GRL\Thread1.1\Web\data\deviceInputFields.xml
nową sekcjęDEVICE
, gdzie parametrthumbnail
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>
- Utwórz ikonę (w formacie png lub jpg), aby ułatwić rozróżnianie platformy i kopiować ją do
Podłącz urządzenie do komputera z systemem Windows.
Znajdź identyfikator sprzętowy portu szeregowego urządzenia za pomocą modułu Python pySerial:
- Zainstaluj pySerial na komputerze z systemem Windows.
- 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
COM10desc: USB Serial Port (COM10)
hwid: USB\VID_1366+PID_1015+MI_00
- 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']
Zaktualizuj listę złotych urządzeń:
- Otwórz aplikację
C:\GRL\Thread1.1\Config\Configuration.ini
. - 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'}
- Otwórz aplikację
Włącz tryb automatycznego usuwania duplikatów
Po wykonaniu jednej z dwóch powyższych opcji konfiguracji:
- Otwórz szelkę testów GRL. Urządzenie/port pojawi się jako nowe urządzenie referencyjne.
- Zaznacz pole wyboru Włącz automatyczne wybieranie urządzeń DUT pod listą Obsługiwany sprzęt.
- Wybierz opcję Ustaw jako duplikat pod urządzeniem docelowym lub portem, aby określić je jako numer DUT.