Thiết lập tính năng tự động hóa chứng nhận

Để tự động hóa các bài kiểm tra cấp giấy chứng nhận, bạn cần thiết lập thêm.

Tất cả các bước cài đặt và định cấu hình bên dưới xảy ra trên máy Windows chạy phần mềm Kiểm tra GRL. Tải và cài đặt Kiểm tra chuỗi GRL mới nhất trước khi tiếp tục.

Sau khi cài đặt, có hai phương pháp tự động hóa cho thiết bị đang được thử nghiệm (DUT):

  1. Công cụ tự động hóa chuỗi chủ đề OpenThread
  2. Kiểm tra chế độ Tự động theo dõi tự động (DUT)

Công cụ tự động hóa chuỗi chủ đề OpenThread

Cài đặt

  1. Cài đặt phần mềm sau:
    • Python
    • Git cho Windows (Bạn nên hỗ trợ Ash)
  2. Sao chép kho lưu trữ OpenThread để nhận tập lệnh tự động hóa:
    git clone https://github.com/openthread/openthread
    
  3. Yêu cầu cài đặt Python:
    cd tools/harness-automation
    pip install -r requirements.txt
    
  4. Cài đặt cả Google ChromeChromeDriver.

Định cấu hình

  1. Tạo một tệp cấu hình cho công cụ tự động:
    cp autothreadharness/settings_sample.py autothreadharness/settings.py
    
  2. Cập nhật tệp cấu hình mới đó theo hướng dẫn trong tệp.
  3. Thêm thông số sau vào tệp cấu hình Kiểm tra độ mạnh, được tìm thấy tại C:\GRL\Thread1.1\Config\Configuration.ini:
    BrowserAutoNavigate = False

Hỗ trợ thử nghiệm hỗn hợp

Công cụ tự động hóa sức mạnh cũng hỗ trợ các thử nghiệm hỗn hợp, trong đó các thiết bị tham chiếu được dùng trong mỗi trường hợp thử nghiệm là một tập hợp các thiết bị thay vì tất cả các thiết bị giống nhau. Ví dụ: thay vì sử dụng 32 bảng TI CC2538 chạy OpenThread cho tất cả các trường hợp thử nghiệm, bạn có thể kết hợp và khớp giữa tất cả 4 thiết bị tham chiếu Thread cho từng trường hợp thử nghiệm như mong muốn.

Để sử dụng thử nghiệm hỗn hợp, bạn cần phải định cấu hình thêm:

  1. Thêm thông số bổ sung sau vào tệp cấu hình Kiểm tra dây chuyền, có tại C:\GRL\Thread1.1\Config\Configuration.ini:
    EnableDeviceSelection = True
  2. Tải tệp cấu hình cấu trúc liên kết xuống từ Nhóm chuỗi. Thêm tệp này dưới dạng TopologyConfig.txt vào C:\GRL\Thread1.1\Thread_Harness\TestScripts. Tệp này nêu chi tiết thiết bị tham chiếu nào sẽ sử dụng cho từng vai trò trong mỗi trường hợp thử nghiệm.

Bạn có thể sửa đổi tệp cấu hình cấu trúc liên kết do Nhóm chuỗi cung cấp cho các cấu hình giường hỗn hợp khác, nhưng để sử dụng chứng nhận chính thức, bạn phải sử dụng cấu hình gốc.

Các giá trị hợp lệ để sử dụng cho thiết bị tham chiếu trong tệp cấu hình cấu trúc liên kết là:

Giá trị trong tệp cấu hình cấu trúc liên kết Thiết bị tham chiếu thử nghiệm
ARM ARM: NXP FRDM-K64F với Firefly 6LoWPAN Shield
NXP NXP(Freescale): USB-KW24D512 Dongles
OpenThread OpenThread: TI CC2538DK
SiLabs Silabs: Thanh USB EM358x

Mỗi mục nhập thử nghiệm trong tệp cấu hình cấu trúc liên kết phải nằm trên một dòng riêng và được định dạng trong các cặp role:device như sau:

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

Kiểm tra chế độ Tự động DUT ở chế độ Tự động

Phần mềm GRL Test Harness cung cấp tính năng tự động khám phá nâng cao (Auto DUT) giúp tăng tốc quá trình xác thực cho các nhà cung cấp ngăn xếp tham chiếu chuỗi.

OpenThread cung cấp một ví dụ Giao diện bộ điều khiển máy chủ lưu trữ (THCI) cho phép Kiểm tra quy trình kiểm soát thành phần hoặc sản phẩm của bạn như thể đây là một trong các nền tảng tham chiếu. Theo đặc điểm cổng nối tiếp của nền tảng cụ thể, DUT của bạn có thể:

Đóng vai trò là nền tảng tham chiếu OpenThread hiện có

