認定資格の自動化の設定

認定資格テストを自動化するには、追加の設定が必要です。

以下のインストールと構成の手順はすべて、Windows マシンで実行します。 GRL Test Harness ソフトウェアの実行と、最新の GRL Thread テストハーネスを 続けます。

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

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

OpenThread ハーネス自動化ツール

インストール

  1. 次のソフトウェアをインストールします。 <ph type="x-smartling-placeholder">
      </ph>
    • 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 ChromeChromeDriver

設定

  1. 自動化ツールの構成ファイルを作成します。
    cp autothreadharness/settings_sample.py autothreadharness/settings.py
    
  2. 新しい構成ファイルを 表示されます。
  3. 次のパラメータをテストハーネス構成ファイルに追加します。 C:\GRL\Thread1.1\Config\Configuration.ini:
    BrowserAutoNavigate = False

混合 testbed サポート

ハーネス自動化ツールは、複数の testbed もサポートしており、 各テストケースで使用されるデバイスは、すべてのデバイスではなく、 接続しますたとえば、32 個の TI CC2538 ボードを使用する代わりに、 すべてのテストケースで OpenThread を使用し、4 つの Thread すべてで組み合わせが可能 必要に応じて各テストケースの参照デバイスを指定できます

混合 testbed を使用するには、追加の構成が必要です。

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

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

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

トポロジ構成ファイルの値 テストハーネスのリファレンス デバイス
ARM ARM: NXP FRDM-K64F(Firefly 6LoWPAN シールド)
NXP NXP(Freescale): USB-KW24D512 ドングル
OpenThread OpenThread:TI CC2538DK
SiLabs SIlabs: EM358x USB スティック

トポロジ構成ファイルの各テストケース エントリは、 次のように role:device ペアでフォーマットします。

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

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

GRL テストハーネス ソフトウェアの高度な自動検出機能 (Auto DUT)であり、Thread 参照スタックの検証プロセスを高速化します。 提供します。

OpenThread は Thread ホスト コントローラ インターフェース(THCI) これにより、テストハーネスがコンポーネントやプロダクトを、 参照プラットフォームの一つですGoogle Cloud のシリアルポート特性に応じて、 DUT は次のいずれかを実行できます。

既存の OpenThread リファレンス プラットフォームとして機能

DUT のシリアルポートが 115200 8-N-1 の設定で機能し、 デバイスは、物理デバイスがリセットされるたびに正しく応答する(たとえば、 デバイスが Windows マシンに正しく接続されていることを確認する] をクリックし、プラットフォームが OpenThread THCI ツールを使用できますこのツールを使用して、デバイスは テスト中の OpenThread リファレンス プラットフォーム。

  1. GRL テストハーネスが開いている場合は閉じます。
  2. デバイスを Windows マシンに接続します。
  3. Python pySerial を使用して、デバイスのシリアルポートのハードウェア識別子を検索します。 説明します。 <ph type="x-smartling-placeholder">
      </ph>
    1. 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. ゴールデン デバイスのリストを更新します。 <ph type="x-smartling-placeholder">
      </ph>
    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. Auto DUT モードを有効にします

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

DUT のシリアルポートが適切なシリアルポートで機能しない場合 設定している、または物理デバイスが応答した後でデバイスが正しく応答しない リセット(リセットから 3 ~ 6 秒以内に判読不能なコードを出力)し、OpenThread を THCI をカスタマイズして、テスト環境でデバイスを新しいプラットフォームとして扱うことができます。 活用する。

たとえば、Nordic Semiconductor を使用して THCI をカスタマイズするには、 nRF52840 プラットフォーム:

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

    1. OpenThread.py ファイルの名前を nRF52840.py に変更します。
    2. 最初の 3 つの「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 をインストールする インストールして実行します。
    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. 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. Auto DUT モードを有効にします

Auto DUT モードを有効にする

上記の 2 つの構成オプションのいずれかが完了したら、次の操作を行います。

  1. GRL テストハーネスを開くと、デバイス/ポートが新しいリファレンスとして表示されるようになります ダウンロードします
  2. [サポート対象] の下にある [Enable Auto DUT Device Selection] チェックボックスをオンにします。 ハードウェアのリスト。
  3. 設定するターゲット デバイス/ポートの [Set as DUT] ラジオボタンを選択します。 DUT として使用します。
OT 認定自動 DUT