Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

認証自動化のセットアップ

認定テストを自動化するには、追加のセットアップが必要です。

以下のすべてのインストールおよび構成手順は、GRLテストハーネスソフトウェアを実行しているWindowsマシンで実行されます。続行する前に、最新のGRLスレッドテストハーネスをダウンロードしてインストールしてください。

インストールすると、テスト対象デバイス(DUT)の自動化方法が2つあります。

  1. OpenThreadハーネス自動化ツール
  2. ハーネス自動DUTモードのテスト

OpenThreadハーネス自動化ツール

インストール

  1. 次のソフトウェアをインストールします。
    • Python 2.7
    • Git for 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は、混合テストベッドもサポートします。各テストケースで使用される参照デバイスは、すべて同じデバイスではなく、混合されたデバイスのセットです。たとえば、すべてのテストケースでOpenThreadを実行する32個のTI CC2538ボードを使用する代わりに、必要に応じて、各テストケースの4つのスレッド参照デバイスすべてを組み合わせて組み合わせることができます。

混合テストベッドを使用するには、追加の構成が必要です。

  1. C:\GRL\Thread1.1\Config\Configuration.iniにあるテストハーネス構成ファイルに次の追加パラメーターを追加します:
    EnableDeviceSelection = True
  2. スレッドグループからトポロジ構成ファイルをダウンロードします。このファイルをTopologyConfig.txtとしてC:\GRL\Thread1.1\Thread_Harness\TestScripts追加します。このファイルには、各テストケースの各役割に使用する参照デバイスの詳細が記載されています。

スレッドグループによって提供されるトポロジ構成ファイルは、他の混合ベッド構成用に変更できますが、正式な認証には、元の構成を使用する必要があります。

トポロジ構成ファイルの参照デバイスに使用する有効な値は次のとおりです。

トポロジ構成ファイルの値テストハーネスリファレンスデバイス
ARM ARM:Firefly6LoWPANシールドを備えたNXPFRDM-K64F
NXP NXP(フリースケール):USB-KW24D512ドングル
OpenThread OpenThread:TI CC2538DK
SiLabs Silabs:EM358xUSBスティック

トポロジ構成ファイルの各テストケースエントリは、別々の行にあり、次のようにrole:deviceペアでフォーマットされている必要があります。

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

ハーネス自動DUTモードのテスト

GRLテストハーネスソフトウェアは、スレッド参照スタックベンダーの検証プロセスを加速する高度な自動検出機能(Auto DUT)を提供します。

OpenThreadは、テストハーネスがコンポーネントまたは製品を参照プラットフォームの1つであるかのように制御できるようにするスレッドホストコントローラーインターフェイス(THCI)の例を提供します。特定のプラットフォームのシリアルポートの特性に応じて、DUTは次のいずれかを実行できます。

既存のOpenThread参照プラットフォームとして機能する

DUTのシリアルポートが1152008-N-1の設定で機能し、物理デバイスがリセットされるたびにデバイスが正しく応答する場合(たとえば、Windowsマシンへのデバイスの有効な接続を確認するため)、プラットフォームはOpenThreadTHCIツール。このツールを使用すると、テスト中にデバイスをOpenThread参照プラットフォームとして機能させることができます。

  1. GRLテストハーネスが開いている場合は、閉じます。
  2. デバイスをWindowsマシンに接続します。
  3. Python pySerialモジュールを使用して、デバイスのシリアルポートハードウェア識別子を見つけます。
    1. WindowsマシンにpySerialインストールします
    2. WindowsコマンドラインでPythonを使用して、マシンに接続されているデバイスのすべてのハードウェア識別子(VIDおよびPID)を列挙します。この出力では、1つのデバイスが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配列のOpenThreadグループをデバイスの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. 自動DUTモードを有効にします

新しいリファレンスプラットフォームとして機能

DUTのシリアルポートが適切なシリアルポート設定で機能しない場合、または物理デバイスのリセット後にデバイスが正しく応答しない場合(リセットから3〜6秒以内に読み取り不可能なコードを出力する)、OpenThreadTHCIをカスタマイズして処理できます。テストハーネスの新しいプラットフォームとしてのデバイス。

たとえば、 Nordic SemiconductornRF52840プラットフォームを使用してTHCIをカスタマイズするには次のようにします。

  1. GRLテストハーネスが開いている場合は、閉じます。
  2. ターゲットデバイスのUART特性に基づいて/tools/harness-thci/OpenThread.pyを変更します。変更は、ターゲットデバイス間で異なる場合があります。北欧のnRF52840プラットフォームの場合:

    1. 名前の変更OpenThread.pyにファイルnRF52840.py
    2. 「OpenThread」の最初の3つのオカレンスを「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コピーしC:\GRL\Thread1.1\Web\images
    2. C:\GRL\Thread1.1\Web\data\deviceInputFields.xmlを新しいDEVICEセクションでC:\GRL\Thread1.1\Web\data\deviceInputFields.xmlします。ここで、 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. WindowsマシンにpySerialインストールします
    2. WindowsコマンドラインでPythonを使用して、マシンに接続されているデバイスのすべてのハードウェア識別子(VIDおよびPID)を列挙します。この出力では、1つのデバイスが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. デバイスのVIDとPIDを使用してGoldenDeviceHardwareIdsアレイに新しいプラットフォームグループを追加します:
      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モードを有効にします

自動DUTモードを有効にする

上記の2つの構成オプションのいずれかが完了した後:

  1. GRLテストハーネスを開くと、デバイス/ポートが新しい参照デバイスとして表示されます。
  2. [サポートされているハードウェア]リストの下にある[自動DUTデバイスの選択を有効にする]チェックボックスを選択します。
  3. ターゲットデバイス/ポートの下にある[ Setas DUT ]ラジオボタンを選択して、デバイスをDUTとして設定します。
OT認定オートDUT