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

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

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

После установки существует два метода автоматизации для тестируемого устройства (DUT):

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

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

Установить

  1. Установите следующее программное обеспечение:
    • Питон 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. Добавьте следующий параметр в файл конфигурации Test Harness, расположенный по адресу C:\GRL\Thread1.1\Config\Configuration.ini :
    BrowserAutoNavigate = False

Поддержка смешанного испытательного стенда

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

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

  1. Добавьте следующий дополнительный параметр в файл конфигурации Test Harness, расположенный по адресу C:\GRL\Thread1.1\Config\Configuration.ini :
    EnableDeviceSelection = True
  2. Загрузите файл конфигурации топологии из группы потоков . Добавьте этот файл как TopologyConfig.txt в C:\GRL\Thread1.1\Thread_Harness\TestScripts . В этом файле указано, какое эталонное устройство следует использовать для каждой роли в каждом тестовом примере.

Файл конфигурации топологии, предоставленный группой потоков, можно изменить для других конфигураций смешанного типа, но для официальной сертификации необходимо использовать исходную конфигурацию.

Допустимые значения для эталонных устройств в файле конфигурации топологии:

Значение в файле конфигурации топологии Эталонное устройство Test Harness
ARM ARM: NXP FRDM-K64F с экраном Firefly 6LoWPAN
NXP NXP (Freescale): USB-KW24D512 ключи
OpenThread Открытая тема: TI CC2538DK
SiLabs Silabs: USB-накопитель EM358x

Каждая запись тестового примера в файле конфигурации топологии должна находиться на отдельной строке и форматироваться в role:device следующим образом:

5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM

Режим автоматического тестирования тестируемого кабеля

Программное обеспечение GRL Test Harness предоставляет расширенную функцию автоматического обнаружения (Auto DUT), которая ускоряет процесс проверки для поставщиков эталонного стека потоков.

OpenThread предоставляет пример интерфейса хост-контроллера потока (THCI) , который позволяет тестовому жгуту управлять вашим компонентом или продуктом, как если бы он был одной из эталонных платформ. В соответствии с характеристиками последовательного порта вашей конкретной платформы ваше тестируемое устройство может:

Работа в качестве существующей эталонной платформы OpenThread.

Если последовательный порт тестируемого устройства работает с настройками 115200 8-N-1 и устройство правильно реагирует после каждого физического сброса устройства (например, для подтверждения действительного соединения устройства с компьютером Windows), то платформа может использовать Инструмент OpenThread THCI. Этот инструмент позволяет устройству выступать в качестве эталонной платформы OpenThread во время тестирования.

  1. Закройте тестовый жгут GRL, если он открыт.
  2. Подключите устройство к компьютеру с Windows.
  3. Найдите аппаратный идентификатор последовательного порта устройства, используя модуль Python pySerial:
    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 можно настроить для лечения устройство как новая платформа в Test Harness.

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

  1. Закройте тестовый жгут GRL, если он открыт.
  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. Найдите аппаратный идентификатор последовательного порта устройства, используя модуль Python pySerial:

    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. Включите режим автоматического проверяемого устройства .

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

После завершения одного из двух вышеперечисленных вариантов конфигурации:

  1. Откройте тестовый жгут GRL, устройство/порт теперь отображается как новое эталонное устройство.
  2. Установите флажок «Включить автоматический выбор устройства DUT» под списком поддерживаемого оборудования.
  3. Выберите переключатель «Установить как тестируемое устройство» под целевым устройством/портом, чтобы установить устройство в качестве тестируемого устройства.
Сертификация OT Автоматическое проверяемое устройство