Kiểm thử mạng luồng bằng hình ảnh

1. Giới thiệu

5abd22afa2f2ee9a.png.

Thread, OpenThread, OTNS, và Silk là gì?

Thread là giao thức nối mạng lưới không dây công suất thấp dựa trên IP, cho phép giao tiếp an toàn giữa thiết bị và thiết bị với đám mây. Mạng luồng có thể thích ứng với sự thay đổi của cấu trúc liên kết để tránh lỗi một điểm.

OpenThread do Google phát hành là một triển khai nguồn mở của Thread. Mặc dù kích thước mã và dung lượng bộ nhớ nhỏ, OpenThread hỗ trợ tất cả các tính năng được xác định trong Đặc tả luồng.

Bạn có thể sử dụng OpenThread Network Simulator (OTNS) để mô phỏng mạng Thread bằng cách chạy các nút OpenThread mô phỏng trên nền tảng posix. OTNS cung cấp giao diện Web (OTNS-Web) dễ sử dụng để trực quan hoá và vận hành các mạng Thread được mô phỏng.

Silk là một nền tảng kiểm thử hoàn toàn tự động dùng để xác thực chức năng, tính năng và hiệu suất hệ thống OpenThread với các thiết bị thực.

Kiến thức bạn sẽ học được

  • Khung xác minh chức năng của OpenThread: Silk
  • Xây dựng OpenThread cho các thiết bị thực có bật tính năng OTNS
  • Sử dụng giao diện OTNS-Web để theo dõi trạng thái của mạng Thread được tạo bằng cách chạy các trường hợp kiểm thử Silk

Lớp học lập trình này tập trung vào việc sử dụng Silk với OTNS. Các tính năng khác của Silk và OTNS không được đề cập.

Bạn cần có

Phần cứng:

  • 6 bảng phát triển Bắc Âu Bán dẫn nRF52840
  • 6 cáp USB với Micro-USB để kết nối bo mạch
  • bộ chia USB

Phần mềm:

  • Linux x86_64.
  • Git.
  • 1.11 trở lên.
  • Trình duyệt web. OTNS-Web sử dụng trình duyệt web để hiển thị mô phỏng.

Điều kiện tiên quyết:

2. Điều kiện tiên quyết

Hoàn thành các lớp học lập trình cơ bản trước đây

Đang kiểm tra các điều kiện tiên quyết về gói

Hãy đảm bảo đáp ứng tất cả các điều kiện tiên quyết.

  1. Chạy which otns để kiểm tra xem tệp thực thi otns có thể tìm kiếm được trong $PATH hay không.
  2. Chạy which wpantund để đảm bảo wpantund đang hoạt động.
  3. Đảm bảo tất cả chuỗi công cụ ARM GNU, J-Link và nrfjprog đều có sẵn.

Lưu ý: Vui lòng tham khảo tài liệu được liên kết để xem hướng dẫn về cách thiết lập. Điều kiện tiên quyết số 1 là về Mô phỏng mạng luồng bằng cách sử dụng OTNS và các lệnh khác là của Build a Thread network with nRF52840 board and OpenThread (Xây dựng mạng luồng với bo mạch nRF52840).

3. Thiết lập lụa

Để sao chép Silk và thiết lập môi trường, chạy các lệnh sau trong thư mục nguồn của bạn:

$ git clone https://github.com/openthread/silk.git
$ cd silk
$ ./bootstrap.sh
$ sudo make install-cluster

Xác định tệp cấu hình phần cứng

Để cho phép Silk thu thập các tài nguyên phần cứng kiểm thử có sẵn được kết nối với máy của bạn, hãy xác định tệp hwconfig.ini theo định dạng sau:

[DEFAULT]
ClusterID: 0
LayoutCenter: 300, 300
LayoutRadius: 100

[Dev-8A7D]
HwModel: Nrf52840
HwRev: 1.0
InterfaceSerialNumber: E1A5012E8A7D
USBInterfaceNumber: 1
DutSerial: 683536778

Công cụ có tên usbinfo được cài đặt dưới dạng một phần của Silk, có thể dùng để tìm Số sê-ri giao diện và Số giao diện USB. DutSerial là số SN được in trên chip hoặc do usbinfo hiển thị cho các sản phẩm J-Link.

Các trường LayoutCenterLayoutRadius trong phần [DEFAULT] xác định hình dạng của bố cục khi thiết bị hiển thị trên giao diện người dùng web. Việc đặt các thông số này ở mức giá trị được trình bày ở đây có thể là một điểm khởi đầu tốt.

Tiếp theo, mã này xác định một phần cho mỗi thiết bị thử nghiệm và cung cấp thông tin phần cứng có liên quan.

4. Biên dịch OpenThread khi bật OTNS

Hình ảnh tòa nhà và nhấp nháy

Theo mặc định, các thiết bị OpenThread không phát ra các thông báo liên quan đến OTNS. Để cho phép các bảng phát triển phát thông báo trạng thái tới các giao diện nhật ký cần thiết cho hình ảnh hoá OTNS, hãy chạy lệnh sau trong thư mục nguồn OpenThread để tạo hình ảnh FTD và chuyển đổi hình ảnh đó sang định dạng thập lục phân.

