Penyiapan Otomatisasi Sertifikasi

Untuk mengotomatiskan pengujian sertifikasi, diperlukan penyiapan tambahan.

Semua langkah penginstalan dan konfigurasi di bawah dilakukan di komputer Windows yang menjalankan software GRL Test Harness. Download dan instal GRL Thread Test Harness terbaru sebelum melanjutkan.

Setelah diinstal, ada dua metode otomatisasi untuk perangkat yang sedang diuji (DUT):

  1. Alat Otomatisasi Harness OpenThread
  2. Mode DUT Otomatis Test Harness

Alat Otomatisasi Harness OpenThread

Instal

  1. Instal software berikut:
    • Python 2.7
    • Git untuk Windows (sangat direkomendasikan untuk mendukung Bash)
  2. Buat clone repositori OpenThread untuk mendapatkan skrip otomatisasi:
    git clone https://github.com/openthread/openthread
    
  3. Instal persyaratan Python:
    cd tools/harness-automation
    pip install -r requirements.txt
    
  4. Instal Google Chrome dan ChromeDriver.

Konfigurasi

  1. Buat file konfigurasi untuk alat otomatisasi:
    cp autothreadharness/settings_sample.py autothreadharness/settings.py
    
  2. Perbarui file konfigurasi baru tersebut sesuai dengan petunjuk dalam file.
  3. Tambahkan parameter berikut ke file konfigurasi Test Harness, yang ada di C:\GRL\Thread1.1\Config\Configuration.ini:
    BrowserAutoNavigate = False

Dukungan testbed campuran

Alat Otomatisasi Harness juga mendukung testbed campuran, tempat perangkat rujukan yang digunakan dalam setiap kasus pengujian adalah kumpulan perangkat campuran, bukan semua perangkat yang sama. Misalnya, alih-alih menggunakan 32 papan TI CC2538 yang menjalankan OpenThread untuk semua kasus pengujian, Anda dapat mencampur dan mencocokkan keempat perangkat referensi Thread untuk setiap kasus pengujian sesuai keinginan.

Untuk menggunakan platform pengujian campuran, konfigurasi tambahan diperlukan:

  1. Tambahkan parameter tambahan berikut ke file konfigurasi Test Harness, yang ada di C:\GRL\Thread1.1\Config\Configuration.ini:
    EnableDeviceSelection = True
  2. Download file konfigurasi topologi dari Thread Group. Tambahkan file ini sebagai TopologyConfig.txt ke C:\GRL\Thread1.1\Thread_Harness\TestScripts. File ini menjelaskan perangkat referensi yang akan digunakan untuk setiap peran dalam setiap kasus pengujian.

File konfigurasi topologi yang disediakan oleh Thread Group dapat diubah untuk konfigurasi tempat tidur campuran lainnya, tetapi untuk sertifikasi resmi, konfigurasi asli harus digunakan.

Nilai valid yang akan digunakan untuk perangkat referensi dalam file konfigurasi topologi adalah:

Nilai dalam file konfigurasi topologi Perangkat referensi Test Harness
ARM ARM: NXP FRDM-K64F dengan Firefly 6LoWPAN Shield
NXP NXP(Freescale): Dongle USB-KW24D512
OpenThread OpenThread: TI CC2538DK
SiLabs Silabs: EM358x USB Stick

Setiap entri kasus pengujian dalam file konfigurasi topologi harus berada di baris terpisah dan diformat dalam pasangan role:device sebagai berikut:

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

Mode DUT Otomatis Test Harness

Software GRL Test Harness menyediakan fitur penemuan otomatis tingkat lanjut (DUT Otomatis) yang mempercepat proses validasi untuk vendor stack referensi Thread.

OpenThread menyediakan contoh Thread Host Controller Interface (THCI) yang memungkinkan Test Harness mengontrol komponen atau produk Anda seolah-olah itu adalah salah satu platform referensi. Menurut karakteristik port serial platform spesifik Anda, DUT Anda dapat:

Bertindak sebagai platform referensi OpenThread yang ada

