การตั้งค่าการทำงานอัตโนมัติสำหรับการรับรอง

ต้องตั้งค่าเพิ่มเติมเพื่อให้การทดสอบการรับรองเป็นไปโดยอัตโนมัติ

ขั้นตอนการติดตั้งและกำหนดค่าทั้งหมดด้านล่างนี้เกิดขึ้นในเครื่อง Windows ที่ใช้ซอฟต์แวร์ GRL Test Harness ดาวน์โหลดและติดตั้งเวอร์ชันล่าสุด ชุดทดสอบเทรด GRL ก่อนหน้า ต่อไป

เมื่อติดตั้งแล้ว จะมีวิธีการอัตโนมัติ 2 วิธีสำหรับอุปกรณ์ที่อยู่ระหว่างการทดสอบ (DUT):

  1. เครื่องมือการทำงานอัตโนมัติของ OpenThread Harness
  2. โหมด Test Harness Auto DUT

เครื่องมือการทำงานอัตโนมัติของ OpenThread Harness

ติดตั้ง

  1. ติดตั้งซอฟต์แวร์ต่อไปนี้
    • Python 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 ยังรองรับการทดสอบแบบผสม ซึ่งอ้างอิง อุปกรณ์ที่ใช้ในกรอบการทดสอบแต่ละครั้งเป็นชุดอุปกรณ์แบบผสม ไม่ใช่ทั้งหมด อุปกรณ์เครื่องเดียวกัน ตัวอย่างเช่น แทนที่จะใช้บอร์ด TI CC2538 จำนวน 32 บอร์ด OpenThread สำหรับกรอบการทดสอบทั้งหมดช่วยให้คุณผสมผสานและจับคู่ได้ระหว่าง Thread ทั้ง 4 แบบ อุปกรณ์อ้างอิงสำหรับแต่ละกรอบการทดสอบได้ตามที่ต้องการ

หากต้องการใช้การทดสอบแบบผสม จำเป็นต้องมีการกำหนดค่าเพิ่มเติม:

  1. เพิ่มพารามิเตอร์ต่อไปนี้ลงในการกำหนดค่าโปรแกรมทดสอบอัตโนมัติ ไฟล์, พบที่ C:\GRL\Thread1.1\Config\Configuration.ini: วันที่
    EnableDeviceSelection = True
  2. ดาวน์โหลดไฟล์การกำหนดค่าโทโพโลยีจาก Thread กลุ่ม เพิ่มไฟล์นี้เป็น TopologyConfig.txt ใน C:\GRL\Thread1.1\Thread_Harness\TestScripts ไฟล์นี้แสดงรายละเอียดของ อุปกรณ์อ้างอิงที่จะใช้สำหรับแต่ละบทบาทในแต่ละกรอบการทดสอบ

ไฟล์การกำหนดค่าโทโพโลยีที่ระบุโดยกลุ่มเทรดสามารถแก้ไขได้สำหรับ การกำหนดค่าเตียงผสมอื่นๆ แต่สำหรับการรับรองอย่างเป็นทางการ ต้องใช้การกำหนดค่า

ค่าที่ใช้ได้ซึ่งใช้สำหรับอุปกรณ์อ้างอิงในไฟล์การกำหนดค่าโทโพโลยี ได้แก่

ค่าในไฟล์การกำหนดค่าโทโพโลยี อุปกรณ์อ้างอิงของ Test Harness
ARM ARM: NXP FRDM-K64F พร้อม Firefly 6LoWPAN Shield
NXP NXP(Freescale): ดองเกิล USB-KW24D512
OpenThread OpenThread: TI CC2538DK
SiLabs Silabs: EM358x USB Stick

รายการกรอบการทดสอบแต่ละรายการในไฟล์การกำหนดค่าโทโพโลยีจะต้องอยู่ใน บรรทัดและจัดรูปแบบเป็น role:device คู่ดังนี้

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

โหมด DUT แบบอัตโนมัติของการทดสอบสายบริการ

ซอฟต์แวร์ GRL Test Harness มีฟีเจอร์การค้นพบอัตโนมัติขั้นสูง (Auto DUT) ซึ่งช่วยเร่งกระบวนการตรวจสอบสแต็กข้อมูลอ้างอิงเทรด ผู้ให้บริการ

OpenThread แสดงตัวอย่าง อินเทอร์เฟซตัวควบคุมโฮสต์เทรด (THCI) ที่อนุญาตให้ชุดทดสอบควบคุมส่วนประกอบหรือผลิตภัณฑ์ได้เสมือน หนึ่งในแพลตฟอร์มอ้างอิง ตามลักษณะพอร์ตอนุกรมของ แพลตฟอร์มที่เฉพาะเจาะจง DUT อาจดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้

ทำหน้าที่เป็นแพลตฟอร์มอ้างอิง OpenThread ที่มีอยู่

หากพอร์ตอนุกรมของ DUT ทำงานภายใต้การตั้งค่า 115200 8-N-1 และ ตอบสนองได้อย่างถูกต้องหลังจากรีเซ็ตอุปกรณ์จริงทุกครั้ง (ตัวอย่างเช่น ยืนยันการเชื่อมต่อที่ถูกต้องของอุปกรณ์กับเครื่อง Windows) จากนั้นแพลตฟอร์ม ใช้เครื่องมือ OpenThread THCI ได้ เครื่องมือนี้ช่วยให้อุปกรณ์ทำหน้าที่เป็น แพลตฟอร์มอ้างอิง OpenThread ระหว่างการทดสอบ

  1. ปิด GRL Test Harness ถ้าเปิดอยู่
  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. เปิดใช้โหมด DUT อัตโนมัติ

ทำหน้าที่เป็นแพลตฟอร์มข้อมูลอ้างอิงใหม่

หากพอร์ตอนุกรมของ DUT ไม่ทำงานภายใต้พอร์ตอนุกรมที่ถูกต้อง หรืออุปกรณ์ไม่ตอบสนองอย่างถูกต้องหลังจากใช้อุปกรณ์จริง รีเซ็ต (เอาต์พุตโค้ดที่อ่านไม่ได้ภายใน 3-6 วินาทีหลังจากรีเซ็ต) จากนั้น OpenThread ปรับแต่ง THCI เพื่อทำให้อุปกรณ์เป็นแพลตฟอร์มใหม่ในการทดสอบ สายคาด

เช่น ในการกำหนดค่า THCI โดยใช้นอร์ดิกเซมิคอนดักเตอร์ แพลตฟอร์ม nRF52840:

  1. ปิด GRL Test Harness ถ้าเปิดอยู่
  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 บนเครื่อง 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 อัตโนมัติ

เปิดใช้โหมด DUT อัตโนมัติ

หลังจากที่ตัวเลือกการกำหนดค่าข้อใดข้อหนึ่งข้างต้นเสร็จสมบูรณ์แล้ว:

  1. เปิด GRL Test Harness อุปกรณ์/พอร์ตจะปรากฏเป็นข้อมูลอ้างอิงใหม่ อุปกรณ์
  2. เลือกช่องทำเครื่องหมายเปิดใช้การเลือกอุปกรณ์ DUT อัตโนมัติใต้ช่อง "รองรับ" รายการฮาร์ดแวร์
  3. เลือกปุ่มตัวเลือกตั้งค่าเป็น DUT ใต้อุปกรณ์/พอร์ตเป้าหมายที่จะตั้งค่า อุปกรณ์เป็น DUT
DUT สำหรับการรับรอง OT