Nếu cổng nối tiếp của DUT hoạt động trong phần cài đặt 115200 8-N-1 và thiết bị phản hồi chính xác sau mỗi lần đặt lại thiết bị thực (ví dụ: để xác nhận kết nối hợp lệ của thiết bị với máy Windows), thì nền tảng có thể sử dụng công cụ OpenThread THCI. Công cụ này cho phép thiết bị đóng vai trò là nền tảng tham chiếu OpenThread trong quá trình thử nghiệm.

  1. Đóng dây Kiểm tra GRL (nếu đang mở).
  2. Đính kèm thiết bị vào máy Windows.
  3. Tìm giá trị nhận dạng phần cứng của cổng nối tiếp thiết bị, bằng mô-đun Python pySerial:
    1. Cài đặt pySerial trên máy Windows.
    2. Sử dụng Python trên dòng lệnh Windows để liệt kê tất cả giá trị nhận dạng phần cứng (VID và PID) cho các thiết bị đã kết nối với máy. Trong dữ liệu đầu ra này, một thiết bị được kết nối với một giá trị nhận dạng của VID=1366 và PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Nếu đã biết cổng COM, bạn có thể sử dụng một lệnh khác. Ví dụ: nếu cổng COM là 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. Cập nhật danh sách Thiết bị Vàng:
    1. Mở C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Cập nhật nhóm OpenThread trong mảng GoldenDeviceHardwareIds bằng VID và PID của(các) thiết bị:
      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. Bật chế độ Tự động ghi nhớ.

Đóng vai trò là một nền tảng tham chiếu mới

Nếu cổng nối tiếp của DUT không hoạt động trong chế độ cài đặt cổng nối tiếp thích hợp hoặc thiết bị không phản hồi chính xác sau khi đặt lại thiết bị thực (bạn có thể đọc mã trong vòng 3-6 giây sau khi đặt lại), thì OpenThread THCI có thể được tùy chỉnh để coi thiết bị là một nền tảng mới trong tính năng Kiểm tra độ mạnh.

Ví dụ: để tùy chỉnh THCI bằng nền tảng Nordic Semiconductor nRF52840:

  1. Đóng dây Kiểm tra GRL (nếu đang mở).
  2. Sửa đổi /tools/harness-thci/OpenThread.py dựa trên các đặc điểm UART của thiết bị mục tiêu. Các tùy chọn sửa đổi có thể khác nhau giữa các thiết bị mục tiêu. Đối với nền tảng Nordic nRF52840:

    1. Đổi tên tệp OpenThread.py thành nRF52840.py.
    2. Thay đổi ba lần xuất hiện đầu tiên của "OpenThread" thành "nRF52840":

      >> Device : nRF52840 THCI
      >> Class : nRF52840
      
      class nRF52840(IThci):
      
    3. Thay đổi các thông số cổng nối tiếp:

      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. Thay đổi thời gian ngủ để loại bỏ tác động của mã đầu ra không đọc được sau khi đặt lại thiết bị:

      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. Sao chép tệp nRF52840.py đã sửa đổi vào C:\GRL\Thread1.1\Thread_Harness\THCI

  4. Thêm thông tin nền tảng mới vào tính năng Kiểm tra kết hợp:

    1. Hãy tạo một biểu tượng (ở định dạng png hoặc jpg) để giúp bạn dễ dàng phân biệt nền tảng của bạn và sao chép sang C:\GRL\Thread1.1\Web\images.
    2. Cập nhật C:\GRL\Thread1.1\Web\data\deviceInputFields.xml bằng một phần DEVICE mới, trong đó thông số thumbnail là tệp biểu tượng:

      <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. Đính kèm thiết bị vào máy Windows.

  6. Tìm giá trị nhận dạng phần cứng của cổng nối tiếp thiết bị, bằng mô-đun Python pySerial:

    1. Cài đặt pySerial trên máy Windows.
    2. Sử dụng Python trên dòng lệnh Windows để liệt kê tất cả giá trị nhận dạng phần cứng (VID và PID) cho các thiết bị đã kết nối với máy. Trong dữ liệu đầu ra này, một thiết bị được kết nối với một giá trị nhận dạng của VID=1366 và PID=1015:
      python -m serial.tools.list_ports -v
      COM10
          desc: USB Serial Port (COM10)
          hwid: USB\VID_1366+PID_1015+MI_00
    3. Nếu đã biết cổng COM, bạn có thể sử dụng một lệnh khác. Ví dụ: nếu cổng COM là 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. Cập nhật danh sách Thiết bị Vàng:

    1. Mở C:\GRL\Thread1.1\Config\Configuration.ini.
    2. Thêm một nhóm nền tảng mới vào mảng GoldenDeviceHardwareIds bằng VID và PID của thiết bị:
      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. Bật chế độ Tự động ghi nhớ.

Bật chế độ Tự động ghi nhớ

Sau khi hoàn tất một trong hai tùy chọn cấu hình nêu trên:

  1. Mở biểu tượng Kiểm tra GRL, thiết bị/cổng hiện xuất hiện dưới dạng một thiết bị tham chiếu mới.
  2. Chọn hộp đánh dấu Bật tự động Bộ nhớ DUT bên dưới danh sách Phần cứng được hỗ trợ.
  3. Chọn nút Đặt làm DUT bên dưới thiết bị/cổng đích để đặt thiết bị làm DUT.
Tự động ghi nhận chứng chỉ OT