Để tự động hóa các bài kiểm tra chứng nhận, cần phải thiết lập bổ sung.
Tất cả các bước cài đặt và cấu hình bên dưới diễn ra trên máy Windows chạy phần mềm GRL Test Harness. Tải xuống và cài đặt Khai thác kiểm tra luồng 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 thử nghiệm (DUT):
Công cụ tự động hóa khai thác OpenThread
Tải về
- Cài đặt phần mềm sau:
- Python 2.7
- Git dành cho Windows (rất nên hỗ trợ Bash)
- Sao chép kho lưu trữ OpenThread để lấy các tập lệnh tự động hóa:
git clone https://github.com/openthread/openthread
- Yêu cầu cài đặt Python:
cd tools/harness-automation
pip install -r requirements.txt
- Cài đặt cả Google Chrome và ChromeDriver .
Cấu hình
- Tạo tệp cấu hình cho công cụ tự động hóa:
cp autothreadharness/settings_sample.py autothreadharness/settings.py
- Cập nhật tệp cấu hình mới đó theo hướng dẫn trong tệp.
- Thêm thông số sau vào tệp cấu hình Khai thác Kiểm tra, đượ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 Khai thác cũng hỗ trợ các nền thử nghiệm hỗn hợp, trong đó các thiết bị tham chiếu được sử dụng trong mỗi trường hợp thử nghiệm là một tập hợp các thiết bị hỗn hợp thay vì tất cả cùng một thiết bị. Ví dụ: thay vì sử dụng 32 bo mạch TI CC2538 chạy OpenThread cho tất cả các trường hợp thử nghiệm, bạn có thể trộn và kết hợp giữa tất cả bốn thiết bị tham chiếu Chủ đề cho mỗi trường hợp thử nghiệm như mong muốn.
Để sử dụng các tấm thử nghiệm hỗn hợp, cần có cấu hình bổ sung:
- Thêm tham số bổ sung sau vào tệp cấu hình Khai thác thử nghiệm, được tìm thấy tại
C:\GRL\Thread1.1\Config\Configuration.ini
:EnableDeviceSelection = True
- Tải xuống tệp cấu hình cấu trúc liên kết từ Nhóm Chủ đề . Thêm tệp này dưới dạng
TopologyConfig.txt
vàoC:\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.
Tệp cấu hình cấu trúc liên kết do Nhóm chủ đề cung cấp có thể được sửa đổi cho các cấu hình giường hỗn hợp khác, nhưng để được chứng nhận chính thức, cấu hình gốc phải được sử dụng.
Các giá trị hợp lệ để sử dụng cho các 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 | Kiểm tra thiết bị tham chiếu khai thác |
---|---|
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 trường hợp kiểm tra 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 biệt và được định dạng theo role:device
cặp role:device
như sau:
5.3.10-Leader:NXP,Router_1:OpenThread,BorderRouter:OpenThread,MED_1:ARM
Kiểm tra khai thác chế độ DUT tự động
Phần mềm Khai thác Kiểm tra GRL 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 nhận cho các nhà cung cấp ngăn xếp tham chiếu Chủ đề.
OpenThread cung cấp một ví dụ về Giao diện điều khiển máy chủ lưu trữ (THCI) cho phép Khai thác thử nghiệm kiểm soát thành phần hoặc sản phẩm của bạn như thể nó là một trong những 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ể của bạn, DUT của bạn có thể:
Hoạt động như 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 theo 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ị vật lý (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ị hoạt động như nền tảng tham chiếu OpenThread trong quá trình thử nghiệm.
- Đóng Khai thác Kiểm tra GRL, nếu nó đang mở.
- Gắn thiết bị vào máy Windows.
- Tìm mã định danh phần cứng cổng nối tiếp thiết bị, sử dụng mô-đun Python pySerial:
- Cài đặt pySerial trên máy Windows.
- Sử dụng Python trên dòng lệnh Windows để liệt kê tất cả các số nhận dạng phần cứng (VID và PID) cho các thiết bị được kết nối với máy. Trong đầu ra này, một thiết bị được kết nối với số nhận dạng VID = 1366 và PID = 1015:
python -m serial.tools.list_ports -v
COM10desc: USB Serial Port (COM10)
hwid: USB\VID_1366+PID_1015+MI_00
- Nếu bạn đã 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']
- Cập nhật danh sách Thiết bị Vàng:
- Mở
C:\GRL\Thread1.1\Config\Configuration.ini
. - Cập nhật nhóm OpenThread trong mảng
GoldenDeviceHardwareIds
với 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']}
- Mở
- Bật chế độ DUT tự động .
Hoạt động như 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 theo 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ị vật lý (xuất mã không đọc được trong vòng 3-6 giây sau khi đặt lại), thì OpenThread THCI có thể được tùy chỉnh để xử lý thiết bị như một nền tảng mới trong Khai thác thử nghiệm.
Ví dụ: để tùy chỉnh THCI bằng cách sử dụng nền tảng Nordic Semiconductor nRF52840 :
- Đóng Khai thác kiểm tra GRL, nếu nó đang mở.
Sửa đổi
/tools/harness-thci/OpenThread.py
dựa trên các đặc điểm UART của thiết bị đích. Các sửa đổi có thể khác nhau giữa các thiết bị mục tiêu. Trong trường hợp của nền tảng Nordic nRF52840:- Đổi tên tệp
OpenThread.py
thànhnRF52840.py
. 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):
Thay đổi 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()
Thay đổi thời gian ngủ để loại bỏ tác động của đầu ra mã 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)
- Đổi tên tệp
Sao chép tệp
nRF52840.py
đã sửa đổi vàoC:\GRL\Thread1.1\Thread_Harness\THCI
Thêm thông tin nền tảng mới vào Khai thác thử nghiệm:
- 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 mình hơn và sao chép nó vào
C:\GRL\Thread1.1\Web\images
. Cập nhật
C:\GRL\Thread1.1\Web\data\deviceInputFields.xml
với phầnDEVICE
mới, trong đó tham 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>
- 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 mình hơn và sao chép nó vào
Gắn thiết bị vào máy Windows.
Tìm mã định danh phần cứng cổng nối tiếp thiết bị, sử dụng mô-đun Python pySerial:
- Cài đặt pySerial trên máy Windows.
- Sử dụng Python trên dòng lệnh Windows để liệt kê tất cả các số nhận dạng phần cứng (VID và PID) cho các thiết bị được kết nối với máy. Trong đầu ra này, một thiết bị được kết nối với số nhận dạng VID = 1366 và PID = 1015:
python -m serial.tools.list_ports -v
COM10desc: USB Serial Port (COM10)
hwid: USB\VID_1366+PID_1015+MI_00
- Nếu bạn đã 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']
Cập nhật danh sách Thiết bị Vàng:
- Mở
C:\GRL\Thread1.1\Config\Configuration.ini
. - Thêm một nhóm nền tảng mới trong mảng
GoldenDeviceHardwareIds
với 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'}
- Mở
Bật chế độ DUT tự động
Sau khi một trong hai tùy chọn cấu hình trên hoàn tất:
- Mở GRL Test Harness, thiết bị / cổng bây giờ xuất hiện như một thiết bị tham chiếu mới.
- Chọn hộp kiểm Bật tính năng chọn thiết bị tự động DUT bên dưới danh sách Phần cứng được hỗ trợ.
- Chọn nút radio Đặt làm DUT bên dưới thiết bị / cổng đích để đặt thiết bị làm DUT.
