This commit adds APIs to get Link/Realm Local All Thread Nodes
multicast addresses. This commit also adds cli command to get
meshlocal prefix alone for writing tests.
- Ping command in CLI will print Done in the end, after printing
replies and statistics. The old behavior is, ping command prints
Done before any replies.
- In OTCI, let ping function return statistics.
- Support timeout parameter in ping command.
- Fix a bug that the arguments are not properly passed to ping in
node.py.
- Adjust timeouts in tests.
This commit changes these methods to return corresponding entries from
Thread Network Data rather than local network data.
- get_prefixes
- get_routes
- get_services
Added local version to retrieve entries from local network data.
- get_local_prefixes
- get_local_routes
This commit introduces the Proof of Concept implementation of the
OpenThread Controller Interface (OTCI) which can be used to connect
and manage various kinds of OT devices.
This commit also adds the tests to verify that OTCI works for both
simulation and real OT devices.
- Device Connectors
- CLI Virtual Time Simulation
- CLI Real Time Simulation
- CLI SOC Device
- NCP Virtual Time Simulation (not all APIs work)
- Real device via SSH
- OTCI tests of simulation devices are executed in Github Actions
- OTCI tests of real devices can be executed like below:
# Install otci python library
cd tests/scripts/thread-cert/otci && python3 setup.py install --user
# Test OT CLI SOC device at /dev/ttyACM0
REAL_DEVICE=1 OT_CLI_SERIAL=/dev/ttyACM0 python3 tests/test_otci.py
# Test OTBR device via SSH
REAL_DEVICE=1 OTBR_SSH=172.16.243.151 python3 tests/test_otci.py
If user doesn't set the Partition Id using the command
'leaderpartitionid xxx', the current cli command 'leaderpartitionid'
always return 0. This commit renames the command 'leaderpartitionid'
to partitionid and let the command partitionid returns the current
leader Partition Id and add command partitionid preferred to set or
get preferred Partition Id.
- parse TopologyConfig file in Thread Certification Test Harness
- list multi-vendor device numbers by case
- list needed vendor device numbers for the whole certification testbed
This commit fixes existing issues in address filters.
- Fix misuse of address filter modes
- disabled should be disable
- Whitelist should be whitelist
- Blacklist should be blacklist
- Fix errors in removing macfilter entries
Impact on 1.1 certification:
This commit does not impact 1.1 certification because only
OpenThread_WpanCtl.py is changed. In 1.1 certification, all golden
devices are controlled by OpenThread.py. OpenThread_WpanCtl.py is used
to control OTBR DUT, and mac filter feature is not useful for a
DUT.
Another PDU Controller used to power cycle between tests. Based by
SNMP protocol. To use EATON_PDU_CONTROLLER is needed PySNMP module
(added to requirements.txt). Also extend settings_sample.py by
comments with needed parameters to create EATON_PDU_CONTROLLER.
elem.txt might be null when the required reference devices could not
be met (either due to the quantity or the type) for specific test.
perform() will throw exceptions if elem.text is null since Chrome and
chromedriver 80. If elem is not shown in current case list window,
move_to_element() will not work either.
- RF-shield needed cases 6.3.2, 5.6.7, 9.2.9, 9.2.10 automation both
on CV and IV testbed
- Added DUT2_DEVICE and SHIELD_GOLDEN_DEVICES in settings file which
list the second DUT and golden devices in RF-box. The emulation of
the required shielding/unshielding test environment is achieved by
controlling the programmable RF-switch (example: Agilent 3499B + HP
44476A microwave switch module) via scripts (configure
SHIELD_CONTROLLER_TYPE and SHIELD_CONTROLLER_PARAMS in settings
file) and final impacting the IN/OUT signal of the devices in the
box.
- Added case_need_shield and device_order parameters in RF-shield
needed case scripts for checking if test case needs to use RF-shield
box and its device order on the Test Harness Testbed page.
Wpanctl THCI might return the wrong RLOC address when RLOC16 == 0 due
to incorrect call to .lstrip('0x'). We use .lstrip('0x') to strip
'0x' at the beginning of a hex string, however this is not correct
when the hex string is '0x0', because '0x0'.lstrip('0x') == ''
This commit fixes all incorrect calls to .lstrip('0x'). There are 3
different kinds of fix:
- s.lstrip('0x') replaced by self.__lstrip0x(s) (lstrip_0x is a
correct implementation of stripping '0x' at the beginning of a
string)
- hex(v).rstrip('L').lstrip('0x') replaced by '%x' % v
- hex(v).lstrip('0x').zfill(4) replaced by '%04x' % v