$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive
$ cd ot-nrf528xx
$ ./script/bootstrap
$ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON
$ cd ./build/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

Để cài đặt bảng điều khiển, hãy làm theo hướng dẫn trong bước 4 của Lớp học lập trình về Xây dựng mạng lưới luồng để sử dụng nrfjprog. Sau đó, kết nối tất cả các bo mạch qua cổng USB nRF với máy chủ. Cùng một bộ cáp USB với Micro-USB có thể được ngắt kết nối khỏi cổng J-Link và được kết nối với cổng USB nRF của bo mạch nRF52840. Do đó, chỉ cần thực hiện kiểm tra 6 cáp này là bạn có thể thực hiện. Để tránh rắc rối, hãy sử dụng 12 cáp và kết nối với cả hai cổng.

5. Chạy máy chủ OTNS với chế độ thực

Việc chạy OTNS với các thông số mặc định cho phép người dùng mô phỏng một luồng Thread. Để sử dụng công cụ này làm công cụ trực quan hóa cho mạng thực tế, hãy chạy công cụ này bằng:

otns -raw -real -ot-cli otns-silk-proxy

Các đối số này cho OTNS biết các thông báo gRPC và UDP mô tả cách trình bày trực quan mạng Thread, thay vì chạy nhiều quy trình ot-cli để mô phỏng mạng. Trình duyệt của bạn sẽ tự động mở trang hiển thị với một canvas trống.

4dd5b41bf7e71334.png.

6. Chạy các trường hợp kiểm thử Silk với hỗ trợ OTNS

Silk là một nền tảng thử nghiệm hoàn toàn tự động để xác thực chức năng, tính năng và hiệu suất hệ thống OpenThread với các thiết bị thực. Hướng dẫn trong dự án README trình bày cách sử dụng hàm này.

Tệp silk_run_test.py nằm tại silk/unit_tests cung cấp cho bạn một khởi đầu thuận lợi. Silk hỗ trợ OTNS khi chạy một trường hợp kiểm thử. Vì dịch vụ chế độ thực OTNS đã chạy cục bộ, nên chúng ta chỉ cần sửa đổi tệp silk_run_test.py với các vị trí mong muốn cho tệp nhật ký đầu ra, tập lệnh kiểm tra đầu vào và tệp hwconfig.ini. Đối số -s localhost yêu cầu Silk gửi thông báo OTNS đến localhost.

Ví dụ: người dùng có thể chạy chương trình kiểm thử có tên ot_test_form_network.py bằng cách sửa đổi tệp silk_run_test.py sau đây. /opt/openthread_test/ là đường dẫn mặc định mà Silk sử dụng cho tệp đầu ra và tệp cấu hình nhật ký, nhưng bạn có thể sử dụng bất kỳ đường dẫn nào.

silk_run_test.py

import datetime
import os

from silk.tests import silk_run

RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
                  datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'

os.chdir('~/src/silk/silk/tests/')

timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')

run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'

argv = [
    'tests/silk_run.py',
    '-v2',
    '-c', CONFIG_PATH + 'hwconfig.ini',
    '-d', run_log_path,
    '-s', 'localhost',
    'ot_test_form_network.py'
]

silk_run.SilkRunner(argv=argv)

Hình ảnh hóa cấu trúc liên kết của mạng hình thành sẽ hiển thị trên giao diện người dùng web OTNS.

ee443b66e0a6620b.png

Góc trên cùng bên trái hiển thị thống kê hình ảnh hóa, phiên bản OT và tiêu đề thử nghiệm. Góc dưới cùng bên trái có các nút điều khiển của cửa sổ nhật ký hiển thị ở bên phải. Ban đầu, các nút được thêm nhưng không có mạng được hình thành. Khi thử nghiệm diễn ra, các chế độ và vai trò của mỗi nút thay đổi và các liên kết cũng được tạo.

5c38e2c72519e620.png.

7. Xin chúc mừng

Xin chúc mừng! Bạn đã chạy thành công một thử nghiệm Silk trên các thiết bị Chủ đề vật lý và trực quan hóa nó bằng cách sử dụng OTNS!

Bạn đã thực thi kiểm thử Silk bằng bảng phát triển được cài đặt ROM bằng chương trình cơ sở có hỗ trợ OTNS. Hội đồng sẽ báo cáo trạng thái của họ cho máy chủ Silk, máy chủ này sẽ giám sát và tổng hợp tất cả các máy chủ, đồng thời gửi chúng tới dịch vụ OTNS cùng với thông tin kiểm tra khác. OTNS chạy ở chế độ thực tế khi hình ảnh hoá mạng Thread trên giao diện web.

Tiếp theo là gì?

Hãy thử chạy các trường hợp kiểm thử OpenThread khác có trong gói Silk.

Tài liệu đọc thêm

Hãy xem openthread.ioSilk để xem nhiều tài nguyên OpenThread.

Tài liệu tham khảo