Настройка автоматизации сертификации

Чтобы автоматизировать сертификационные тесты, требуется дополнительная настройка.

Все описанные ниже действия по установке и настройке выполняются на компьютере с Windows, на котором запущена тестовая программа GRL. Скачайте и установите последнюю версию GRL Thread Test Harness.

После установки вы можете выбрать один из двух методов автоматизации для тестируемого устройства:

  1. Инструмент автоматизации OpenThread Harness
  2. Режим автоматического тестирования устройств

Инструмент автоматизации OpenThread Harness

Установить

  1. Установите следующее программное обеспечение:
    • Python 2.7
    • Git для Windows (настоятельно рекомендуется поддержка Bash).
  2. Клонируйте репозиторий OpenThread, чтобы получить скрипты автоматизации:
    git clone https://github.com/openthread/openthread
    
  3. Установите требования Python:
    cd tools/harness-automation
    pip install -r requirements.txt
    
  4. Установите Google Chrome и ChromeDriver.

Настроить

  1. Создайте файл конфигурации для инструмента автоматизации:
    cp autothreadharness/settings_sample.py autothreadharness/settings.py
    
  2. Обновите новый файл конфигурации в соответствии с инструкциями в нем.
  3. Добавьте следующий параметр в файл конфигурации тестовой программы, который находится по пути C:\GRL\Thread1.1\Config\Configuration.ini:
    BrowserAutoNavigate = False

Поддержка смешанной тестовой среды

Harness Automation Tool также поддерживает смешанные тестовые стенды, в которых эталонные устройства, используемые в каждом тестовом сценарии, представляют собой смешанный набор устройств, а не все одно и то же устройство. Например, вместо того чтобы использовать 32 платы TI CC2538 с OpenThread для всех тестовых сценариев, вы можете комбинировать все четыре эталонных устройства Thread для каждого тестового сценария по своему усмотрению.

Чтобы использовать смешанные тестовые стенды, необходима дополнительная настройка:

  1. Добавьте в файл конфигурации тестовой программы, который находится в папке C:\GRL\Thread1.1\Config\Configuration.ini, следующий дополнительный параметр:
    EnableDeviceSelection = True
  2. Скачайте файл конфигурации топологии с сайта 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 во время тестирования.

  1. Закройте GRL Test Harness, если тестовая программа открыта.
  2. Подключите устройство к компьютеру с Windows.
  3. Найдите аппаратный идентификатор последовательного порта устройства с помощью модуля pySerial для Python:
    1. Установите pySerial на компьютер с Windows.
    2. Используйте Python в командной строке Windows, чтобы перечислить все идентификаторы оборудования (VID и PID) для устройств, подключенных к компьютеру. В этом примере подключено одно устройство с идентификатором VID=1366 и PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Если вы уже знаете 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']
  4. Обновите список эталонных устройств:
    1. Открыть чат "C:\GRL\Thread1.1\Config\Configuration.ini".
    2. Обновите группу 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']}
  5. Включить автоматический режим тестируемого устройства.

Новая эталонная платформа

Если последовательный порт тестируемого устройства не работает при правильных настройках или устройство не отвечает корректно после физического сброса (выводит нечитаемый код в течение 3–6 секунд после сброса), то OpenThread THCI можно настроить так, чтобы устройство рассматривалось как новая платформа в тестовой программе.

Например, чтобы настроить THCI с помощью платформы Nordic Semiconductor nRF52840:

  1. Закройте GRL Test Harness, если тестовая программа открыта.
  2. Измените /tools/harness-thci/OpenThread.py в соответствии с характеристиками UART целевого устройства. Изменения могут различаться в зависимости от целевых устройств. Если вы используете платформу Nordic nRF52840:

    1. Переименуйте файл OpenThread.py в nRF52840.py.
    2. Измените первые три вхождения "OpenThread" на "nRF52840":

      >> Device : nRF52840 THCI
      >> Class : nRF52840
      
      class nRF52840(IThci):
      
    3. Измените параметры последовательного порта:

      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. Чтобы устранить влияние нечитаемого кода, выводимого после сброса настроек устройства, измените время перехода в спящий режим:

      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. Скопируйте измененный файл nRF52840.py в папку C:\GRL\Thread1.1\Thread_Harness\THCI.

  4. Добавьте информацию о новой платформе в тестовую программу:

    1. Создайте значок в формате PNG или JPG, чтобы вашу платформу было проще отличить от других, и скопируйте его в папку C:\GRL\Thread1.1\Web\images.
    2. Добавьте в файл 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>
      
  5. Подключите устройство к компьютеру с Windows.

  6. Найдите аппаратный идентификатор последовательного порта устройства с помощью модуля pySerial для Python:

    1. Установите pySerial на компьютер с Windows.
    2. Используйте Python в командной строке Windows, чтобы перечислить все идентификаторы оборудования (VID и PID) для устройств, подключенных к компьютеру. В этом примере подключено одно устройство с идентификатором VID=1366 и PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Если вы уже знаете 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']
  7. Обновите список эталонных устройств:

    1. Открыть чат "C:\GRL\Thread1.1\Config\Configuration.ini".
    2. Добавьте новую группу платформ в массив 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'}
  8. Включить автоматический режим тестируемого устройства.

Включить автоматический режим тестируемого устройства

После того как вы выполните один из двух описанных выше вариантов настройки, сделайте следующее:

  1. Откройте тестовую программу GRL. Устройство или порт теперь отображается как новое эталонное устройство.
  2. Установите флажок Enable Auto DUT Device Selection (Включить автоматический выбор тестируемого устройства) под списком поддерживаемого оборудования.
  3. Установите переключатель Set as DUT (Назначить тестируемым устройством) под целевым устройством или портом.
OT Certification Auto DUT