Pour automatiser les tests de certification, une configuration supplémentaire est requise.
Toutes les étapes d'installation et de configuration ci-dessous se déroulent sur la machine Windows exécutant le logiciel GRL Test Harness. Téléchargez et installez la dernière version de GRL Thread Test Harness avant de continuer.
Une fois installé, il existe deux méthodes d'automatisation pour l'appareil testé :
Outil d'automatisation OpenThread Harness
Installer
- Installez les logiciels suivants :
- Python 2.7
- Git pour Windows (la compatibilité avec Bash est fortement recommandée)
- Clonez le dépôt OpenThread pour obtenir les scripts d'automatisation :
git clone https://github.com/openthread/openthread - Installez les exigences Python :
cd tools/harness-automationpip install -r requirements.txt - Installez Google Chrome et ChromeDriver.
Configurer
- Créez un fichier de configuration pour l'outil d'automatisation :
cp autothreadharness/settings_sample.py autothreadharness/settings.py - Mettez à jour ce nouveau fichier de configuration en suivant les instructions qu'il contient.
- Ajoutez le paramètre suivant au fichier de configuration Test Harness, disponible à l'adresse
C:\GRL\Thread1.1\Config\Configuration.ini:BrowserAutoNavigate = False
Compatibilité avec les bancs d'essai mixtes
L'outil d'automatisation Harness est également compatible avec les bancs d'essai mixtes, où les appareils de référence utilisés dans chaque cas de test sont un ensemble mixte d'appareils plutôt que tous les mêmes appareils. Par exemple, au lieu d'utiliser 32 cartes TI CC2538 exécutant OpenThread pour tous les cas de test, vous pouvez combiner les quatre appareils de référence Thread pour chaque cas de test, selon vos besoins.
Pour utiliser des bancs d'essai mixtes, une configuration supplémentaire est nécessaire :
- Ajoutez le paramètre supplémentaire suivant au fichier de configuration Test Harness, disponible à l'adresse
C:\GRL\Thread1.1\Config\Configuration.ini:EnableDeviceSelection = True
- Téléchargez le fichier de configuration de la topologie à partir du groupe Thread.
Ajoutez ce fichier en tant que
TopologyConfig.txtàC:\GRL\Thread1.1\Thread_Harness\TestScripts. Ce fichier indique l'appareil de référence à utiliser pour chaque rôle dans chaque cas de test.
Le fichier de configuration de la topologie fourni par le groupe Thread peut être modifié pour d'autres configurations de lit mixte, mais la configuration d'origine doit être utilisée pour la certification officielle.
Les valeurs valides à utiliser pour les appareils de référence dans le fichier de configuration de la topologie sont les suivantes :
| Valeur dans le fichier de configuration de la topologie | Appareil de référence de l'atelier de test |
|---|---|
ARM |
ARM : NXP FRDM-K64F avec Firefly 6LoWPAN Shield |
NXP |
NXP(Freescale) : dongles USB-KW24D512 |
OpenThread |
OpenThread : TI CC2538DK |
SiLabs |
Silabs : clé USB EM358x |
Chaque entrée de cas de test dans le fichier de configuration de la topologie doit figurer sur une ligne distincte et être mise en forme par paires role:device comme suit :
5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM
Mode Atelier de test Auto DUT
Le logiciel GRL Test Harness fournit une fonctionnalité de découverte automatique avancée (Auto DUT) qui accélère le processus de validation pour les fournisseurs de piles de référence Thread.
OpenThread fournit un exemple d'interface de contrôleur hôte Thread (THCI) qui permet à Test Harness de contrôler votre composant ou produit comme s'il s'agissait de l'une des plates-formes de référence. Selon les caractéristiques du port série de votre plate-forme spécifique, votre DUT peut :
Agir en tant que plate-forme de référence OpenThread existante
Si le port série du DUT fonctionne avec les paramètres 115200 8-N-1 et que l'appareil répond correctement après chaque réinitialisation physique (par exemple, pour confirmer la connexion valide de l'appareil à la machine Windows), la plate-forme peut utiliser l'outil OpenThread THCI. Cet outil permet à l'appareil de servir de plate-forme de référence OpenThread lors des tests.
- Fermez le banc d'essai GRL, s'il est ouvert.
- Connectez l'appareil à la machine Windows.
- Recherchez l'identifiant matériel du port série de l'appareil à l'aide du module Python pySerial :
- Installez pySerial sur la machine Windows.
- Utilisez Python sur la ligne de commande Windows pour énumérer tous les identifiants matériels (VID et PID) des appareils connectés à la machine. Dans cette sortie, un appareil est connecté avec un identifiant VID=1366 et PID=1015 :
python -m serial.tools.list_ports -vCOM10desc: USB Serial Port (COM10)hwid: USB\VID_1366+PID_1015+MI_00 - Si vous connaissez déjà le port COM, vous pouvez utiliser une autre commande. Par exemple, si le port COM est
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']
- Mettez à jour la liste des appareils de référence :
- Ouvrez
C:\GRL\Thread1.1\Config\Configuration.ini. - Mettez à jour le groupe OpenThread dans le tableau
GoldenDeviceHardwareIdsavec le VID et le PID des appareils :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']}
- Ouvrez
- Activez le mode Auto DUT.
Servir de nouvelle plate-forme de référence
Si le port série du DUT ne fonctionne pas avec les paramètres de port série appropriés ou si l'appareil ne répond pas correctement après une réinitialisation physique (il génère un code illisible dans les 3 à 6 secondes suivant la réinitialisation), vous pouvez personnaliser OpenThread THCI pour traiter l'appareil comme une nouvelle plate-forme dans le Test Harness.
Par exemple, pour personnaliser THCI à l'aide de la plate-forme Nordic Semiconductor nRF52840 :
- Fermez le banc d'essai GRL, s'il est ouvert.
Modifiez
/tools/harness-thci/OpenThread.pyen fonction des caractéristiques UART de l'appareil cible. Les modifications peuvent varier selon les appareils cibles. Dans le cas de la plate-forme Nordic nRF52840 :- Renommez le fichier
OpenThread.pyennRF52840.py. Remplacez les trois premières occurrences de "OpenThread" par "nRF52840" :
>> Device : nRF52840 THCI >> Class : nRF52840 class nRF52840(IThci):Modifiez les paramètres du port série :
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()Modifiez le temps de veille pour éliminer l'impact de la sortie de code illisible après la réinitialisation de l'appareil :
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)
- Renommez le fichier
Copiez le fichier
nRF52840.pymodifié dansC:\GRL\Thread1.1\Thread_Harness\THCI.Ajoutez les informations sur la nouvelle plate-forme au banc d'essai :
- Créez une icône (au format PNG ou JPG) pour différencier plus facilement votre plate-forme et copiez-la dans
C:\GRL\Thread1.1\Web\images. Mettez à jour
C:\GRL\Thread1.1\Web\data\deviceInputFields.xmlavec une nouvelle sectionDEVICE, où le paramètrethumbnailcorrespond au fichier d'icône :<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>
- Créez une icône (au format PNG ou JPG) pour différencier plus facilement votre plate-forme et copiez-la dans
Connectez l'appareil à la machine Windows.
Recherchez l'identifiant matériel du port série de l'appareil à l'aide du module Python pySerial :
- Installez pySerial sur la machine Windows.
- Utilisez Python sur la ligne de commande Windows pour énumérer tous les identifiants matériels (VID et PID) des appareils connectés à la machine. Dans cette sortie, un appareil est connecté avec un identifiant VID=1366 et PID=1015 :
python -m serial.tools.list_ports -vCOM10desc: USB Serial Port (COM10)hwid: USB\VID_1366+PID_1015+MI_00 - Si vous connaissez déjà le port COM, vous pouvez utiliser une autre commande. Par exemple, si le port COM est
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']
Mettez à jour la liste des appareils de référence :
- Ouvrez
C:\GRL\Thread1.1\Config\Configuration.ini. - Ajoutez un nouveau groupe de plates-formes dans le tableau
GoldenDeviceHardwareIdsavec le VID et le PID de l'appareil :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'}
- Ouvrez
Activer le mode Auto DUT
Une fois l'une des deux options de configuration ci-dessus terminée :
- Ouvrez GRL Test Harness. L'appareil/le port apparaît désormais comme un nouvel appareil de référence.
- Cochez la case Enable Auto DUT Device Selection (Activer la sélection automatique de l'appareil DUT) sous la liste des matériels compatibles.
- Sélectionnez la case d'option Définir comme DUT sous l'appareil/port cible pour définir l'appareil comme DUT.