From 30b79ccee86b9f573ba80907bb370921b6a72803 Mon Sep 17 00:00:00 2001 From: Yakun Xu Date: Fri, 5 May 2023 00:59:24 +0800 Subject: [PATCH] [test] migrate tests to cmake (#8929) This commit migrate tests not targeting autotool to cmake. * removed openthread-test-driver * removed functional tests from autotool based check * corrected file permission of python scripts * added --run-directory to specify directory to collect logs and captures * get test-ot-test-srp-server pass on POSIX platform --- .github/workflows/otci.yml | 11 +- .github/workflows/posix.yml | 13 +- .github/workflows/simulation-1.1.yml | 39 +- configure.ac | 2 - script/cmake-build | 26 +- script/test | 6 +- src/core/common/new.hpp | 6 +- tests/Makefile.am | 38 -- tests/scripts/Makefile.am | 51 --- tests/scripts/thread-cert/Makefile.am | 403 ------------------ tests/scripts/thread-cert/__init__.py | 0 .../scripts/thread-cert/backbone/test_bmlr.py | 0 .../thread-cert/backbone/test_dua_dad.py | 0 .../thread-cert/backbone/test_dua_routing.py | 0 .../backbone/test_dua_routing_med.py | 0 ...not_send_icmpv6_destination_unreachable.py | 0 .../backbone/test_mlr_multicast_routing.py | 0 ...lr_multicast_routing_across_thread_pans.py | 0 ..._multicast_routing_commissioner_timeout.py | 0 .../test_mlr_multicast_routing_timeout.py | 0 .../thread-cert/backbone/test_ndproxy.py | 0 .../v1_2_LowPower_5_3_01_SSEDAttachment_BR.py | 0 .../border_router/MATN/MATN_02_MLRFirstUse.py | 0 ...TN_03_InvalidCommissionerDeregistration.py | 0 .../MATN/MATN_04_MulticastListenerTimeout.py | 0 ...N_05_ReregistrationToSameMulticastGroup.py | 0 .../MATN_09_DefaultBRMulticastForwarding.py | 0 .../MATN/MATN_12_HopLimitProcessing.py | 0 ..._ChangeOfPrimaryBBRTriggersRegistration.py | 0 ...umberOfMulticastGroupSubscriptionsToBBR.py | 0 .../nat64/test_multi_border_routers.py | 0 .../nat64/test_single_border_router.py | 0 .../border_router/nat64/test_upstream_dns.py | 0 .../nat64/test_with_infrastructure_prefix.py | 0 .../test_border_router_as_fed.py | 0 .../test_dnssd_instance_name_with_space.py | 0 .../border_router/test_dnssd_server.py | 0 .../test_dnssd_server_multi_border_routers.py | 0 .../test_end_device_udp_reachability.py | 0 .../border_router/test_external_route.py | 0 .../border_router/test_firewall.py | 0 .../border_router/test_manual_address.py | 0 .../border_router/test_manual_maddress.py | 0 .../border_router/test_manual_omr_prefix.py | 0 .../test_plat_udp_accessiblity.py | 0 .../test_srp_register_500_services_br.py | 0 .../border_router/test_trel_connectivity.py | 0 tests/scripts/thread-cert/coap.py | 0 tests/scripts/thread-cert/command.py | 0 tests/scripts/thread-cert/common.py | 0 tests/scripts/thread-cert/config.py | 0 tests/scripts/thread-cert/debug.py | 0 tests/scripts/thread-cert/dtls.py | 0 tests/scripts/thread-cert/ipv6.py | 0 tests/scripts/thread-cert/lowpan.py | 0 tests/scripts/thread-cert/mac802154.py | 0 tests/scripts/thread-cert/mesh_cop.py | 0 tests/scripts/thread-cert/message.py | 0 tests/scripts/thread-cert/mle.py | 0 tests/scripts/thread-cert/net_crypto.py | 0 tests/scripts/thread-cert/network_data.py | 0 tests/scripts/thread-cert/network_diag.py | 0 tests/scripts/thread-cert/network_layer.py | 0 tests/scripts/thread-cert/pcap.py | 0 tests/scripts/thread-cert/run_cert_suite.py | 21 +- .../scripts/thread-cert/sniffer_transport.py | 0 .../test_dnssd_name_with_special_chars.py | 0 .../scripts/thread-cert/test_ping_lla_src.py | 0 tests/scripts/thread-cert/thread_cert.py | 0 tests/scripts/thread-cert/tlvs_parsing.py | 0 tests/scripts/thread-cert/wpan.py | 0 tests/unit/CMakeLists.txt | 1 - tests/unit/test_platform.cpp | 79 +++- third_party/Makefile.am | 1 - third_party/openthread-test-driver/LICENSE | 339 --------------- third_party/openthread-test-driver/README.md | 27 -- .../openthread-test-driver/test-driver | 165 ------- 77 files changed, 136 insertions(+), 1092 deletions(-) delete mode 100644 tests/scripts/Makefile.am delete mode 100644 tests/scripts/thread-cert/Makefile.am mode change 100755 => 100644 tests/scripts/thread-cert/__init__.py mode change 100644 => 100755 tests/scripts/thread-cert/backbone/test_bmlr.py mode change 100644 => 100755 tests/scripts/thread-cert/backbone/test_dua_dad.py mode change 100644 => 100755 tests/scripts/thread-cert/backbone/test_dua_routing.py mode change 100644 => 100755 tests/scripts/thread-cert/backbone/test_dua_routing_med.py mode change 100644 => 100755 tests/scripts/thread-cert/backbone/test_mle_must_not_send_icmpv6_destination_unreachable.py mode change 100644 => 100755 tests/scripts/thread-cert/backbone/test_mlr_multicast_routing.py mode change 100644 => 100755 tests/scripts/thread-cert/backbone/test_mlr_multicast_routing_across_thread_pans.py mode change 100644 => 100755 tests/scripts/thread-cert/backbone/test_mlr_multicast_routing_commissioner_timeout.py mode change 100644 => 100755 tests/scripts/thread-cert/backbone/test_mlr_multicast_routing_timeout.py mode change 100644 => 100755 tests/scripts/thread-cert/backbone/test_ndproxy.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/LowPower/v1_2_LowPower_5_3_01_SSEDAttachment_BR.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/MATN/MATN_02_MLRFirstUse.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/MATN/MATN_03_InvalidCommissionerDeregistration.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/MATN/MATN_04_MulticastListenerTimeout.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/MATN/MATN_05_ReregistrationToSameMulticastGroup.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/MATN/MATN_09_DefaultBRMulticastForwarding.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/MATN/MATN_12_HopLimitProcessing.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/MATN/MATN_15_ChangeOfPrimaryBBRTriggersRegistration.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/MATN/MATN_16_LargeNumberOfMulticastGroupSubscriptionsToBBR.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/nat64/test_multi_border_routers.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/nat64/test_single_border_router.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/nat64/test_upstream_dns.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/nat64/test_with_infrastructure_prefix.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/test_border_router_as_fed.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/test_dnssd_instance_name_with_space.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/test_dnssd_server.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/test_dnssd_server_multi_border_routers.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/test_end_device_udp_reachability.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/test_external_route.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/test_firewall.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/test_manual_address.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/test_manual_maddress.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/test_manual_omr_prefix.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/test_plat_udp_accessiblity.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/test_srp_register_500_services_br.py mode change 100644 => 100755 tests/scripts/thread-cert/border_router/test_trel_connectivity.py mode change 100755 => 100644 tests/scripts/thread-cert/coap.py mode change 100755 => 100644 tests/scripts/thread-cert/command.py mode change 100755 => 100644 tests/scripts/thread-cert/common.py mode change 100755 => 100644 tests/scripts/thread-cert/config.py mode change 100755 => 100644 tests/scripts/thread-cert/debug.py mode change 100755 => 100644 tests/scripts/thread-cert/dtls.py mode change 100755 => 100644 tests/scripts/thread-cert/ipv6.py mode change 100755 => 100644 tests/scripts/thread-cert/lowpan.py mode change 100755 => 100644 tests/scripts/thread-cert/mac802154.py mode change 100755 => 100644 tests/scripts/thread-cert/mesh_cop.py mode change 100755 => 100644 tests/scripts/thread-cert/message.py mode change 100755 => 100644 tests/scripts/thread-cert/mle.py mode change 100755 => 100644 tests/scripts/thread-cert/net_crypto.py mode change 100755 => 100644 tests/scripts/thread-cert/network_data.py mode change 100755 => 100644 tests/scripts/thread-cert/network_diag.py mode change 100755 => 100644 tests/scripts/thread-cert/network_layer.py mode change 100755 => 100644 tests/scripts/thread-cert/pcap.py mode change 100755 => 100644 tests/scripts/thread-cert/sniffer_transport.py mode change 100644 => 100755 tests/scripts/thread-cert/test_dnssd_name_with_special_chars.py mode change 100644 => 100755 tests/scripts/thread-cert/test_ping_lla_src.py mode change 100755 => 100644 tests/scripts/thread-cert/thread_cert.py mode change 100755 => 100644 tests/scripts/thread-cert/tlvs_parsing.py mode change 100755 => 100644 tests/scripts/thread-cert/wpan.py delete mode 100644 third_party/openthread-test-driver/LICENSE delete mode 100644 third_party/openthread-test-driver/README.md delete mode 100755 third_party/openthread-test-driver/test-driver diff --git a/.github/workflows/otci.yml b/.github/workflows/otci.yml index 88d05d8c3..46f07450e 100644 --- a/.github/workflows/otci.yml +++ b/.github/workflows/otci.yml @@ -53,7 +53,6 @@ jobs: matrix: virtual_time: [0, 1] env: - REFERENCE_DEVICE: 1 VIRTUAL_TIME: ${{ matrix.virtual_time }} REAL_DEVICE: 0 steps: @@ -66,7 +65,7 @@ jobs: - name: Bootstrap run: | sudo rm /etc/apt/sources.list.d/* && sudo apt-get update - sudo apt-get --no-install-recommends install -y g++-multilib python3-setuptools python3-wheel + sudo apt-get --no-install-recommends install -y g++-multilib ninja-build python3-setuptools python3-wheel python3 -m pip install -r tests/scripts/thread-cert/requirements.txt python3 -m pip install pytype adb-shell - name: Style check @@ -74,13 +73,13 @@ jobs: PYTHONPATH=./tests/scripts/thread-cert pytype tools/otci - name: Build run: | - ./bootstrap - make -f examples/Makefile-simulation THREAD_VERSION=1.3 DUA=1 MLR=1 BACKBONE_ROUTER=1 CSL_RECEIVER=1 + ./script/cmake-build simulation -DOT_THREAD_VERSION=1.3 -DOT_DUA=ON -DOT_MLR=ON -DOT_BACKBONE_ROUTER=ON \ + -DOT_CSL_RECEIVER=ON -DOT_SIMULATION_VIRTUAL_TIME=${VIRTUAL_TIME} - name: Install OTCI Python Library run: | - (cd tools/otci && python3 setup.py install --user) + (cd tools/otci && python3 -m pip install .) - name: Run run: | export PYTHONPATH=./tests/scripts/thread-cert/ - export OT_CLI=./output/simulation/bin/ot-cli-ftd + export OT_CLI=./build/simulation/examples/apps/cli/ot-cli-ftd python3 tools/otci/tests/test_otci.py diff --git a/.github/workflows/posix.yml b/.github/workflows/posix.yml index 57671737f..8dc196479 100644 --- a/.github/workflows/posix.yml +++ b/.github/workflows/posix.yml @@ -131,11 +131,8 @@ jobs: env: COVERAGE: 1 PYTHONUNBUFFERED: 1 - READLINE: readline - REFERENCE_DEVICE: 1 THREAD_VERSION: 1.1 VIRTUAL_TIME: 1 - VIRTUAL_TIME_UART: 1 steps: - name: Harden Runner uses: step-security/harden-runner@6b3083af2869dc3314a0257a42f4af696cc79ba3 # v2.3.1 @@ -148,21 +145,19 @@ jobs: - name: Bootstrap run: | sudo rm /etc/apt/sources.list.d/* && sudo apt-get update - sudo apt-get --no-install-recommends install -y libreadline6-dev python3-setuptools python3-wheel lcov + sudo apt-get --no-install-recommends install -y lcov ninja-build python3-setuptools python3-wheel python3 -m pip install -r tests/scripts/thread-cert/requirements.txt - name: Build run: | - ./bootstrap - make -f examples/Makefile-simulation - make -f src/posix/Makefile-posix + OT_NODE_TYPE=rcp ./script/test build - name: Run run: | - VERBOSE=1 OT_CLI_PATH="$PWD/output/posix/bin/ot-cli -v" RADIO_DEVICE="$PWD/output/simulation/bin/ot-rcp" make -f src/posix/Makefile-posix check + MAX_JOBS=$(getconf _NPROCESSORS_ONLN) ./script/test cert_suite ./tests/scripts/thread-cert/Cert_*.py ./tests/scripts/thread-cert/test_*.py - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 if: ${{ failure() }} with: name: thread-cert - path: build/posix/tests/scripts/thread-cert + path: ot_testing - name: Generate Coverage run: | ./script/test generate_coverage gcc diff --git a/.github/workflows/simulation-1.1.yml b/.github/workflows/simulation-1.1.yml index 37dd4b440..a064a51c1 100644 --- a/.github/workflows/simulation-1.1.yml +++ b/.github/workflows/simulation-1.1.yml @@ -144,20 +144,19 @@ jobs: - name: Bootstrap run: | sudo rm /etc/apt/sources.list.d/* && sudo apt-get update - sudo apt-get --no-install-recommends install -y g++-multilib python3-setuptools python3-wheel lcov + sudo apt-get --no-install-recommends install -y lcov ninja-build g++-multilib python3-setuptools python3-wheel python3 -m pip install -r tests/scripts/thread-cert/requirements.txt - name: Build run: | - ./bootstrap - make -f examples/Makefile-simulation + ./script/test build - name: Run run: | - VERBOSE=1 make -f examples/Makefile-simulation check + ./script/test cert_suite ./tests/scripts/thread-cert/Cert_*.py ./tests/scripts/thread-cert/test_*.py - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 if: ${{ failure() }} with: name: cli-ftd-thread-cert - path: build/simulation/tests/scripts/thread-cert + path: ot_testing - name: Generate Coverage run: | ./script/test generate_coverage gcc @@ -195,20 +194,19 @@ jobs: - name: Bootstrap run: | sudo rm /etc/apt/sources.list.d/* && sudo apt-get update - sudo apt-get --no-install-recommends install -y g++-multilib python3-setuptools python3-wheel lcov + sudo apt-get --no-install-recommends install -y lcov ninja-build g++-multilib python3-setuptools python3-wheel python3 -m pip install -r tests/scripts/thread-cert/requirements.txt - name: Build run: | - ./bootstrap - make -f examples/Makefile-simulation + ./script/test build - name: Run run: | - VERBOSE=1 make -f examples/Makefile-simulation check + ./script/test cert_suite ./tests/scripts/thread-cert/Cert_*.py ./tests/scripts/thread-cert/test_*.py - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 if: ${{ failure() }} with: name: cli-mtd-thread-cert - path: build/simulation/tests/scripts/thread-cert + path: ot_testing - name: Generate Coverage run: | ./script/test generate_coverage gcc @@ -226,7 +224,6 @@ jobs: COVERAGE: 1 REFERENCE_DEVICE: 1 THREAD_VERSION: 1.1 - TIME_SYNC: 1 VIRTUAL_TIME: 1 steps: - name: Harden Runner @@ -240,20 +237,19 @@ jobs: - name: Bootstrap run: | sudo rm /etc/apt/sources.list.d/* && sudo apt-get update - sudo apt-get --no-install-recommends install -y g++-multilib python3-setuptools python3-wheel lcov + sudo apt-get --no-install-recommends install -y g++-multilib lcov ninja-build python3-setuptools python3-wheel python3 -m pip install -r tests/scripts/thread-cert/requirements.txt - name: Build run: | - ./bootstrap - make -f examples/Makefile-simulation + OT_OPTIONS="-DOT_TIME_SYNC=ON" ./script/test build - name: Run run: | - VERBOSE=1 make -f examples/Makefile-simulation check + ./script/test cert_suite ./tests/scripts/thread-cert/Cert_*.py ./tests/scripts/thread-cert/test_*.py - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 if: ${{ failure() }} with: name: cli-time-sync-thread-cert - path: build/simulation/tests/scripts/thread-cert + path: ot_testing - name: Generate Coverage run: | ./script/test generate_coverage gcc @@ -355,8 +351,6 @@ jobs: runs-on: ubuntu-20.04 env: COVERAGE: 1 - MULTIPLE_INSTANCE: 1 - REFERENCE_DEVICE: 1 THREAD_VERSION: 1.1 VIRTUAL_TIME: 1 CXXFLAGS: "-DOPENTHREAD_CONFIG_LOG_PREPEND_UPTIME=0" @@ -371,19 +365,18 @@ jobs: submodules: true - name: Bootstrap run: | - sudo apt-get --no-install-recommends install -y python3-setuptools python3-wheel lcov + sudo apt-get --no-install-recommends install -y lcov ninja-build python3-setuptools python3-wheel python3 -m pip install -r tests/scripts/thread-cert/requirements.txt - name: Build run: | - ./bootstrap - make -f examples/Makefile-simulation + OT_OPTIONS="-DOT_MULTIPLE_INSTANCE=ON" ./script/test build - name: Run run: | - VERBOSE=1 make -f examples/Makefile-simulation check + ./script/test cert_suite ./tests/scripts/thread-cert/Cert_*.py ./tests/scripts/thread-cert/test_*.py - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 if: ${{ failure() }} with: - name: multiple-instance-thread-cert + name: ot_testing path: build/simulation/tests/scripts/thread-cert - name: Generate Coverage run: | diff --git a/configure.ac b/configure.ac index 798949d6f..dedd85dda 100644 --- a/configure.ac +++ b/configure.ac @@ -1029,8 +1029,6 @@ tools/harness-thci/Makefile tools/spi-hdlc-adapter/Makefile tests/Makefile tests/fuzz/Makefile -tests/scripts/Makefile -tests/scripts/thread-cert/Makefile doc/Makefile ]) diff --git a/script/cmake-build b/script/cmake-build index 9d16d2474..727984305 100755 --- a/script/cmake-build +++ b/script/cmake-build @@ -74,36 +74,39 @@ OT_POSIX_SIM_COMMON_OPTIONS=( "-DOT_ANYCAST_LOCATOR=ON" "-DOT_BORDER_AGENT=ON" "-DOT_BORDER_ROUTER=ON" - "-DOT_COAP=ON" - "-DOT_COAP_BLOCK=ON" - "-DOT_COAP_OBSERVE=ON" - "-DOT_COAPS=ON" - "-DOT_COMMISSIONER=ON" "-DOT_CHANNEL_MANAGER=ON" "-DOT_CHANNEL_MONITOR=ON" + "-DOT_CHILD_SUPERVISION=ON" + "-DOT_COAP=ON" + "-DOT_COAPS=ON" + "-DOT_COAP_BLOCK=ON" + "-DOT_COAP_OBSERVE=ON" + "-DOT_COMMISSIONER=ON" + "-DOT_COMPILE_WARNING_AS_ERROR=ON" + "-DOT_COVERAGE=ON" "-DOT_DATASET_UPDATER=ON" "-DOT_DHCP6_CLIENT=ON" "-DOT_DHCP6_SERVER=ON" "-DOT_DIAGNOSTIC=ON" + "-DOT_DNSSD_SERVER=ON" "-DOT_DNS_CLIENT=ON" "-DOT_ECDSA=ON" "-DOT_HISTORY_TRACKER=ON" "-DOT_IP6_FRAGM=ON" "-DOT_JAM_DETECTION=ON" "-DOT_JOINER=ON" + "-DOT_LOG_LEVEL_DYNAMIC=ON" "-DOT_MAC_FILTER=ON" "-DOT_NEIGHBOR_DISCOVERY_AGENT=ON" "-DOT_NETDATA_PUBLISHER=ON" "-DOT_NETDIAG_CLIENT=ON" "-DOT_PING_SENDER=ON" + "-DOT_RCP_RESTORATION_MAX_COUNT=2" "-DOT_REFERENCE_DEVICE=ON" "-DOT_SERVICE=ON" "-DOT_SNTP_CLIENT=ON" "-DOT_SRP_CLIENT=ON" - "-DOT_COVERAGE=ON" - "-DOT_LOG_LEVEL_DYNAMIC=ON" - "-DOT_COMPILE_WARNING_AS_ERROR=ON" - "-DOT_RCP_RESTORATION_MAX_COUNT=2" + "-DOT_SRP_SERVER=ON" "-DOT_UPTIME=ON" ) readonly OT_POSIX_SIM_COMMON_OPTIONS @@ -162,8 +165,11 @@ main() options+=("${OT_POSIX_SIM_COMMON_OPTIONS[@]}" "${local_options[@]}") ;; simulation) - local_options=("-DOT_LINK_RAW=ON" + local_options+=( + "-DOT_LINK_RAW=ON" + "-DOT_DNS_DSO=ON" "-DOT_DNS_CLIENT_OVER_TCP=ON" + "-DOT_UDP_FORWARD=ON" ) options+=("${OT_POSIX_SIM_COMMON_OPTIONS[@]}" "${local_options[@]}") ;; diff --git a/script/test b/script/test index 395ce4225..7fc0c3ed2 100755 --- a/script/test +++ b/script/test @@ -272,6 +272,7 @@ do_cert() do_cert_suite() { export top_builddir="${OT_BUILDDIR}/openthread-simulation-${THREAD_VERSION}" + export top_srcdir="${OT_SRCDIR}" if [[ ${THREAD_VERSION} != "1.1" ]]; then export top_builddir_1_3_bbr="${OT_BUILDDIR}/openthread-simulation-1.3-bbr" @@ -285,7 +286,8 @@ do_cert_suite() sudo modprobe ip6table_filter - python3 tests/scripts/thread-cert/run_cert_suite.py --multiply "${MULTIPLY:-1}" "$@" + mkdir -p ot_testing + ./tests/scripts/thread-cert/run_cert_suite.py --run-directory ot_testing --multiply "${MULTIPLY:-1}" "$@" exit 0 } @@ -389,7 +391,7 @@ do_build_otbr_docker() do_pktverify() { - python3 ./tests/scripts/thread-cert/pktverify/verify.py "$1" + ./tests/scripts/thread-cert/pktverify/verify.py "$1" } ot_exec_expect_script() diff --git a/src/core/common/new.hpp b/src/core/common/new.hpp index b1eb950fc..76d2f5e17 100644 --- a/src/core/common/new.hpp +++ b/src/core/common/new.hpp @@ -31,8 +31,8 @@ * This file defines the new operator used by OpenThread. */ -#ifndef NEW_HPP_ -#define NEW_HPP_ +#ifndef OT_CORE_COMMON_NEW_HPP_ +#define OT_CORE_COMMON_NEW_HPP_ #include "openthread-core-config.h" @@ -42,4 +42,4 @@ inline void *operator new(size_t, void *p) throw() { return p; } -#endif // NEW_HPP_ +#endif // OT_CORE_COMMON_NEW_HPP_ diff --git a/tests/Makefile.am b/tests/Makefile.am index e63331ae9..462f908b1 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -31,7 +31,6 @@ include $(abs_top_nlbuild_autotools_dir)/automake/pre.am # Always package (e.g. for 'make dist') these subdirectories. DIST_SUBDIRS = \ - scripts \ fuzz \ $(NULL) @@ -40,45 +39,8 @@ DIST_SUBDIRS = \ SUBDIRS = \ $(NULL) -if OPENTHREAD_POSIX -if OPENTHREAD_ENABLE_CLI -SUBDIRS += \ - scripts \ - $(NULL) -endif -endif - if OPENTHREAD_ENABLE_FUZZ_TARGETS SUBDIRS += fuzz endif -if OPENTHREAD_BUILD_TESTS -if OPENTHREAD_BUILD_COVERAGE -CLEANFILES = $(wildcard *.gcda *.gcno) - -if OPENTHREAD_BUILD_COVERAGE_REPORTS -# The bundle should positively be qualified with the absolute build -# path. Otherwise, VPATH will get auto-prefixed to it if there is -# already such a directory in the non-colocated source tree. - -OPENTHREAD_COVERAGE_BUNDLE = ${abs_builddir}/${PACKAGE}${NL_COVERAGE_BUNDLE_SUFFIX} -OPENTHREAD_COVERAGE_INFO = ${OPENTHREAD_COVERAGE_BUNDLE}/${PACKAGE}${NL_COVERAGE_INFO_SUFFIX} - -$(OPENTHREAD_COVERAGE_BUNDLE): - $(call create-directory) - -$(OPENTHREAD_COVERAGE_INFO): check | $(dir $(OPENTHREAD_COVERAGE_INFO)) - $(call generate-coverage-report,${top_builddir}) - -coverage-local: $(OPENTHREAD_COVERAGE_INFO) - -clean-local: clean-local-coverage - -.PHONY: clean-local-coverage -clean-local-coverage: - -$(AM_V_at)rm -rf $(OPENTHREAD_COVERAGE_BUNDLE) -endif # OPENTHREAD_BUILD_COVERAGE_REPORTS -endif # OPENTHREAD_BUILD_COVERAGE -endif # OPENTHREAD_BUILD_TESTS - include $(abs_top_nlbuild_autotools_dir)/automake/post.am diff --git a/tests/scripts/Makefile.am b/tests/scripts/Makefile.am deleted file mode 100644 index d1cd8f17f..000000000 --- a/tests/scripts/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# Copyright (c) 2016-2017, The OpenThread Authors. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. Neither the name of the copyright holder nor the -# names of its contributors may be used to endorse or promote products -# derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# - -include $(abs_top_nlbuild_autotools_dir)/automake/pre.am - -# Always package (e.g. for 'make dist') these subdirectories. - -DIST_SUBDIRS = \ - thread-cert \ - $(NULL) - -# Always build (e.g. for 'make all') these subdirectories. - -SUBDIRS = \ - $(NULL) - -if OPENTHREAD_POSIX -if OPENTHREAD_ENABLE_CLI -SUBDIRS += \ - thread-cert \ - $(NULL) -endif -endif - -include $(abs_top_nlbuild_autotools_dir)/automake/post.am - diff --git a/tests/scripts/thread-cert/Makefile.am b/tests/scripts/thread-cert/Makefile.am deleted file mode 100644 index a3d997038..000000000 --- a/tests/scripts/thread-cert/Makefile.am +++ /dev/null @@ -1,403 +0,0 @@ -# -# Copyright (c) 2016-2017, The OpenThread Authors. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. Neither the name of the copyright holder nor the -# names of its contributors may be used to endorse or promote products -# derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# - -include $(abs_top_nlbuild_autotools_dir)/automake/pre.am - -LOG_DRIVER=$(abs_top_srcdir)/third_party/openthread-test-driver/test-driver - -EXTRA_DIST = \ - Cert_5_1_01_RouterAttach.py \ - Cert_5_1_02_ChildAddressTimeout.py \ - Cert_5_1_03_RouterAddressReallocation.py \ - Cert_5_1_04_RouterAddressReallocation.py \ - Cert_5_1_05_RouterAddressTimeout.py \ - Cert_5_1_06_RemoveRouterId.py \ - Cert_5_1_07_MaxChildCount.py \ - Cert_5_1_08_RouterAttachConnectivity.py \ - Cert_5_1_09_REEDAttachConnectivity.py \ - Cert_5_1_10_RouterAttachLinkQuality.py \ - Cert_5_1_11_REEDAttachLinkQuality.py \ - Cert_5_1_12_NewRouterNeighborSync.py \ - Cert_5_1_13_RouterReset.py \ - Cert_5_2_01_REEDAttach.py \ - Cert_5_2_03_LeaderReject2Hops.py \ - Cert_5_2_04_REEDUpgrade.py \ - Cert_5_2_05_AddressQuery.py \ - Cert_5_2_06_RouterDowngrade.py \ - Cert_5_2_07_REEDSynchronization.py \ - Cert_5_3_01_LinkLocal.py \ - Cert_5_3_02_RealmLocal.py \ - Cert_5_3_03_AddressQuery.py \ - Cert_5_3_04_AddressMapCache.py \ - Cert_5_3_05_RoutingLinkQuality.py \ - Cert_5_3_06_RouterIdMask.py \ - Cert_5_3_07_DuplicateAddress.py \ - Cert_5_3_08_ChildAddressSet.py \ - Cert_5_3_09_AddressQuery.py \ - Cert_5_3_10_AddressQuery.py \ - Cert_5_3_11_AddressQueryTimeoutIntervals.py \ - Cert_5_5_01_LeaderReboot.py \ - Cert_5_5_02_LeaderReboot.py \ - Cert_5_5_03_SplitMergeChildren.py \ - Cert_5_5_04_SplitMergeRouters.py \ - Cert_5_5_05_SplitMergeREED.py \ - Cert_5_5_07_SplitMergeThreeWay.py \ - Cert_5_6_01_NetworkDataRegisterBeforeAttachLeader.py \ - Cert_5_6_02_NetworkDataRegisterBeforeAttachRouter.py \ - Cert_5_6_03_NetworkDataRegisterAfterAttachLeader.py \ - Cert_5_6_04_NetworkDataRegisterAfterAttachRouter.py \ - Cert_5_6_05_NetworkDataRegisterAfterAttachRouter.py \ - Cert_5_6_06_NetworkDataExpiration.py \ - Cert_5_6_07_NetworkDataRequestREED.py \ - Cert_5_6_09_NetworkDataForwarding.py \ - Cert_5_7_01_CoapDiagCommands.py \ - Cert_5_7_02_CoapDiagCommands.py \ - Cert_5_7_03_CoapDiagCommands.py \ - Cert_5_8_02_KeyIncrement.py \ - Cert_5_8_03_KeyIncrementRollOver.py \ - Cert_5_8_04_SecurityPolicyTLV.py \ - Cert_6_1_01_RouterAttach.py \ - Cert_6_1_02_REEDAttach.py \ - Cert_6_1_03_RouterAttachConnectivity.py \ - Cert_6_1_04_REEDAttachConnectivity.py \ - Cert_6_1_05_REEDAttachConnectivity.py \ - Cert_6_1_07_RouterAttachLinkQuality.py \ - Cert_6_1_06_REEDAttachLinkQuality.py \ - Cert_6_2_01_NewPartition.py \ - Cert_6_2_02_NewPartition.py \ - Cert_6_3_01_OrphanReattach.py \ - Cert_6_3_02_NetworkDataUpdate.py \ - Cert_6_4_01_LinkLocal.py \ - Cert_6_4_02_RealmLocal.py \ - Cert_6_5_01_ChildResetReattach.py \ - Cert_6_5_02_ChildResetReattach.py \ - Cert_6_5_03_ChildResetSynchronize.py \ - Cert_6_6_01_KeyIncrement.py \ - Cert_6_6_02_KeyIncrementRollOver.py \ - Cert_7_1_01_BorderRouterAsLeader.py \ - Cert_7_1_02_BorderRouterAsRouter.py \ - Cert_7_1_03_BorderRouterAsLeader.py \ - Cert_7_1_04_BorderRouterAsRouter.py \ - Cert_7_1_05_BorderRouterAsRouter.py \ - Cert_7_1_06_BorderRouterAsLeader.py \ - Cert_7_1_07_BorderRouterAsLeader.py \ - Cert_7_1_08_BorderRouterAsFED.py \ - Cert_8_1_01_Commissioning.py \ - Cert_8_1_02_Commissioning.py \ - Cert_8_2_01_JoinerRouter.py \ - Cert_8_2_02_JoinerRouter.py \ - Cert_9_2_01_MGMTCommissionerGet.py \ - Cert_9_2_02_MGMTCommissionerSet.py \ - Cert_9_2_03_ActiveDatasetGet.py \ - Cert_9_2_04_ActiveDataset.py \ - Cert_9_2_05_ActiveDataset.py \ - Cert_9_2_06_DatasetDissemination.py \ - Cert_9_2_07_DelayTimer.py \ - Cert_9_2_08_PersistentDatasets.py \ - Cert_9_2_09_PendingPartition.py \ - Cert_9_2_10_PendingPartition.py \ - Cert_9_2_11_NetworkKey.py \ - Cert_9_2_12_Announce.py \ - Cert_9_2_13_EnergyScan.py \ - Cert_9_2_14_PanIdQuery.py \ - Cert_9_2_15_PendingPartition.py \ - Cert_9_2_16_ActivePendingPartition.py \ - Cert_9_2_17_Orphan.py \ - Cert_9_2_18_RollBackActiveTimestamp.py \ - Cert_9_2_19_PendingDatasetGet.py \ - coap.py \ - command.py \ - common.py \ - config.py \ - debug.py \ - dtls.py \ - ipv6.py \ - lowpan.py \ - mac802154.py \ - mesh_cop.py \ - message.py \ - mle.py \ - net_crypto.py \ - network_data.py \ - network_diag.py \ - network_layer.py \ - node.py \ - pcap.py \ - simulator.py \ - sniffer.py \ - sniffer_transport.py \ - test_anycast.py \ - test_anycast_locator.py \ - test_br_upgrade_router_role.py \ - test_child_supervision.py \ - test_coap.py \ - test_coap_block.py \ - test_coap_observe.py \ - test_coaps.py \ - test_common.py \ - test_crypto.py \ - test_dataset_updater.py \ - test_detach.py \ - test_diag.py \ - test_dns_client_config_auto_start.py \ - test_dnssd.py \ - test_dnssd_name_with_special_chars.py \ - test_history_tracker.py \ - test_inform_previous_parent_on_reattach.py \ - test_ipv6.py \ - test_ipv6_fragmentation.py \ - test_ipv6_source_selection.py \ - test_lowpan.py \ - test_mac802154.py \ - test_mac_scan.py \ - test_mle.py \ - test_mle_msg_key_seq_jump.py \ - test_netdata_publisher.py \ - test_network_data.py \ - test_network_layer.py \ - test_on_mesh_prefix.py \ - test_pbbr_aloc.py \ - test_ping.py \ - test_radio_filter.py \ - test_reed_address_solicit_rejected.py \ - test_reset.py \ - test_route_table.py \ - test_router_reattach.py \ - test_router_upgrade.py \ - test_service.py \ - test_set_mliid.py \ - test_srp_auto_host_address.py \ - test_srp_auto_start_mode.py \ - test_srp_client_remove_host.py \ - test_srp_client_save_server_info.py \ - test_srp_lease.py \ - test_srp_many_services_mtu_check.py \ - test_srp_name_conflicts.py \ - test_srp_register_single_service.py \ - test_srp_register_services_diff_lease.py \ - test_srp_server_anycast_mode.py \ - test_srp_server_reboot_port.py \ - test_srp_sub_type.py \ - test_srp_ttl.py \ - test_zero_len_external_route.py \ - thread_cert.py \ - tlvs_parsing.py \ - thread_cert.py \ - pktverify/__init__.py \ - pktverify/addrs.py \ - pktverify/bytes.py \ - pktverify/coap.py \ - pktverify/consts.py \ - pktverify/decorators.py \ - pktverify/errors.py \ - pktverify/layer_fields.py \ - pktverify/layer_fields_container.py \ - pktverify/layers.py \ - pktverify/null_field.py \ - pktverify/packet.py \ - pktverify/packet_filter.py \ - pktverify/packet_verifier.py \ - pktverify/pcap_reader.py \ - pktverify/summary.py \ - pktverify/test_info.py \ - pktverify/utils.py \ - pktverify/verify_result.py \ - wpan.py \ - $(NULL) - -check_PROGRAMS = \ - $(NULL) - -check_SCRIPTS = \ - test_anycast.py \ - test_anycast_locator.py \ - test_br_upgrade_router_role.py \ - test_child_supervision.py \ - test_coap.py \ - test_coap_block.py \ - test_coap_observe.py \ - test_coaps.py \ - test_common.py \ - test_crypto.py \ - test_dataset_updater.py \ - test_detach.py \ - test_diag.py \ - test_dns_client_config_auto_start.py \ - test_dnssd.py \ - test_dnssd_name_with_special_chars.py \ - test_history_tracker.py \ - test_inform_previous_parent_on_reattach.py \ - test_ipv6.py \ - test_ipv6_fragmentation.py \ - test_ipv6_source_selection.py \ - test_lowpan.py \ - test_mac802154.py \ - test_mac_scan.py \ - test_mle.py \ - test_mle_msg_key_seq_jump.py \ - test_netdata_publisher.py \ - test_network_data.py \ - test_network_layer.py \ - test_on_mesh_prefix.py \ - test_pbbr_aloc.py \ - test_ping.py \ - test_radio_filter.py \ - test_reed_address_solicit_rejected.py \ - test_reset.py \ - test_route_table.py \ - test_router_reattach.py \ - test_router_upgrade.py \ - test_service.py \ - test_srp_auto_host_address.py \ - test_srp_auto_start_mode.py \ - test_srp_client_remove_host.py \ - test_srp_client_save_server_info.py \ - test_srp_lease.py \ - test_srp_many_services_mtu_check.py \ - test_srp_name_conflicts.py \ - test_srp_register_single_service.py \ - test_srp_register_services_diff_lease.py \ - test_srp_server_anycast_mode.py \ - test_srp_server_reboot_port.py \ - test_srp_sub_type.py \ - test_srp_ttl.py \ - test_zero_len_external_route.py \ - Cert_5_1_01_RouterAttach.py \ - Cert_5_1_02_ChildAddressTimeout.py \ - Cert_5_1_03_RouterAddressReallocation.py \ - Cert_5_1_04_RouterAddressReallocation.py \ - Cert_5_1_05_RouterAddressTimeout.py \ - Cert_5_1_06_RemoveRouterId.py \ - Cert_5_1_07_MaxChildCount.py \ - Cert_5_1_08_RouterAttachConnectivity.py \ - Cert_5_1_09_REEDAttachConnectivity.py \ - Cert_5_1_10_RouterAttachLinkQuality.py \ - Cert_5_1_11_REEDAttachLinkQuality.py \ - Cert_5_1_12_NewRouterNeighborSync.py \ - Cert_5_1_13_RouterReset.py \ - Cert_5_2_01_REEDAttach.py \ - Cert_5_2_05_AddressQuery.py \ - Cert_5_2_06_RouterDowngrade.py \ - Cert_5_2_07_REEDSynchronization.py \ - Cert_5_2_04_REEDUpgrade.py \ - Cert_5_3_01_LinkLocal.py \ - Cert_5_3_02_RealmLocal.py \ - Cert_5_3_03_AddressQuery.py \ - Cert_5_3_04_AddressMapCache.py \ - Cert_5_3_05_RoutingLinkQuality.py \ - Cert_5_3_06_RouterIdMask.py \ - Cert_5_3_07_DuplicateAddress.py \ - Cert_5_3_08_ChildAddressSet.py \ - Cert_5_3_09_AddressQuery.py \ - Cert_5_3_10_AddressQuery.py \ - Cert_5_3_11_AddressQueryTimeoutIntervals.py \ - Cert_5_5_01_LeaderReboot.py \ - Cert_5_5_02_LeaderReboot.py \ - Cert_5_5_03_SplitMergeChildren.py \ - Cert_5_5_04_SplitMergeRouters.py \ - Cert_5_5_05_SplitMergeREED.py \ - Cert_5_5_07_SplitMergeThreeWay.py \ - Cert_5_6_01_NetworkDataRegisterBeforeAttachLeader.py \ - Cert_5_6_02_NetworkDataRegisterBeforeAttachRouter.py \ - Cert_5_6_03_NetworkDataRegisterAfterAttachLeader.py \ - Cert_5_6_04_NetworkDataRegisterAfterAttachRouter.py \ - Cert_5_6_05_NetworkDataRegisterAfterAttachRouter.py \ - Cert_5_6_06_NetworkDataExpiration.py \ - Cert_5_6_07_NetworkDataRequestREED.py \ - Cert_5_6_09_NetworkDataForwarding.py \ - Cert_5_7_01_CoapDiagCommands.py \ - Cert_5_7_02_CoapDiagCommands.py \ - Cert_5_7_03_CoapDiagCommands.py \ - Cert_5_8_02_KeyIncrement.py \ - Cert_5_8_03_KeyIncrementRollOver.py \ - Cert_5_8_04_SecurityPolicyTLV.py \ - Cert_6_1_01_RouterAttach.py \ - Cert_6_1_02_REEDAttach.py \ - Cert_6_1_03_RouterAttachConnectivity.py \ - Cert_6_1_04_REEDAttachConnectivity.py \ - Cert_6_1_05_REEDAttachConnectivity.py \ - Cert_6_1_06_REEDAttachLinkQuality.py \ - Cert_6_1_07_RouterAttachLinkQuality.py \ - Cert_6_2_01_NewPartition.py \ - Cert_6_2_02_NewPartition.py \ - Cert_6_3_01_OrphanReattach.py \ - Cert_6_3_02_NetworkDataUpdate.py \ - Cert_6_4_01_LinkLocal.py \ - Cert_6_4_02_RealmLocal.py \ - Cert_6_5_01_ChildResetReattach.py \ - Cert_6_5_02_ChildResetReattach.py \ - Cert_6_5_03_ChildResetSynchronize.py \ - Cert_6_6_01_KeyIncrement.py \ - Cert_6_6_02_KeyIncrementRollOver.py \ - Cert_5_2_03_LeaderReject2Hops.py \ - Cert_7_1_01_BorderRouterAsLeader.py \ - Cert_7_1_02_BorderRouterAsRouter.py \ - Cert_7_1_03_BorderRouterAsLeader.py \ - Cert_7_1_04_BorderRouterAsRouter.py \ - Cert_7_1_05_BorderRouterAsRouter.py \ - Cert_7_1_06_BorderRouterAsLeader.py \ - Cert_7_1_07_BorderRouterAsLeader.py \ - Cert_7_1_08_BorderRouterAsFED.py \ - Cert_8_1_01_Commissioning.py \ - Cert_8_1_02_Commissioning.py \ - Cert_8_2_01_JoinerRouter.py \ - Cert_8_2_02_JoinerRouter.py \ - Cert_9_2_01_MGMTCommissionerGet.py \ - Cert_9_2_02_MGMTCommissionerSet.py \ - Cert_9_2_03_ActiveDatasetGet.py \ - Cert_9_2_04_ActiveDataset.py \ - Cert_9_2_05_ActiveDataset.py \ - Cert_9_2_06_DatasetDissemination.py \ - Cert_9_2_07_DelayTimer.py \ - Cert_9_2_08_PersistentDatasets.py \ - Cert_9_2_09_PendingPartition.py \ - Cert_9_2_10_PendingPartition.py \ - Cert_9_2_11_NetworkKey.py \ - Cert_9_2_12_Announce.py \ - Cert_9_2_13_EnergyScan.py \ - Cert_9_2_14_PanIdQuery.py \ - Cert_9_2_15_PendingPartition.py \ - Cert_9_2_16_ActivePendingPartition.py \ - Cert_9_2_17_Orphan.py \ - Cert_9_2_18_RollBackActiveTimestamp.py \ - Cert_9_2_19_PendingDatasetGet.py \ - $(NULL) - -TESTS_ENVIRONMENT = \ - export \ - top_builddir='$(top_builddir)' \ - top_srcdir='$(top_srcdir)' \ - VERBOSE=1; \ - $(NULL) - -TESTS = \ - $(check_PROGRAMS) \ - $(check_SCRIPTS) \ - $(NULL) - -include $(abs_top_nlbuild_autotools_dir)/automake/post.am diff --git a/tests/scripts/thread-cert/__init__.py b/tests/scripts/thread-cert/__init__.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/backbone/test_bmlr.py b/tests/scripts/thread-cert/backbone/test_bmlr.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/backbone/test_dua_dad.py b/tests/scripts/thread-cert/backbone/test_dua_dad.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/backbone/test_dua_routing.py b/tests/scripts/thread-cert/backbone/test_dua_routing.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/backbone/test_dua_routing_med.py b/tests/scripts/thread-cert/backbone/test_dua_routing_med.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/backbone/test_mle_must_not_send_icmpv6_destination_unreachable.py b/tests/scripts/thread-cert/backbone/test_mle_must_not_send_icmpv6_destination_unreachable.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/backbone/test_mlr_multicast_routing.py b/tests/scripts/thread-cert/backbone/test_mlr_multicast_routing.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/backbone/test_mlr_multicast_routing_across_thread_pans.py b/tests/scripts/thread-cert/backbone/test_mlr_multicast_routing_across_thread_pans.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/backbone/test_mlr_multicast_routing_commissioner_timeout.py b/tests/scripts/thread-cert/backbone/test_mlr_multicast_routing_commissioner_timeout.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/backbone/test_mlr_multicast_routing_timeout.py b/tests/scripts/thread-cert/backbone/test_mlr_multicast_routing_timeout.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/backbone/test_ndproxy.py b/tests/scripts/thread-cert/backbone/test_ndproxy.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/LowPower/v1_2_LowPower_5_3_01_SSEDAttachment_BR.py b/tests/scripts/thread-cert/border_router/LowPower/v1_2_LowPower_5_3_01_SSEDAttachment_BR.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/MATN/MATN_02_MLRFirstUse.py b/tests/scripts/thread-cert/border_router/MATN/MATN_02_MLRFirstUse.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/MATN/MATN_03_InvalidCommissionerDeregistration.py b/tests/scripts/thread-cert/border_router/MATN/MATN_03_InvalidCommissionerDeregistration.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/MATN/MATN_04_MulticastListenerTimeout.py b/tests/scripts/thread-cert/border_router/MATN/MATN_04_MulticastListenerTimeout.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/MATN/MATN_05_ReregistrationToSameMulticastGroup.py b/tests/scripts/thread-cert/border_router/MATN/MATN_05_ReregistrationToSameMulticastGroup.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/MATN/MATN_09_DefaultBRMulticastForwarding.py b/tests/scripts/thread-cert/border_router/MATN/MATN_09_DefaultBRMulticastForwarding.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/MATN/MATN_12_HopLimitProcessing.py b/tests/scripts/thread-cert/border_router/MATN/MATN_12_HopLimitProcessing.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/MATN/MATN_15_ChangeOfPrimaryBBRTriggersRegistration.py b/tests/scripts/thread-cert/border_router/MATN/MATN_15_ChangeOfPrimaryBBRTriggersRegistration.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/MATN/MATN_16_LargeNumberOfMulticastGroupSubscriptionsToBBR.py b/tests/scripts/thread-cert/border_router/MATN/MATN_16_LargeNumberOfMulticastGroupSubscriptionsToBBR.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/nat64/test_multi_border_routers.py b/tests/scripts/thread-cert/border_router/nat64/test_multi_border_routers.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/nat64/test_single_border_router.py b/tests/scripts/thread-cert/border_router/nat64/test_single_border_router.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/nat64/test_upstream_dns.py b/tests/scripts/thread-cert/border_router/nat64/test_upstream_dns.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/nat64/test_with_infrastructure_prefix.py b/tests/scripts/thread-cert/border_router/nat64/test_with_infrastructure_prefix.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/test_border_router_as_fed.py b/tests/scripts/thread-cert/border_router/test_border_router_as_fed.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/test_dnssd_instance_name_with_space.py b/tests/scripts/thread-cert/border_router/test_dnssd_instance_name_with_space.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/test_dnssd_server.py b/tests/scripts/thread-cert/border_router/test_dnssd_server.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/test_dnssd_server_multi_border_routers.py b/tests/scripts/thread-cert/border_router/test_dnssd_server_multi_border_routers.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/test_end_device_udp_reachability.py b/tests/scripts/thread-cert/border_router/test_end_device_udp_reachability.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/test_external_route.py b/tests/scripts/thread-cert/border_router/test_external_route.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/test_firewall.py b/tests/scripts/thread-cert/border_router/test_firewall.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/test_manual_address.py b/tests/scripts/thread-cert/border_router/test_manual_address.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/test_manual_maddress.py b/tests/scripts/thread-cert/border_router/test_manual_maddress.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/test_manual_omr_prefix.py b/tests/scripts/thread-cert/border_router/test_manual_omr_prefix.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/test_plat_udp_accessiblity.py b/tests/scripts/thread-cert/border_router/test_plat_udp_accessiblity.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/test_srp_register_500_services_br.py b/tests/scripts/thread-cert/border_router/test_srp_register_500_services_br.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/border_router/test_trel_connectivity.py b/tests/scripts/thread-cert/border_router/test_trel_connectivity.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/coap.py b/tests/scripts/thread-cert/coap.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/command.py b/tests/scripts/thread-cert/command.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/common.py b/tests/scripts/thread-cert/common.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/config.py b/tests/scripts/thread-cert/config.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/debug.py b/tests/scripts/thread-cert/debug.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/dtls.py b/tests/scripts/thread-cert/dtls.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/ipv6.py b/tests/scripts/thread-cert/ipv6.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/lowpan.py b/tests/scripts/thread-cert/lowpan.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/mac802154.py b/tests/scripts/thread-cert/mac802154.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/mesh_cop.py b/tests/scripts/thread-cert/mesh_cop.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/message.py b/tests/scripts/thread-cert/message.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/mle.py b/tests/scripts/thread-cert/mle.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/net_crypto.py b/tests/scripts/thread-cert/net_crypto.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/network_data.py b/tests/scripts/thread-cert/network_data.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/network_diag.py b/tests/scripts/thread-cert/network_diag.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/network_layer.py b/tests/scripts/thread-cert/network_layer.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/pcap.py b/tests/scripts/thread-cert/pcap.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/run_cert_suite.py b/tests/scripts/thread-cert/run_cert_suite.py index 6af09d864..09fc19d61 100755 --- a/tests/scripts/thread-cert/run_cert_suite.py +++ b/tests/scripts/thread-cert/run_cert_suite.py @@ -56,21 +56,28 @@ def bash(cmd: str, check=True, stdout=None): subprocess.run(cmd, shell=True, check=check, stdout=stdout) -def run_cert(job_id: int, port_offset: int, script: str): +def run_cert(job_id: int, port_offset: int, script: str, run_directory: str): + if not os.access(script, os.X_OK): + logging.warning('Skip test %s, not executable', script) + return + try: test_name = os.path.splitext(os.path.basename(script))[0] + '_' + str(job_id) - logfile = f'{test_name}.log' + logfile = f'{run_directory}/{test_name}.log' if run_directory else f'{test_name}.log' env = os.environ.copy() env['PORT_OFFSET'] = str(port_offset) env['TEST_NAME'] = test_name + env['PYTHONPATH'] = os.path.dirname(os.path.abspath(__file__)) try: print(f'Running {test_name}') with open(logfile, 'wt') as output: - subprocess.check_call(["python3", script], + abs_script = os.path.abspath(script) + subprocess.check_call(abs_script, stdout=output, stderr=output, stdin=subprocess.DEVNULL, + cwd=run_directory, env=env) except subprocess.CalledProcessError: bash(f'cat {logfile} 1>&2') @@ -107,10 +114,12 @@ def parse_args(): import argparse parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument('--multiply', type=int, default=1, help='run each test for multiple times') + parser.add_argument('--run-directory', type=str, default=None, help='run each test in the specified directory') parser.add_argument("scripts", nargs='+', type=str, help='specify Backbone test scripts') args = parser.parse_args() logging.info("Max jobs: %d", MAX_JOBS) + logging.info("Run directory: %s", args.run_directory or '.') logging.info("Multiply: %d", args.multiply) logging.info("Test scripts: %d", len(args.scripts)) return args @@ -141,7 +150,7 @@ class PortOffsetPool: self._pool.put_nowait(port_offset) -def run_tests(scripts: List[str], multiply: int = 1): +def run_tests(scripts: List[str], multiply: int = 1, run_directory: str = None): script_fail_count = Counter() script_succ_count = Counter() @@ -168,7 +177,7 @@ def run_tests(scripts: List[str], multiply: int = 1): for script, i in script_ids: port_offset = port_offset_pool.allocate() pool.apply_async( - run_cert, [i, port_offset, script], + run_cert, [i, port_offset, script, run_directory], callback=lambda ret, port_offset=port_offset, script=script: pass_callback(port_offset, script), error_callback=lambda err, port_offset=port_offset, script=script: error_callback( port_offset, script, err)) @@ -189,7 +198,7 @@ def main(): setup_backbone_env() try: - fail_count = run_tests(args.scripts, args.multiply) + fail_count = run_tests(args.scripts, args.multiply, args.run_directory) exit(fail_count) finally: if has_backbone_tests: diff --git a/tests/scripts/thread-cert/sniffer_transport.py b/tests/scripts/thread-cert/sniffer_transport.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/test_dnssd_name_with_special_chars.py b/tests/scripts/thread-cert/test_dnssd_name_with_special_chars.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/test_ping_lla_src.py b/tests/scripts/thread-cert/test_ping_lla_src.py old mode 100644 new mode 100755 diff --git a/tests/scripts/thread-cert/thread_cert.py b/tests/scripts/thread-cert/thread_cert.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/tlvs_parsing.py b/tests/scripts/thread-cert/tlvs_parsing.py old mode 100755 new mode 100644 diff --git a/tests/scripts/thread-cert/wpan.py b/tests/scripts/thread-cert/wpan.py old mode 100755 new mode 100644 diff --git a/tests/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt index adc0647a1..a96be494f 100644 --- a/tests/unit/CMakeLists.txt +++ b/tests/unit/CMakeLists.txt @@ -30,7 +30,6 @@ set(COMMON_INCLUDES ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/src/core - ${PROJECT_SOURCE_DIR}/examples/platforms/simulation ) set(COMMON_COMPILE_OPTIONS diff --git a/tests/unit/test_platform.cpp b/tests/unit/test_platform.cpp index 54f51a14f..548764314 100644 --- a/tests/unit/test_platform.cpp +++ b/tests/unit/test_platform.cpp @@ -26,8 +26,13 @@ * POSSIBILITY OF SUCH DAMAGE. */ +// Disable OpenThread's own new implementation to avoid duplicate definition +#define OT_CORE_COMMON_NEW_HPP_ #include "test_platform.h" +#include +#include + #include #include @@ -37,6 +42,8 @@ enum FLASH_SWAP_NUM = 2, }; +std::map>> settings; + ot::Instance *testInitInstance(void) { otInstance *instance = nullptr; @@ -224,18 +231,78 @@ OT_TOOL_WEAK void otPlatSettingsInit(otInstance *, const uint16_t *, uint16_t) { OT_TOOL_WEAK void otPlatSettingsDeinit(otInstance *) {} -OT_TOOL_WEAK otError otPlatSettingsGet(otInstance *, uint16_t, int, uint8_t *, uint16_t *) +OT_TOOL_WEAK otError otPlatSettingsGet(otInstance *, uint16_t aKey, int aIndex, uint8_t *aValue, uint16_t *aValueLength) { - return OT_ERROR_NOT_FOUND; + auto setting = settings.find(aKey); + + if (setting == settings.end()) + { + return OT_ERROR_NOT_FOUND; + } + + if (aIndex > setting->second.size()) + { + return OT_ERROR_NOT_FOUND; + } + + if (aValueLength == nullptr) + { + return OT_ERROR_NONE; + } + + const auto &data = setting->second[aIndex]; + + if (aValue == nullptr) + { + *aValueLength = data.size(); + return OT_ERROR_NONE; + } + + if (*aValueLength >= data.size()) + { + *aValueLength = data.size(); + } + + memcpy(aValue, &data[0], *aValueLength); + + return OT_ERROR_NONE; } -OT_TOOL_WEAK otError otPlatSettingsSet(otInstance *, uint16_t, const uint8_t *, uint16_t) { return OT_ERROR_NONE; } +OT_TOOL_WEAK otError otPlatSettingsSet(otInstance *, uint16_t aKey, const uint8_t *aValue, uint16_t aValueLength) +{ + auto setting = std::vector(aValue, aValue + aValueLength); -OT_TOOL_WEAK otError otPlatSettingsAdd(otInstance *, uint16_t, const uint8_t *, uint16_t) { return OT_ERROR_NONE; } + settings[aKey].clear(); + settings[aKey].push_back(setting); -OT_TOOL_WEAK otError otPlatSettingsDelete(otInstance *, uint16_t, int) { return OT_ERROR_NONE; } + return OT_ERROR_NONE; +} -OT_TOOL_WEAK void otPlatSettingsWipe(otInstance *) {} +OT_TOOL_WEAK otError otPlatSettingsAdd(otInstance *, uint16_t aKey, const uint8_t *aValue, uint16_t aValueLength) +{ + auto setting = std::vector(aValue, aValue + aValueLength); + settings[aKey].push_back(setting); + + return OT_ERROR_NONE; +} + +OT_TOOL_WEAK otError otPlatSettingsDelete(otInstance *, uint16_t aKey, int aIndex) +{ + auto setting = settings.find(aKey); + if (setting == settings.end()) + { + return OT_ERROR_NOT_FOUND; + } + + if (aIndex >= setting->second.size()) + { + return OT_ERROR_NOT_FOUND; + } + setting->second.erase(setting->second.begin() + aIndex); + return OT_ERROR_NONE; +} + +OT_TOOL_WEAK void otPlatSettingsWipe(otInstance *) { settings.clear(); } uint8_t *GetFlash(void) { diff --git a/third_party/Makefile.am b/third_party/Makefile.am index 5e374316d..825f6e846 100644 --- a/third_party/Makefile.am +++ b/third_party/Makefile.am @@ -30,7 +30,6 @@ include $(abs_top_nlbuild_autotools_dir)/automake/pre.am EXTRA_DIST = \ nlbuild-autotools \ - openthread-test-driver \ $(NULL) # Always package (e.g. for 'make dist') these subdirectories. diff --git a/third_party/openthread-test-driver/LICENSE b/third_party/openthread-test-driver/LICENSE deleted file mode 100644 index d511905c1..000000000 --- a/third_party/openthread-test-driver/LICENSE +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/third_party/openthread-test-driver/README.md b/third_party/openthread-test-driver/README.md deleted file mode 100644 index acffbab67..000000000 --- a/third_party/openthread-test-driver/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Automake test-driver - -## URL - -http://git.savannah.gnu.org/cgit/automake.git/tree/lib/test-driver - -## Version - -2016-01-11.22 - -## License - -GPLv2 - -## License File - -[LICENSE](https://www.gnu.org/licenses/) - -## Description - -Automake testsuite driver script. - -## Modifications - -Change the test-driver automake script to support -parallel test scripts execution, each one initiated -with a unique number. diff --git a/third_party/openthread-test-driver/test-driver b/third_party/openthread-test-driver/test-driver deleted file mode 100755 index 96f6db86f..000000000 --- a/third_party/openthread-test-driver/test-driver +++ /dev/null @@ -1,165 +0,0 @@ -#! /bin/sh -# test-driver - basic testsuite driver script. - -scriptversion=2016-01-11.22; # UTC - -# Copyright (C) 2011-2015 Free Software Foundation, Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -# Make unconditional expansion of undefined variables an error. This -# helps a lot in preventing typo-related bugs. -set -u - -usage_error () -{ - echo "$0: $*" >&2 - print_usage >&2 - exit 2 -} - -print_usage () -{ - cat < /dev/null 2>&1 - if [ $? -eq 0 ]; then - break - fi - OFFSET=$(expr $OFFSET + 1) -done - -# Run a test -TEST_NAME="${test_name}" PORT_OFFSET=$OFFSET python3 "$@" >$log_file 2>&1 -estatus=$? - -# Return the offset -rm -rf "${lock_path}.${OFFSET}.lock.d" -# Remove the flash files -rm -f tmp/${OFFSET}_*.flash tmp/${OFFSET}_*.data tmp/${OFFSET}_*.swap - -if test $enable_hard_errors = no && test $estatus -eq 99; then - tweaked_estatus=1 -else - tweaked_estatus=$estatus -fi - -case $tweaked_estatus:$expect_failure in - 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; - 0:*) col=$grn res=PASS recheck=no gcopy=no;; - 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; - 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; - *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; - *:*) col=$red res=FAIL recheck=yes gcopy=yes;; -esac - -# Report the test outcome and exit status in the logs, so that one can -# know whether the test passed or failed simply by looking at the '.log' -# file, without the need of also peaking into the corresponding '.trs' -# file (automake bug#11814). -echo "$res $test_name (exit status: $estatus)" >>$log_file - -# Report outcome to console. -echo "${col}${res}${std}: $test_name" - -# Register the test result, and other relevant metadata. -echo ":test-result: $res" > $trs_file -echo ":global-test-result: $res" >> $trs_file -echo ":recheck: $recheck" >> $trs_file -echo ":copy-in-global-log: $gcopy" >> $trs_file - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: