Pour automatiser les tests de certification, une configuration supplémentaire est nécessaire.
Toutes les étapes d'installation et de configuration ci-dessous s'effectuent sur l'ordinateur Windows exécutant le logiciel de test GRL. Téléchargez et installez la dernière version du harnais de test Thread GRL avant de continuer.
Une fois installées, deux méthodes d'automatisation sont disponibles 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 vivement recommandée)
- Clonez le dépôt OpenThread pour obtenir les scripts d'automatisation :
git clone https://github.com/openthread/openthread
- Installez la configuration Python requise :
cd tools/harness-automation
pip 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 du fichier.
- Ajoutez le paramètre suivant au fichier de configuration Test Harness, disponible à l'adresse
C:\GRL\Thread1.1\Config\Configuration.ini
:BrowserAutoNavigate = False
.
Support de test mixte
L'outil Harness Automation accepte également les écrans de test mixtes, où les appareils de référence utilisés dans chaque scénario de test sont un ensemble mixte d'appareils plutôt que le même appareil. Par exemple, au lieu d'utiliser 32 cartes TI CC2538 exécutant OpenThread pour tous les scénarios de test, vous pouvez associer les quatre appareils de référence Thread pour chaque scénario de test, selon vos besoins.
Pour utiliser des lits de test mixtes, vous devez effectuer une configuration supplémentaire:
- 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 topologie depuis le groupe de fils de discussion.
Ajoutez ce fichier en tant que
TopologyConfig.txt
àC:\GRL\Thread1.1\Thread_Harness\TestScripts
. Ce fichier détaille l'appareil de référence à utiliser pour chaque rôle dans chaque scénario de test.
Le fichier de configuration de topologie fourni par le groupe de fils de discussion peut être modifié pour d'autres configurations de lits mixtes, mais pour la certification officielle, la configuration d'origine doit être utilisée.
Les valeurs valides à utiliser pour les appareils de référence dans le fichier de configuration de topologie sont les suivantes:
Valeur dans le fichier de configuration de topologie | Tester l'appareil de référence |
---|---|
ARM |
ARM: NXP FRDM-K64F avec Firefly 6LoWPAN Shield |
NXP |
Dongles NXP(freescale): USB-KW24D512 |
OpenThread |
OpenThread: TI CC2538DK |
SiLabs |
Silabs: clé USB EM358x |
Chaque entrée du scénario de test dans le fichier de configuration de topologie doit figurer sur une ligne distincte et être mise en forme dans des paires role:device
comme suit:
5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM
Tester le mode DUT automatique
Le logiciel GRL Test Harness fournit une fonctionnalité de découverte automatique avancée (Auto DUT) qui accélère le processus de validation des fournisseurs de piles de référence Thread.
OpenThread fournit un exemple d'interface de contrôleur de fil de discussion (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. En fonction des caractéristiques du port série de votre plate-forme spécifique, votre utilitaire unique peut:
Agissant en tant que plate-forme de référence OpenThread existante
Si le port série de l'appareil DUT fonctionne dans 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 THCI OpenThread. Cet outil permet à l'appareil de servir de plate-forme de référence OpenThread lors des tests.
- S'il est ouvert, fermez le harnais de test GRL.
- Connectez l'appareil à l'ordinateur Windows.
- Recherchez l'identifiant matériel du port série de l'appareil à l'aide du module pySerial Python :
- 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) pour les appareils connectés à la machine. Dans ce résultat, un appareil est connecté avec l'identifiant VID=1366 et PID=1015 :
.python -m serial.tools.list_ports -v
COM10desc: 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 Golden :
- Ouvrez
C:\GRL\Thread1.1\Config\Configuration.ini
. - Mettez à jour le groupe OpenThread du tableau
GoldenDeviceHardwareIds
avec le VID et le PID du ou 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 DUT automatique.
Plate-forme de référence
Si le port série de l'appareil DUT ne fonctionne pas dans les paramètres appropriés du port série, ou si l'appareil ne répond pas correctement après la réinitialisation de l'appareil physique (affiche un code illisible dans les trois à six secondes qui suivent sa réinitialisation), OpenThread peut être personnalisé pour traiter l'appareil comme une nouvelle plate-forme dans le test.
Par exemple, pour personnaliser THCI à l'aide de la plate-forme Nordic Semiconductor nRF52840:
- S'il est ouvert, fermez le harnais de test GRL.
Modifiez
/tools/harness-thci/OpenThread.py
en 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.py
ennRF52840.py
. Remplacez les trois premières occurrences de "&Thread" 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 délai de mise en veille pour éliminer l'impact du résultat 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.py
modifié dansC:\GRL\Thread1.1\Thread_Harness\THCI
Ajoutez les informations sur la nouvelle plate-forme dans le champ de test:
- Créez une icône (au format png ou jpg) pour différencier votre plate-forme et la copier dans
C:\GRL\Thread1.1\Web\images
. Mettez à jour
C:\GRL\Thread1.1\Web\data\deviceInputFields.xml
avec une nouvelle sectionDEVICE
, où le paramètrethumbnail
est le 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 votre plate-forme et la copier dans
Connectez l'appareil à l'ordinateur 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) pour les appareils connectés à la machine. Dans ce résultat, un appareil est connecté avec l'identifiant VID=1366 et PID=1015 :
.python -m serial.tools.list_ports -v
COM10desc: 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 dorés:
- Ouvrez
C:\GRL\Thread1.1\Config\Configuration.ini
. - Ajoutez un groupe de plate-forme dans le tableau
GoldenDeviceHardwareIds
avec 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 DUT automatique
Une fois que vous avez effectué l'une des deux options de configuration ci-dessus:
- Ouvrez le harnais de test GRL, l'appareil ou le port apparaît désormais en tant que nouvel appareil de référence.
- Cochez la case Activer la sélection automatique des appareils pour Android sous la liste des appareils compatibles.
- Sélectionnez Définir en tant que DUT sous l'appareil ou le port cible pour définir l'appareil en tant que DUT.
