wiliot-certificate 4.5.0a1__tar.gz → 4.5.0a2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/PKG-INFO +33 -29
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/README.md +32 -28
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/pyproject.toml +1 -1
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/cert_common.py +12 -13
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/cert_defines.py +1 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/cert_gw_sim.py +3 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/cert_results.py +8 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/cert_utils.py +3 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/certificate_eth_test_list.txt +2 -1
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/certificate_test_list.txt +1 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.json +1 -1
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/acl_test/acl_test.json +1 -1
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.json +1 -1
- wiliot_certificate-4.5.0a2/src/certificate/tests/cloud_connectivity/deduplication_test/deduplication_test.json +14 -0
- wiliot_certificate-4.5.0a2/src/certificate/tests/cloud_connectivity/deduplication_test/deduplication_test.py +85 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.json +1 -1
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.py +10 -9
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/stress_test/stress_test.json +1 -1
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/stress_test/stress_test.py +10 -10
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/uplink_test/uplink_test.py +1 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/num_of_tags_test/num_of_tags_test.json +1 -1
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.json +1 -1
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/api_validation.py +2 -2
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/wiliot_certificate.egg-info/PKG-INFO +33 -29
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/wiliot_certificate.egg-info/SOURCES.txt +2 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/LICENSE +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/setup.cfg +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/__init__.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_cmd_if.html +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/brg2brg_ota.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/brg2gw_hb.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/brg2gw_hb_sleep.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/calibration.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/custom.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/datapath.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/energy2400.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/energySub1g.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/externalSensor.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/interface.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/powerManagement.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/side_info_sensor.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/signal_indicator_data.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/unified_echo_ext_pkt.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/unified_echo_pkt.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/ag/wlt_types_ag_jsons/unified_sensor_pkt.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/cert_config.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/cert_data_sim.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/cert_mqtt.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/cert_prints.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/cert_protobuf.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/certificate.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/certificate_cli.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/certificate_sanity_test_list.txt +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/calibration/interval_test/interval_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/calibration/interval_test/interval_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/calibration/output_power_test/output_power_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/calibration/output_power_test/output_power_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/calibration/pattern_test/pattern_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/calibration/pattern_test/pattern_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/acl_test/acl_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/connection_test/connection_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/connection_test/connection_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/downlink_test/downlink_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/downlink_test/downlink_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/reboot_test/reboot_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/reboot_test/reboot_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/registration_test/registration_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/registration_test/registration_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/registration_test/registration_test_cli.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/cloud_connectivity/uplink_test/uplink_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/aging_test/aging_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/aging_test/aging_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/event_ble5_test/event_ble5_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/event_ble5_test/event_ble5_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/event_test/event_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/event_test/event_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/num_of_tags_test/num_of_tags_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/output_power_test/output_power_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/output_power_test/output_power_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pacer_interval_test/pacer_interval_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pacer_interval_test/pacer_interval_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pattern_test/pattern_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pattern_test/pattern_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pkt_filter_test/pkt_filter_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/pkt_filter_test/pkt_filter_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/rx_channel_hopping_test/rx_channel_hopping_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/rx_channel_hopping_test/rx_channel_hopping_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/rx_channel_test/rx_channel_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/rx_channel_test/rx_channel_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/stress_gen3_test/stress_gen3_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/stress_gen3_test/stress_gen3_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/stress_test/stress_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/stress_test/stress_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/tx_repetition_test/tx_repetition_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/datapath/tx_repetition_test/tx_repetition_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_blink_test/action_blink_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_blink_test/action_blink_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy2400/output_power_test/output_power_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy2400/output_power_test/output_power_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy2400/pattern_test/pattern_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy2400/pattern_test/pattern_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy_sub1g/pattern_test/pattern_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/energy_sub1g/pattern_test/pattern_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/sensors/ext_sensor_test/ext_sensor_test.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/certificate/wlt_types.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/202/data.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/202/logs.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/202/status.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/203/data.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/203/logs.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/203/status.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/204/data.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/204/logs.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/204/status.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/205/data.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/205/logs.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/205/status.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/206/data.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/206/logs.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/206/status.json +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/__init__.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/web/templates/generator.html +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/web/templates/index.html +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/web/templates/menu.html +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/web/templates/parser.html +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/web/templates/wlt_types.html +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/web/web_utils.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/wltPb_pb2.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/wltPb_pb2.pyi +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/wlt_logo.png +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/gui_certificate/__init__.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/gui_certificate/gui_certificate_cli.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/gui_certificate/server.py +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/gui_certificate/templates/cert_run.html +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/wiliot_certificate.egg-info/dependency_links.txt +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/wiliot_certificate.egg-info/entry_points.txt +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/wiliot_certificate.egg-info/requires.txt +0 -0
- {wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/wiliot_certificate.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wiliot_certificate
|
|
3
|
-
Version: 4.5.
|
|
3
|
+
Version: 4.5.0a2
|
|
4
4
|
Summary: A library for certifying Wiliot-compliant boards
|
|
5
5
|
Author-email: Wiliot <support@wiliot.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -34,7 +34,7 @@ Dynamic: license-file
|
|
|
34
34
|
|
|
35
35
|
<!-- Description -->
|
|
36
36
|
wiliot-certificate is a Python library that provides tools for testing and certifying boards for compatibility with Wiliot’s ecosystem.
|
|
37
|
-
This python package includes the following
|
|
37
|
+
This python package includes the following tools:
|
|
38
38
|
- Certification Wizard (`wlt-cert`)
|
|
39
39
|
- Certificate CLI (`wlt-cert-cli`)
|
|
40
40
|
- Tester Upgrade (`wlt-cert-tester-upgrade`)
|
|
@@ -55,33 +55,11 @@ In terminal, run:
|
|
|
55
55
|
````commandline
|
|
56
56
|
wlt-cert
|
|
57
57
|
````
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
This tool is the default to test and certify your device.
|
|
59
|
+
It runs a setup wizard that walks you through the initialization steps before running the tests.
|
|
60
|
+
You'll need a [validation schema](https://community.wiliot.com/customers/s/article/Validation-Schema), tester device and custom broker json file ([more info here](https://community.wiliot.com/customers/s/article/Wiliot-Gateway-Certification)).
|
|
61
|
+
Once set up it opens a terminal and tests your device.
|
|
60
62
|
|
|
61
|
-
#### The following capabilities are not tested in this version
|
|
62
|
-
##### Cloud Connectivity & Misc
|
|
63
|
-
- Board type registered within the Board Type Management system
|
|
64
|
-
- Bridge OTA progress reporting
|
|
65
|
-
##### Power management
|
|
66
|
-
- Functionality of energize and transmit in sleep mode
|
|
67
|
-
##### Edge management
|
|
68
|
-
- Timing of heartbeat and interface packets
|
|
69
|
-
##### Module Energy 2400
|
|
70
|
-
- Functionality of energy pattern, output power and duty cycle
|
|
71
|
-
##### Module Energy SUB1G
|
|
72
|
-
- Functionality of energy pattern and duty cycle
|
|
73
|
-
##### Module Datapath
|
|
74
|
-
- RSSI edge cases: -127 and 0
|
|
75
|
-
- Functionality of transmission pattern, output power
|
|
76
|
-
- Pacer interval with channel 10 and 500k modulation
|
|
77
|
-
- Pacer interval using GEN3 Pixels
|
|
78
|
-
- Packet filter: the following configuration - DEBUG, TEMP & DEBUG, TEMPS & DEBUG & ADVANCE
|
|
79
|
-
- Rx rate feature with extended advertising
|
|
80
|
-
- Functionality of adaptive pacer algorithm
|
|
81
|
-
- Supported Pixels for extended advertising and GEN3
|
|
82
|
-
##### Calibration
|
|
83
|
-
- Functionality of output power and interval calibration
|
|
84
|
-
- Functionality of calibration transmission patterns for the configuration STANDARD & EU & DISABLE
|
|
85
63
|
|
|
86
64
|
|
|
87
65
|
### Certificate CLI
|
|
@@ -107,4 +85,30 @@ wlt-cert-reg
|
|
|
107
85
|
````
|
|
108
86
|
Certify the gateway registration process to Wiliot platform.
|
|
109
87
|
The gateway must use Wiliot production MQTT broker, and mustn't be registered to any account on Wiliot platform.
|
|
110
|
-
Use -h for details on the arguments.
|
|
88
|
+
Use -h for details on the arguments. [More info here](https://community.wiliot.com/customers/s/article/Wiliot-Gateway-Certification)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
## The following capabilities are not tested in this version
|
|
92
|
+
##### Cloud Connectivity & Misc
|
|
93
|
+
- Board type registered within the Board Type Management system
|
|
94
|
+
- Bridge OTA progress reporting
|
|
95
|
+
##### Power management
|
|
96
|
+
- Functionality of energize and transmit in sleep mode
|
|
97
|
+
##### Edge management
|
|
98
|
+
- Timing of heartbeat and interface packets
|
|
99
|
+
##### Module Energy 2400
|
|
100
|
+
- Functionality of energy pattern, output power and duty cycle
|
|
101
|
+
##### Module Energy SUB1G
|
|
102
|
+
- Functionality of energy pattern and duty cycle
|
|
103
|
+
##### Module Datapath
|
|
104
|
+
- RSSI edge cases: -127 and 0
|
|
105
|
+
- Functionality of transmission pattern, output power
|
|
106
|
+
- Pacer interval with channel 10 and 500k modulation
|
|
107
|
+
- Pacer interval using GEN3 Pixels
|
|
108
|
+
- Packet filter: the following configuration - DEBUG, TEMP & DEBUG, TEMPS & DEBUG & ADVANCE
|
|
109
|
+
- Rx rate feature with extended advertising
|
|
110
|
+
- Functionality of adaptive pacer algorithm
|
|
111
|
+
- Supported Pixels for extended advertising and GEN3
|
|
112
|
+
##### Calibration
|
|
113
|
+
- Functionality of output power and interval calibration
|
|
114
|
+
- Functionality of calibration transmission patterns for the configuration STANDARD & EU & DISABLE
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- Description -->
|
|
4
4
|
wiliot-certificate is a Python library that provides tools for testing and certifying boards for compatibility with Wiliot’s ecosystem.
|
|
5
|
-
This python package includes the following
|
|
5
|
+
This python package includes the following tools:
|
|
6
6
|
- Certification Wizard (`wlt-cert`)
|
|
7
7
|
- Certificate CLI (`wlt-cert-cli`)
|
|
8
8
|
- Tester Upgrade (`wlt-cert-tester-upgrade`)
|
|
@@ -23,33 +23,11 @@ In terminal, run:
|
|
|
23
23
|
````commandline
|
|
24
24
|
wlt-cert
|
|
25
25
|
````
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
This tool is the default to test and certify your device.
|
|
27
|
+
It runs a setup wizard that walks you through the initialization steps before running the tests.
|
|
28
|
+
You'll need a [validation schema](https://community.wiliot.com/customers/s/article/Validation-Schema), tester device and custom broker json file ([more info here](https://community.wiliot.com/customers/s/article/Wiliot-Gateway-Certification)).
|
|
29
|
+
Once set up it opens a terminal and tests your device.
|
|
28
30
|
|
|
29
|
-
#### The following capabilities are not tested in this version
|
|
30
|
-
##### Cloud Connectivity & Misc
|
|
31
|
-
- Board type registered within the Board Type Management system
|
|
32
|
-
- Bridge OTA progress reporting
|
|
33
|
-
##### Power management
|
|
34
|
-
- Functionality of energize and transmit in sleep mode
|
|
35
|
-
##### Edge management
|
|
36
|
-
- Timing of heartbeat and interface packets
|
|
37
|
-
##### Module Energy 2400
|
|
38
|
-
- Functionality of energy pattern, output power and duty cycle
|
|
39
|
-
##### Module Energy SUB1G
|
|
40
|
-
- Functionality of energy pattern and duty cycle
|
|
41
|
-
##### Module Datapath
|
|
42
|
-
- RSSI edge cases: -127 and 0
|
|
43
|
-
- Functionality of transmission pattern, output power
|
|
44
|
-
- Pacer interval with channel 10 and 500k modulation
|
|
45
|
-
- Pacer interval using GEN3 Pixels
|
|
46
|
-
- Packet filter: the following configuration - DEBUG, TEMP & DEBUG, TEMPS & DEBUG & ADVANCE
|
|
47
|
-
- Rx rate feature with extended advertising
|
|
48
|
-
- Functionality of adaptive pacer algorithm
|
|
49
|
-
- Supported Pixels for extended advertising and GEN3
|
|
50
|
-
##### Calibration
|
|
51
|
-
- Functionality of output power and interval calibration
|
|
52
|
-
- Functionality of calibration transmission patterns for the configuration STANDARD & EU & DISABLE
|
|
53
31
|
|
|
54
32
|
|
|
55
33
|
### Certificate CLI
|
|
@@ -75,4 +53,30 @@ wlt-cert-reg
|
|
|
75
53
|
````
|
|
76
54
|
Certify the gateway registration process to Wiliot platform.
|
|
77
55
|
The gateway must use Wiliot production MQTT broker, and mustn't be registered to any account on Wiliot platform.
|
|
78
|
-
Use -h for details on the arguments.
|
|
56
|
+
Use -h for details on the arguments. [More info here](https://community.wiliot.com/customers/s/article/Wiliot-Gateway-Certification)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
## The following capabilities are not tested in this version
|
|
60
|
+
##### Cloud Connectivity & Misc
|
|
61
|
+
- Board type registered within the Board Type Management system
|
|
62
|
+
- Bridge OTA progress reporting
|
|
63
|
+
##### Power management
|
|
64
|
+
- Functionality of energize and transmit in sleep mode
|
|
65
|
+
##### Edge management
|
|
66
|
+
- Timing of heartbeat and interface packets
|
|
67
|
+
##### Module Energy 2400
|
|
68
|
+
- Functionality of energy pattern, output power and duty cycle
|
|
69
|
+
##### Module Energy SUB1G
|
|
70
|
+
- Functionality of energy pattern and duty cycle
|
|
71
|
+
##### Module Datapath
|
|
72
|
+
- RSSI edge cases: -127 and 0
|
|
73
|
+
- Functionality of transmission pattern, output power
|
|
74
|
+
- Pacer interval with channel 10 and 500k modulation
|
|
75
|
+
- Pacer interval using GEN3 Pixels
|
|
76
|
+
- Packet filter: the following configuration - DEBUG, TEMP & DEBUG, TEMPS & DEBUG & ADVANCE
|
|
77
|
+
- Rx rate feature with extended advertising
|
|
78
|
+
- Functionality of adaptive pacer algorithm
|
|
79
|
+
- Supported Pixels for extended advertising and GEN3
|
|
80
|
+
##### Calibration
|
|
81
|
+
- Functionality of output power and interval calibration
|
|
82
|
+
- Functionality of calibration transmission patterns for the configuration STANDARD & EU & DISABLE
|
|
@@ -1273,7 +1273,6 @@ def output_power_supported(board_type, output_power):
|
|
|
1273
1273
|
else:
|
|
1274
1274
|
return output_power in ag.OUTPUT_POWER_2_4_SUPPORTED_VALUES
|
|
1275
1275
|
|
|
1276
|
-
|
|
1277
1276
|
def wiliot_pkts_validation(test, all_messages_in_test, all_data_pkts):
|
|
1278
1277
|
PHASE_NAME = "Wiliot packets validation"
|
|
1279
1278
|
phase_run_print(PHASE_NAME)
|
|
@@ -1290,7 +1289,7 @@ def wiliot_pkts_validation(test, all_messages_in_test, all_data_pkts):
|
|
|
1290
1289
|
wiliot_pkts_validation_phase = seq_id_validation(wiliot_pkts_validation_phase, all_data_pkts)
|
|
1291
1290
|
|
|
1292
1291
|
field_functionality_pass_fail_print(wiliot_pkts_validation_phase, PHASE_NAME)
|
|
1293
|
-
test.
|
|
1292
|
+
test.add_phase(wiliot_pkts_validation_phase)
|
|
1294
1293
|
return test
|
|
1295
1294
|
|
|
1296
1295
|
|
|
@@ -1373,19 +1372,19 @@ def generate_graph_stress_test(test, results, test_pkts_received):
|
|
|
1373
1372
|
graph_data = []
|
|
1374
1373
|
for i in range(0, len(results), 2):
|
|
1375
1374
|
if i + 1 < len(results):
|
|
1376
|
-
graph_data.append({'pkts_per_sec': results[i], '
|
|
1375
|
+
graph_data.append({'pkts_per_sec': results[i], 'received_pps': results[i + 1]})
|
|
1377
1376
|
|
|
1378
1377
|
graph_df = pd.DataFrame(graph_data)
|
|
1379
1378
|
html_file_path = os.path.join(ARTIFACTS_DIR, test.dir, 'stress_graph.html')
|
|
1380
1379
|
|
|
1381
1380
|
# First graph: percentage received vs packets per second
|
|
1382
|
-
fig1 = px.line(graph_df, x='pkts_per_sec', y='
|
|
1383
|
-
title='
|
|
1384
|
-
labels={'pkts_per_sec': '
|
|
1385
|
-
markers=True, text='
|
|
1381
|
+
fig1 = px.line(graph_df, x='pkts_per_sec', y='received_pps',
|
|
1382
|
+
title='Packets Per Second Uploaded vs Packets Per Second Advertised',
|
|
1383
|
+
labels={'pkts_per_sec': 'Advertised PPS', 'received_pps': 'Uploaded PPS'},
|
|
1384
|
+
markers=True, text='received_pps')
|
|
1386
1385
|
|
|
1387
|
-
# Set y-axis to
|
|
1388
|
-
fig1.update_yaxes(range=[
|
|
1386
|
+
# Set y-axis to [0 - highest_pps] scale
|
|
1387
|
+
fig1.update_yaxes(range=[0, results[-2]])
|
|
1389
1388
|
|
|
1390
1389
|
# Position text labels next to the markers
|
|
1391
1390
|
fig1.update_traces(textposition="top right")
|
|
@@ -1435,16 +1434,16 @@ def stress_analysis(test, pps, sent_pkts, received_pkts):
|
|
|
1435
1434
|
print(f'Number of packets sent: {pkts_sent_count}')
|
|
1436
1435
|
print(f'Number of packets received: {pkts_received_count}')
|
|
1437
1436
|
percentage_received = round(pkts_received_count * 100 / pkts_sent_count)
|
|
1437
|
+
received_pps = pps * percentage_received / 100
|
|
1438
1438
|
|
|
1439
1439
|
# PASS/FAIL logic
|
|
1440
|
-
|
|
1441
|
-
if stage_pass < 1: # If less than 1% of the packets were received, fail the test
|
|
1440
|
+
if percentage_received < 1: # If less than 1% of the packets were received, fail the test
|
|
1442
1441
|
test.rc = TEST_FAILED
|
|
1443
1442
|
test.reason = "Insufficient amount of packets were scanned & uploaded by the gateway"
|
|
1444
1443
|
else:
|
|
1445
|
-
test.reason = f'
|
|
1444
|
+
test.reason = f'received pps: {received_pps} ({percentage_received}% of packets)'
|
|
1446
1445
|
|
|
1447
|
-
return test,
|
|
1446
|
+
return test, received_pps
|
|
1448
1447
|
|
|
1449
1448
|
|
|
1450
1449
|
def generate_adv_payload(test_indicator, unique_pkt=False):
|
|
@@ -14,6 +14,7 @@ except importlib.metadata.PackageNotFoundError:
|
|
|
14
14
|
CERT_VERSION = LOCAL_DEV
|
|
15
15
|
CERT_MQTT_LOG_FILE = "cert_mqtt_log.json"
|
|
16
16
|
DATA_SIM_LOG_FILE = "data_sim_log.txt"
|
|
17
|
+
RESULT_NOTES_FILE = "results_notes.txt"
|
|
17
18
|
UT_RESULT_FILE_HTML = "results.html"
|
|
18
19
|
UT_RESULT_FILE_PDF = "results.pdf"
|
|
19
20
|
UTILS_BASE_REL_PATH = "../../../utils"
|
|
@@ -255,6 +255,9 @@ def interference_analysis(ble_serial):
|
|
|
255
255
|
for key in CNTRS_KEYS:
|
|
256
256
|
diff_dict[key] = handle_wrap_around(end_cntrs[key] - start_cntrs[key])
|
|
257
257
|
bad_crc_percentage = round((diff_dict[BAD_CRC] / (diff_dict[WLT_RX] + diff_dict[NON_WLT_RX])) * 100)
|
|
258
|
+
notes_file_path = os.path.join(ARTIFACTS_DIR, RESULT_NOTES_FILE)
|
|
259
|
+
with open(notes_file_path, "a") as f:
|
|
260
|
+
f.write(f'Channel {channel[0]} ({channel[1]} MHz) Ambient Interference (bad CRC percentage): {bad_crc_percentage}%\n')
|
|
258
261
|
print(color('WARNING', f'Channel {channel[0]} ({channel[1]} MHz) Ambient Interference (bad CRC percentage) is: {bad_crc_percentage}%'))
|
|
259
262
|
print(f'Good CRC packets = {diff_dict[NON_WLT_RX] + diff_dict[WLT_RX] - diff_dict[BAD_CRC]}, bad CRC packets: {diff_dict[BAD_CRC]}')
|
|
260
263
|
|
|
@@ -36,6 +36,7 @@ BLE_MAC_ADDRESS = "BLE MAC Address"
|
|
|
36
36
|
BOARD_TYPE = "Board Type"
|
|
37
37
|
BLE_VER = "BLE Version"
|
|
38
38
|
SUP_API_VER = "Supported API Version"
|
|
39
|
+
ADD_INFO = "Additional information"
|
|
39
40
|
# TODO: This is a temporary list of all schema module names - remove this when auto generated
|
|
40
41
|
MODULE_SCHEMA_NAMES_LIST = ["Cloud Connectivity", "Edge Management", "Calibration", "Datapath", "Energizer 2.4GHz",
|
|
41
42
|
"Energizer Sub-1GHz", "Power Management", "BLE Sensor", "Custom"]
|
|
@@ -256,6 +257,13 @@ def generate_results_files(dut=None, tester=None, html=True, pdf=True, failures=
|
|
|
256
257
|
hdr_page.append(Paragraph(f"{SIM} {BOARD_TYPE}: {ag.BOARD_TYPES_LIST[internal_brg.board_type]}", bold_text_style))
|
|
257
258
|
hdr_page.append(Paragraph(f"{SIM} {BLE_VER}: {internal_brg.version}", bold_text_style))
|
|
258
259
|
hdr_page.append(Paragraph(f"{SIM} {SUP_API_VER}: {internal_brg.api_version}", bold_text_style))
|
|
260
|
+
notes_file_path = os.path.join(ARTIFACTS_DIR, RESULT_NOTES_FILE)
|
|
261
|
+
if os.path.exists(notes_file_path):
|
|
262
|
+
hdr_page.append(Paragraph(f"<u>{ADD_INFO}:</u>", bold_text_style))
|
|
263
|
+
with open(notes_file_path, 'r') as f:
|
|
264
|
+
for line in f.readlines():
|
|
265
|
+
hdr_page.append(Paragraph(f"{line}", bold_text_style))
|
|
266
|
+
|
|
259
267
|
hdr_page.append(Spacer(1, 20))
|
|
260
268
|
|
|
261
269
|
# Analyze results per module and generate results per module for PDF
|
|
@@ -71,4 +71,5 @@ cloud_connectivity/stress_test 20 40 60 80 100 120 140 160 180 200 222 250 285 3
|
|
|
71
71
|
cloud_connectivity/ext_adv_stress_test 20 40 60 80 100 120 140 160 180 200
|
|
72
72
|
cloud_connectivity/channel_scan_behaviour_test
|
|
73
73
|
cloud_connectivity/acl_test deny allow
|
|
74
|
-
cloud_connectivity/acl_ext_adv_test deny allow
|
|
74
|
+
cloud_connectivity/acl_ext_adv_test deny allow
|
|
75
|
+
cloud_connectivity/deduplication_test
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "Access Control List using Extended Advertising",
|
|
3
3
|
"module": "Cloud Connectivity",
|
|
4
4
|
"purpose": "Test the access control list (ACL) functionality, configure allow list and deny list and test the behavior, while the Bridge is transmitting in extended advertising",
|
|
5
|
-
"documentation": "
|
|
5
|
+
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network---Gateway-Extended-Advertising-Implementation",
|
|
6
6
|
"initialCondition": "Gateway configured to defaults",
|
|
7
7
|
"procedure": ["Test prolog", "configure the brg to be on the deny list", "configure the brg to be on the allow list", "Test epilog"],
|
|
8
8
|
"expectedOutcome": "For the deny list - no unified packets are found, for the allow list - unified packets are found",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "Access Control List",
|
|
3
3
|
"module": "Cloud Connectivity",
|
|
4
4
|
"purpose": "Test the access control list (ACL) functionality, configure allow list and deny list and test the behavior",
|
|
5
|
-
"documentation": "
|
|
5
|
+
"documentation": "https://community.wiliot.com/customers/s/article/Access-Control-List",
|
|
6
6
|
"initialCondition": "Gateway configured to defaults",
|
|
7
7
|
"procedure": ["Test prolog", "configure the brg to be on the deny list", "configure the brg to be on the allow list", "Test epilog"],
|
|
8
8
|
"expectedOutcome": "For the deny list - no unified packets are found, for the allow list - unified packets are found",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "Gateway Channel behavior",
|
|
3
3
|
"module": "Cloud Connectivity",
|
|
4
4
|
"purpose": "Test gateway's channel scanning time cycles on all main channels",
|
|
5
|
-
"documentation": "
|
|
5
|
+
"documentation": "",
|
|
6
6
|
"initialCondition": "Gateway configured with default settings",
|
|
7
7
|
"procedure": ["Test prolog",
|
|
8
8
|
"Send packets as close as possible to continuously on all 3 channels, with a unique channel identifier",
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Gateway Deduplication",
|
|
3
|
+
"module": "Cloud Connectivity",
|
|
4
|
+
"purpose": "Test gateway's packet deduplication capability when receiving identical BLE packets",
|
|
5
|
+
"documentation": "",
|
|
6
|
+
"initialCondition": "Gateway configured to defaults",
|
|
7
|
+
"procedure": ["Test prolog", "Send mixed packet types (pixels, mgmt, sensor, side_info_sensor) via data simulator", "Collect received packets from MQTT", "Analyze duplicate packets and calculate duplicate percentage", "Test epilog"],
|
|
8
|
+
"expectedOutcome": "Duplicate percentage should be <= 5% of total received packets",
|
|
9
|
+
"mandatory": 0,
|
|
10
|
+
"multiBridgeTest": 0,
|
|
11
|
+
"gwOnlyTest": 1,
|
|
12
|
+
"dataSimOnlyTest": 1,
|
|
13
|
+
"allSupportedValues": []
|
|
14
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# This test meant to show the GW performance when is put in a pkt stress generated from the BLE via the UART
|
|
2
|
+
from certificate.cert_prints import *
|
|
3
|
+
from certificate.cert_defines import *
|
|
4
|
+
from certificate.wlt_types import *
|
|
5
|
+
import certificate.cert_common as cert_common
|
|
6
|
+
import certificate.cert_utils as cert_utils
|
|
7
|
+
import certificate.cert_mqtt as cert_mqtt
|
|
8
|
+
import certificate.cert_data_sim as cert_data_sim
|
|
9
|
+
import pandas as pd
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# DEFINES
|
|
13
|
+
UPLINK_TEST_INDICATOR = cert_utils.get_random_hex_str(len=6)
|
|
14
|
+
NUM_OF_BRGS = 3
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# HELPER FUNCTIONS
|
|
18
|
+
def duplication_analysis(test, pkts, received_pkts):
|
|
19
|
+
if len(received_pkts) == 0:
|
|
20
|
+
test.rc = TEST_FAILED
|
|
21
|
+
test.reason = "No packets were received!"
|
|
22
|
+
return test
|
|
23
|
+
|
|
24
|
+
_sent_pkts = []
|
|
25
|
+
for pkt in pkts:
|
|
26
|
+
pkt_str = pkt.get_pkt()
|
|
27
|
+
adva_endianness_change = cert_common.change_endianness(pkt_str[:12]) + pkt_str[12:] # Switch to big endian adva
|
|
28
|
+
_sent_pkts.append(adva_endianness_change)
|
|
29
|
+
|
|
30
|
+
sent_df = pd.DataFrame(_sent_pkts, columns=[PACKETS])
|
|
31
|
+
received_df = pd.DataFrame(received_pkts, columns=[PACKETS])
|
|
32
|
+
|
|
33
|
+
merged_df = pd.merge(sent_df, received_df, on=PACKETS, how='inner')
|
|
34
|
+
# Count total received packets (including duplicates) and unique packets
|
|
35
|
+
pkts_received_total = len(merged_df)
|
|
36
|
+
merged_df_unique = merged_df.drop_duplicates(subset=[PACKETS])
|
|
37
|
+
pkts_duplicates = pkts_received_total - len(merged_df_unique)
|
|
38
|
+
|
|
39
|
+
# Prints
|
|
40
|
+
print(f'Number of packets sent: {len(sent_df)}')
|
|
41
|
+
print(f'Number of packets received in total: {pkts_received_total}, out of them {pkts_duplicates} are duplicates')
|
|
42
|
+
|
|
43
|
+
duplicate_percentage = (pkts_duplicates / pkts_received_total) * 100
|
|
44
|
+
print(f'{duplicate_percentage:.2f}% of the received packets are duplicates')
|
|
45
|
+
|
|
46
|
+
if duplicate_percentage > 5.0:
|
|
47
|
+
test.rc = TEST_FAILED
|
|
48
|
+
test.reason = f"{duplicate_percentage:.2f}% of the received packets are duplicates"
|
|
49
|
+
return test
|
|
50
|
+
|
|
51
|
+
return test
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def run(test):
|
|
55
|
+
test = cert_common.test_prolog(test)
|
|
56
|
+
if test.rc == TEST_FAILED:
|
|
57
|
+
return cert_common.test_epilog(test)
|
|
58
|
+
|
|
59
|
+
dut_mqttc = test.get_mqttc_by_target(DUT)
|
|
60
|
+
dut_mqttc.flush_pkts()
|
|
61
|
+
pkts = []
|
|
62
|
+
|
|
63
|
+
# generate pkts and send them using data simulator
|
|
64
|
+
data_pkts, _ = cert_data_sim.brg_pkt_gen(num_of_pkts_per_brg=10, num_of_brgs=NUM_OF_BRGS,
|
|
65
|
+
pkt_type=PIXELS_PKT, indicator=UPLINK_TEST_INDICATOR)
|
|
66
|
+
|
|
67
|
+
mgmt_pkts, _ = cert_data_sim.brg_pkt_gen(num_of_pkts_per_brg=10, num_of_brgs=NUM_OF_BRGS,
|
|
68
|
+
pkt_type=MGMT_PKT, indicator=UPLINK_TEST_INDICATOR)
|
|
69
|
+
sensor_pkts, _ = cert_data_sim.brg_pkt_gen(num_of_pkts_per_brg=10, num_of_brgs=NUM_OF_BRGS,
|
|
70
|
+
pkt_type=SENSOR_PKT, indicator=UPLINK_TEST_INDICATOR)
|
|
71
|
+
si_pkts, _ = cert_data_sim.brg_pkt_gen(num_of_pkts_per_brg=10, num_of_brgs=NUM_OF_BRGS,
|
|
72
|
+
pkt_type=SIDE_INFO_SENSOR_PKT, indicator=UPLINK_TEST_INDICATOR)
|
|
73
|
+
pkts = data_pkts + mgmt_pkts + sensor_pkts + si_pkts
|
|
74
|
+
|
|
75
|
+
pixel_sim_thread = cert_data_sim.GenericSimThread(test=test, pkts=pkts, send_single_cycle=True)
|
|
76
|
+
pixel_sim_thread.start()
|
|
77
|
+
|
|
78
|
+
mqtt_scan_wait(test, 10 + test.dut.upload_wait_time)
|
|
79
|
+
cert_mqtt.dump_pkts(test, log="deduplication_test")
|
|
80
|
+
recieved_pkts = cert_mqtt.get_all_data_pkts(dut_mqttc, indicator=UPLINK_TEST_INDICATOR)
|
|
81
|
+
pixel_sim_thread.stop()
|
|
82
|
+
|
|
83
|
+
test = duplication_analysis(test, pkts, [p[ALIAS_BRIDGE_ID] + p[PAYLOAD] for p in recieved_pkts])
|
|
84
|
+
|
|
85
|
+
return cert_common.test_epilog(test)
|
|
@@ -51,13 +51,13 @@ def run(test):
|
|
|
51
51
|
|
|
52
52
|
cert_config.gw_action(test, f'{cert_gw_sim.BLE_SIM_INIT} 1', TESTER)
|
|
53
53
|
|
|
54
|
+
ppses = [20, 40, 60, 80, 100, 120, 140, 160, 180, 200]
|
|
54
55
|
test_pkts_received = []
|
|
55
56
|
data_pkts_received = []
|
|
56
57
|
results = []
|
|
57
|
-
for
|
|
58
|
-
phase_run_print(f"PPS = {
|
|
58
|
+
for pps in ppses:
|
|
59
|
+
phase_run_print(f"PPS = {pps}")
|
|
59
60
|
test.flush_all_mqtt_packets()
|
|
60
|
-
pps = param.value
|
|
61
61
|
# adv_duration is increased only for lowest pps to increase packets sample for reliable results
|
|
62
62
|
adv_duration = ADV_DURATION_LOWEST_PPS if pps == LOWEST_PPS else ADV_DURATION_DEFAULT
|
|
63
63
|
delay = math.floor(1000 / pps) # This should be bigger than 2ms
|
|
@@ -74,17 +74,18 @@ def run(test):
|
|
|
74
74
|
cert_config.gw_action(test, gw_action_cmd, TESTER)
|
|
75
75
|
mqtt_scan_wait(test, adv_duration + upload_wait_time)
|
|
76
76
|
|
|
77
|
-
cert_mqtt.dump_pkts(test, log=
|
|
77
|
+
cert_mqtt.dump_pkts(test, log=str(pps))
|
|
78
78
|
phase_pkts_received = cert_mqtt.get_all_aggregated_data_pkts(test.get_mqttc_by_target(DUT), indicator=STRESS_TEST_INDICATOR)
|
|
79
79
|
|
|
80
|
-
test,
|
|
80
|
+
test, received_pps = cert_common.stress_analysis(
|
|
81
81
|
test, pps, generated_payloads,
|
|
82
82
|
[(p[ALIAS_BRIDGE_ID] + p[AGGREGATED_PAYLOAD]) for p in phase_pkts_received])
|
|
83
|
-
results.extend([pps,
|
|
84
|
-
cert_mqtt.generate_log_file(test,
|
|
83
|
+
results.extend([pps, received_pps])
|
|
84
|
+
cert_mqtt.generate_log_file(test, str(pps))
|
|
85
85
|
|
|
86
|
-
test.
|
|
87
|
-
test.
|
|
86
|
+
test.add_phase(cert_utils.Phase(pps))
|
|
87
|
+
test.set_phase_rc(str(pps), test.rc)
|
|
88
|
+
test.add_phase_reason(str(pps), test.reason)
|
|
88
89
|
if test.rc == TEST_FAILED and test.exit_on_param_failure:
|
|
89
90
|
break # break the whole for loop and keep the test as failed
|
|
90
91
|
test.reset_result() # reset result and continue to next param
|
|
@@ -50,14 +50,13 @@ def run(test):
|
|
|
50
50
|
return cert_common.test_epilog(test)
|
|
51
51
|
|
|
52
52
|
cert_config.gw_action(test, f'{cert_gw_sim.BLE_SIM_INIT} 1', TESTER)
|
|
53
|
-
|
|
53
|
+
ppses = [20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 222, 250, 285, 333]
|
|
54
54
|
test_pkts_received = []
|
|
55
55
|
data_pkts_received = []
|
|
56
56
|
results = []
|
|
57
|
-
for
|
|
58
|
-
phase_run_print(f"PPS = {
|
|
57
|
+
for pps in ppses:
|
|
58
|
+
phase_run_print(f"PPS = {pps}")
|
|
59
59
|
test.flush_all_mqtt_packets()
|
|
60
|
-
pps = param.value
|
|
61
60
|
# adv_duration is increased only for lowest pps to increase packets sample for reliable results
|
|
62
61
|
adv_duration = ADV_DURATION_LOWEST_PPS if pps == LOWEST_PPS else ADV_DURATION_DEFAULT
|
|
63
62
|
delay = math.floor(1000 / pps)
|
|
@@ -73,17 +72,18 @@ def run(test):
|
|
|
73
72
|
f'{BLE_SIM_ADV_37_38_39} {delay} {BLE_SIM_RADIO_1MBPS} {adv_duration * pps}', TESTER)
|
|
74
73
|
mqtt_scan_wait(test, adv_duration + upload_wait_time)
|
|
75
74
|
|
|
76
|
-
cert_mqtt.dump_pkts(test, log=
|
|
75
|
+
cert_mqtt.dump_pkts(test, log=str(pps))
|
|
77
76
|
phase_pkts_received = cert_mqtt.get_all_data_pkts(test.get_mqttc_by_target(DUT), indicator=STRESS_TEST_INDICATOR)
|
|
78
77
|
|
|
79
|
-
test,
|
|
78
|
+
test, received_pps = cert_common.stress_analysis(
|
|
80
79
|
test, pps, generated_payloads,
|
|
81
80
|
[(p[ALIAS_BRIDGE_ID] + p[PAYLOAD]) for p in phase_pkts_received])
|
|
82
|
-
results.extend([pps,
|
|
83
|
-
cert_mqtt.generate_log_file(test,
|
|
81
|
+
results.extend([pps, received_pps])
|
|
82
|
+
cert_mqtt.generate_log_file(test, str(pps))
|
|
84
83
|
|
|
85
|
-
test.
|
|
86
|
-
test.
|
|
84
|
+
test.add_phase(cert_utils.Phase(pps))
|
|
85
|
+
test.set_phase_rc(str(pps), test.rc)
|
|
86
|
+
test.add_phase_reason(str(pps), test.reason)
|
|
87
87
|
if test.rc == TEST_FAILED and test.exit_on_param_failure:
|
|
88
88
|
break # break the whole for loop and keep the test as failed
|
|
89
89
|
test.reset_result() # reset result and continue to next param
|
|
@@ -130,6 +130,7 @@ def run(test):
|
|
|
130
130
|
|
|
131
131
|
mqtt_scan_wait(test, 10 + test.dut.upload_wait_time)
|
|
132
132
|
cert_mqtt.dump_pkts(test, log=param.name)
|
|
133
|
+
pixel_sim_thread.stop()
|
|
133
134
|
all_data_messages_in_test.extend(dut_mqttc._userdata[PKTS].data)
|
|
134
135
|
all_data_pkts.extend(cert_mqtt.get_all_data_pkts(dut_mqttc))
|
|
135
136
|
recieved_pkts = cert_mqtt.get_all_data_pkts(dut_mqttc, indicator=UPLINK_TEST_INDICATOR)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "Supported Pixels",
|
|
3
3
|
"module": "Datapath",
|
|
4
4
|
"purpose": "Test pixels handling in the bridge for different amount of pixels",
|
|
5
|
-
"documentation": "
|
|
5
|
+
"documentation": "",
|
|
6
6
|
"initialCondition": "Bridge & data simulator configured to defaults",
|
|
7
7
|
"procedure": ["Test prolog",
|
|
8
8
|
"Generate packets from the given amount of pixels & scan for packets in the bridge",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "RSSI Threshold",
|
|
3
3
|
"module": "Datapath",
|
|
4
4
|
"purpose": "Test RSSI threshold configuration and functionality in the bridge",
|
|
5
|
-
"documentation": "
|
|
5
|
+
"documentation": "",
|
|
6
6
|
"initialCondition": "Bridge configured to defaults",
|
|
7
7
|
"procedure": ["Test prolog",
|
|
8
8
|
"RSSI Threshold configuration",
|
{wiliot_certificate-4.5.0a1 → wiliot_certificate-4.5.0a2}/src/common/api_if/api_validation.py
RENAMED
|
@@ -23,7 +23,7 @@ def api_validation(test):
|
|
|
23
23
|
utPrint("API validation is skipped for protobuf messages", "WARNING")
|
|
24
24
|
api_validation_phase.rc = TEST_SKIPPED
|
|
25
25
|
api_validation_phase.reason = "API validation is skipped for protobuf messages"
|
|
26
|
-
test.
|
|
26
|
+
test.add_phase(api_validation_phase)
|
|
27
27
|
return test
|
|
28
28
|
else:
|
|
29
29
|
def validate_message(message: dict, msg_type=MESSAGE_TYPES.DATA.value) -> tuple[bool, str]:
|
|
@@ -81,5 +81,5 @@ def api_validation(test):
|
|
|
81
81
|
api_validation_phase.rc = TEST_FAILED
|
|
82
82
|
api_validation_phase.reason = "API (JSON strcture) is invalid"
|
|
83
83
|
field_functionality_pass_fail_print(api_validation_phase, API_VALIDATION)
|
|
84
|
-
test.
|
|
84
|
+
test.add_phase(api_validation_phase)
|
|
85
85
|
return test
|