Чтобы автоматизировать сертификационные тесты, требуется дополнительная настройка.
Все описанные ниже действия по установке и настройке выполняются на компьютере с Windows, на котором запущена тестовая программа GRL. Скачайте и установите последнюю версию GRL Thread Test Harness.
После установки вы можете выбрать один из двух методов автоматизации для тестируемого устройства:
Инструмент автоматизации OpenThread Harness
Установить
- Установите следующее программное обеспечение:
- Python 2.7
- Git для Windows (настоятельно рекомендуется поддержка Bash).
- Клонируйте репозиторий OpenThread, чтобы получить скрипты автоматизации:
git clone https://github.com/openthread/openthread - Установите требования Python:
cd tools/harness-automationpip install -r requirements.txt - Установите Google Chrome и ChromeDriver.
Настроить
- Создайте файл конфигурации для инструмента автоматизации:
cp autothreadharness/settings_sample.py autothreadharness/settings.py - Обновите новый файл конфигурации в соответствии с инструкциями в нем.
- Добавьте следующий параметр в файл конфигурации тестовой программы, который находится по пути
C:\GRL\Thread1.1\Config\Configuration.ini:BrowserAutoNavigate = False
Поддержка смешанной тестовой среды
Harness Automation Tool также поддерживает смешанные тестовые стенды, в которых эталонные устройства, используемые в каждом тестовом сценарии, представляют собой смешанный набор устройств, а не все одно и то же устройство. Например, вместо того чтобы использовать 32 платы TI CC2538 с OpenThread для всех тестовых сценариев, вы можете комбинировать все четыре эталонных устройства Thread для каждого тестового сценария по своему усмотрению.
Чтобы использовать смешанные тестовые стенды, необходима дополнительная настройка:
- Добавьте в файл конфигурации тестовой программы, который находится в папке
C:\GRL\Thread1.1\Config\Configuration.ini, следующий дополнительный параметр:EnableDeviceSelection = True
- Скачайте файл конфигурации топологии с сайта Thread Group.
Добавьте этот файл как
TopologyConfig.txtвC:\GRL\Thread1.1\Thread_Harness\TestScripts. В этом файле указано, какое эталонное устройство использовать для каждой роли в каждом тестовом сценарии.
Файл конфигурации топологии, предоставленный Thread Group, можно изменить для других конфигураций смешанной сети, но для официальной сертификации необходимо использовать исходную конфигурацию.
Допустимые значения для эталонных устройств в файле конфигурации топологии:
| Значение в файле конфигурации топологии | Эталонное устройство для тестовой программы |
|---|---|
ARM |
ARM: NXP FRDM-K64F с Firefly 6LoWPAN Shield |
NXP |
NXP(Freescale): USB-KW24D512 Dongles |
OpenThread |
OpenThread: TI CC2538DK |
SiLabs |
Silabs: EM358x USB Stick |
Каждая запись тестового сценария в файле конфигурации топологии должна быть на отдельной строке и иметь формат пар role:device:
5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM
Режим автоматического тестирования устройства
Программное обеспечение GRL Test Harness предоставляет расширенную функцию автоматического обнаружения (Auto DUT), которая ускоряет процесс проверки для поставщиков эталонного стека Thread.
В OpenThread есть пример интерфейса THCI (Thread Host Controller Interface), который позволяет тестовой программе управлять вашим компонентом или продуктом так, как если бы это была одна из эталонных платформ. В зависимости от характеристик последовательного порта на вашей платформе тестируемое устройство может:
Выступает в качестве существующей эталонной платформы OpenThread.
Если последовательный порт тестируемого устройства работает с настройками 115200 8-N-1 и устройство отвечает правильно после каждого физического сброса (например, для подтверждения действительного подключения устройства к компьютеру с Windows), то платформа может использовать инструмент OpenThread THCI. Этот инструмент позволяет устройству действовать в качестве эталонной платформы OpenThread во время тестирования.
- Закройте GRL Test Harness, если тестовая программа открыта.
- Подключите устройство к компьютеру с Windows.
- Найдите аппаратный идентификатор последовательного порта устройства с помощью модуля pySerial для Python:
- Установите pySerial на компьютер с Windows.
- Используйте Python в командной строке Windows, чтобы перечислить все идентификаторы оборудования (VID и PID) для устройств, подключенных к компьютеру. В этом примере подключено одно устройство с идентификатором VID=1366 и PID=1015:
python -m serial.tools.list_ports -vCOM10desc: USB Serial Port (COM10)hwid: USB\VID_1366+PID_1015+MI_00 - Если вы уже знаете COM-порт, можно использовать другую команду. Например, если COM-порт –
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']
- Обновите список эталонных устройств:
- Открыть чат "
C:\GRL\Thread1.1\Config\Configuration.ini". - Обновите группу OpenThread в массиве
GoldenDeviceHardwareIds, указав идентификаторы VID и PID устройств: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']}
- Открыть чат "
- Включить автоматический режим тестируемого устройства.
Новая эталонная платформа
Если последовательный порт тестируемого устройства не работает при правильных настройках или устройство не отвечает корректно после физического сброса (выводит нечитаемый код в течение 3–6 секунд после сброса), то OpenThread THCI можно настроить так, чтобы устройство рассматривалось как новая платформа в тестовой программе.
Например, чтобы настроить THCI с помощью платформы Nordic Semiconductor nRF52840:
- Закройте GRL Test Harness, если тестовая программа открыта.
Измените
/tools/harness-thci/OpenThread.pyв соответствии с характеристиками UART целевого устройства. Изменения могут различаться в зависимости от целевых устройств. Если вы используете платформу Nordic nRF52840:- Переименуйте файл
OpenThread.pyвnRF52840.py. Измените первые три вхождения "OpenThread" на "nRF52840":
>> Device : nRF52840 THCI >> Class : nRF52840 class nRF52840(IThci):Измените параметры последовательного порта:
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()Чтобы устранить влияние нечитаемого кода, выводимого после сброса настроек устройства, измените время перехода в спящий режим:
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)
- Переименуйте файл
Скопируйте измененный файл
nRF52840.pyв папкуC:\GRL\Thread1.1\Thread_Harness\THCI.Добавьте информацию о новой платформе в тестовую программу:
- Создайте значок в формате PNG или JPG, чтобы вашу платформу было проще отличить от других, и скопируйте его в папку
C:\GRL\Thread1.1\Web\images. Добавьте в файл
C:\GRL\Thread1.1\Web\data\deviceInputFields.xmlразделDEVICE, в котором параметрthumbnailуказывает на файл значка:<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>
- Создайте значок в формате PNG или JPG, чтобы вашу платформу было проще отличить от других, и скопируйте его в папку
Подключите устройство к компьютеру с Windows.
Найдите аппаратный идентификатор последовательного порта устройства с помощью модуля pySerial для Python:
- Установите pySerial на компьютер с Windows.
- Используйте Python в командной строке Windows, чтобы перечислить все идентификаторы оборудования (VID и PID) для устройств, подключенных к компьютеру. В этом примере подключено одно устройство с идентификатором VID=1366 и PID=1015:
python -m serial.tools.list_ports -vCOM10desc: USB Serial Port (COM10)hwid: USB\VID_1366+PID_1015+MI_00 - Если вы уже знаете COM-порт, можно использовать другую команду. Например, если COM-порт –
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']
Обновите список эталонных устройств:
- Открыть чат "
C:\GRL\Thread1.1\Config\Configuration.ini". - Добавьте новую группу платформ в массив
GoldenDeviceHardwareIdsс идентификаторами VID и PID устройства: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'}
- Открыть чат "
Включить автоматический режим тестируемого устройства
После того как вы выполните один из двух описанных выше вариантов настройки, сделайте следующее:
- Откройте тестовую программу GRL. Устройство или порт теперь отображается как новое эталонное устройство.
- Установите флажок Enable Auto DUT Device Selection (Включить автоматический выбор тестируемого устройства) под списком поддерживаемого оборудования.
- Установите переключатель Set as DUT (Назначить тестируемым устройством) под целевым устройством или портом.