Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

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

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

1. Giới thiệu

5abd22afa2f2ee9a.pngS

Chuỗi (thread), OpenThread, OTNS và lụa là gì?

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

OpenThread do Google phát hành là phương thức 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ả tính năng được xác định trong Đặc tả luồng.

Bạn có thể sử dụng Trình mô phỏng mạng OpenThread (OTNS) để mô phỏng mạng Thread bằng cách chạy các nút OpenThread mô phỏng trên các nền tảng posix. OTNS cung cấp giao diện web dễ sử dụng (OTNS-Web) để hình ảnh hóa và vận hành các mạng Luồng mô phỏng.

Silk là một nền tảng thử nghiệm 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 của 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:
  • 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 Mạng chuỗi được hình thành bằng cách chạy các trường hợp kiểm tra Lụa

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

Những gì bạn cần

Phần cứng:

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

Phần mềm:

Đ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

Kiểm tra điều kiện tiên quyết của 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 có thể tìm kiếm được tệp thực thi otns trong $PATH hay không.
  2. Chạy which wpantund để đảm bảo wpantund có sẵn.
  3. Đảm bảo tất cả các gó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 để biết hướng dẫn thiết lập. Điều kiện tiên quyết số 1 là từ Simulate Thread Networks by OTNS (Mô phỏng mạng luồng bằng cách sử dụng OTNS) và các mạng khác là Build a Thread network with nRF52840 Board và OpenThread (Tạo mạng luồng bằng bảng nRF52840).

3. Thiết lập lụa

Để sao chép lụa và thiết lập môi trường, hãy chạy các lệnh sau trong thư mục nguồ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 lụa 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

Một công cụ có tên usbinfo được cài đặt dưới dạng một phần của lụa. Bạn có thể sử dụng công cụ này để 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 được hiển thị bởi usbinfo cho các sản phẩm J-Link.

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

Sau đó, mã này xác định một phần cho từng 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 thông báo liên quan đến OTNS. Để cho phép các bảng phát triển phát ra thông báo trạng thái cho các giao diện nhật ký cần thiết đối với hình ảnh OTNS, hãy chạy lệnh sau trong thư mục nguồn OpenThread để tạo một hình ảnh FTD và chuyển đổi hình ảnh đó sang định dạng hex.

$ 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 board, hãy làm theo hướng dẫn ở bước 4 của Lớp học lập trình về Xây dựng mạng Thread để sử dụng nrfjprog. Sau đó, kết nối tất cả các bảng qua cổng USB nRF với máy chủ. Bạn có thể ngắt kết nối cùng một bộ cáp USB với Micro-USB khỏi các cổng J-Link và kết nối với các cổng USB nRF của bảng phát triển nRF52840. Do đó, bạn chỉ có thể thực hiện 6 cáp kiểm tra này. Để tránh gặp rắc rối, hãy 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 tham số mặc định cho phép người dùng mô phỏng Mạng luồng. Để dùng công cụ này làm công cụ trực quan cho mạng thực tế, hãy chạy công cụ đó với:

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

Các đối số này yêu cầu OTNS dự kiến các thông báo gRPC và UDP mô tả cách trực quan hoá 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.pngS

6. Chạy các trường hợp kiểm thử lụa có hỗ trợ OTNS

lụa 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 của 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 dự án đó.

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

Ví dụ: bạn có thể chạy thử nghiệm tên là ot_test_form_network.py bằng cách sử dụng các thao tác sửa đổi sau đây đối với tệp silk_run_test.py. /opt/openthread_test/ là đường dẫn mặc định mà lụa sử dụng cho đầu ra nhật ký và tệp cấu hình, 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 cấu trúc liên kết của mạng được tạo sẽ xuất hiện 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ị số liệu thống kê bằng hình ảnh, 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 sổ nhật ký ở bên phải. Ban đầu, các nút được thêm vào nhưng không có mạng nào được tạo. Trong quá trình thử nghiệm, các chế độ và vai trò của mỗi nút sẽ thay đổi và các đường liên kết sẽ được hình thành.

5c38e2c72519e620.pngS

7. Xin chúc mừng

Xin chúc mừng! Bạn đã chạy thành công kiểm thử lụa trên các thiết bị Luồng thực và hiển thị trực quan bằng OTNS!

Bạn đã thực thi kiểm tra Lụa bằng các bảng phát triển được cài đặt ROM với các chương trình cơ sở có hỗ trợ OTNS. Những bảng này báo cáo trạng thái của máy chủ cho máy chủ Lụa, máy chủ này sẽ giám sát và tổng hợp tất cả máy chủ rồi gửi đến dịch vụ OTNS cùng với thông tin kiểm tra khác. OTNS chạy ở chế độ thực tế sẽ hiển thị 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 lụa.

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

Hãy truy cập vào openthread.ioSilk để xem nhiều tài nguyên OpenThread.

Tài liệu tham khảo