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

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

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

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

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

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

Установить

  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 также поддерживает смешанные испытательные стенды, где эталонные устройства, используемые в каждом тестовом сценарии, представляют собой смешанный набор устройств, а не одно и то же устройство. Например, вместо использования 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 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) , который позволяет Test Harness управлять вашим компонентом или продуктом, как если бы он был одной из эталонных платформ. В зависимости от характеристик последовательного порта конкретной платформы ваше тестируемое устройство может:

Действует как существующая эталонная платформа 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. Обновите группу GoldenDeviceHardwareIds в массиве 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. Добавьте информацию о новой платформе в Test Harness:

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

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

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

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