Jika port serial DUT berfungsi di bawah setelan 115200 8-N-1, dan perangkat merespons dengan benar setelah setiap reset perangkat fisik (misalnya, untuk mengonfirmasi koneksi perangkat yang valid ke mesin Windows), maka platform dapat menggunakan alat THCI OpenThread. Alat ini memungkinkan perangkat berfungsi sebagai platform referensi OpenThread selama pengujian.

  1. Tutup GRL Test Harness jika terbuka.
  2. Hubungkan perangkat ke mesin Windows.
  3. Temukan ID hardware port serial perangkat, menggunakan modul pySerial Python:
    1. Instal pySerial di komputer Windows.
    2. Gunakan Python di command line Windows untuk mencantumkan semua ID hardware (VID dan PID) untuk perangkat yang terhubung ke mesin. Dalam output ini, satu perangkat terhubung dengan ID VID=1366 dan PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Jika sudah mengetahui port COM, Anda dapat menggunakan perintah lain. Misalnya, jika port COM adalah 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. Perbarui daftar Perangkat Unggulan:
    1. Buka C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Perbarui grup OpenThread dalam array GoldenDeviceHardwareIds dengan VID dan PID perangkat:
      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. Aktifkan mode DUT Otomatis.

Berfungsi sebagai platform referensi baru

Jika port serial DUT tidak berfungsi dengan setelan port serial yang tepat, atau perangkat tidak merespons dengan benar setelah perangkat direset secara fisik (menghasilkan kode yang tidak dapat dibaca dalam waktu 3-6 detik setelah direset), maka THCI OpenThread dapat disesuaikan untuk memperlakukan perangkat sebagai platform baru di Test Harness.

Misalnya, untuk menyesuaikan THCI menggunakan platform Nordic Semiconductor nRF52840:

  1. Tutup GRL Test Harness jika terbuka.
  2. Ubah /tools/harness-thci/OpenThread.py berdasarkan karakteristik UART perangkat target. Perubahan dapat berbeda di antara perangkat target. Dalam kasus platform Nordic nRF52840:

    1. Ganti nama file OpenThread.py menjadi nRF52840.py.
    2. Ubah tiga kemunculan pertama "OpenThread" menjadi "nRF52840":

      >> Device : nRF52840 THCI
      >> Class : nRF52840
      
      class nRF52840(IThci):
      
    3. Ubah parameter port serial:

      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. Ubah waktu tunggu agar tidak ada dampak dari output kode yang tidak dapat dibaca setelah perangkat direset:

      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. Salin file nRF52840.py yang telah diubah ke C:\GRL\Thread1.1\Thread_Harness\THCI

  4. Tambahkan informasi platform baru ke Test Harness:

    1. Buat ikon (dalam format png atau jpg) untuk mempermudah membedakan platform Anda dan salin ke C:\GRL\Thread1.1\Web\images.
    2. Perbarui C:\GRL\Thread1.1\Web\data\deviceInputFields.xml dengan bagian DEVICE baru, dengan parameter thumbnail adalah file ikon:

      <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. Hubungkan perangkat ke mesin Windows.

  6. Temukan ID hardware port serial perangkat, menggunakan modul pySerial Python:

    1. Instal pySerial di komputer Windows.
    2. Gunakan Python di command line Windows untuk mencantumkan semua ID hardware (VID dan PID) untuk perangkat yang terhubung ke mesin. Dalam output ini, satu perangkat terhubung dengan ID VID=1366 dan PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Jika sudah mengetahui port COM, Anda dapat menggunakan perintah lain. Misalnya, jika port COM adalah 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. Perbarui daftar Perangkat Emas:

    1. Buka C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Tambahkan grup platform baru dalam array GoldenDeviceHardwareIds dengan VID dan PID perangkat:
      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. Aktifkan mode DUT Otomatis.

Mengaktifkan mode DUT Otomatis

Setelah salah satu dari dua opsi konfigurasi di atas selesai:

  1. Buka GRL Test Harness, perangkat/port kini muncul sebagai perangkat referensi baru.
  2. Centang kotak Enable Auto DUT Device Selection di bawah daftar Hardware yang Didukung.
  3. Pilih tombol pilihan Setel sebagai DUT di bagian perangkat/port target untuk menyetel perangkat sebagai DUT.
DUT Otomatis Sertifikasi OT