wiliot-certificate 4.4.3__py3-none-any.whl → 4.5.0__py3-none-any.whl
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.
- {brg_certificate → certificate}/ag/wlt_cmd_if.html +10 -4
- {brg_certificate → certificate}/ag/wlt_types_ag.py +1878 -519
- certificate/cert_common.py +1488 -0
- certificate/cert_config.py +480 -0
- {brg_certificate → certificate}/cert_data_sim.py +134 -46
- {brg_certificate → certificate}/cert_defines.py +129 -128
- {brg_certificate → certificate}/cert_gw_sim.py +183 -53
- {brg_certificate → certificate}/cert_mqtt.py +179 -64
- {brg_certificate → certificate}/cert_prints.py +35 -33
- {brg_certificate → certificate}/cert_protobuf.py +15 -6
- {brg_certificate → certificate}/cert_results.py +240 -64
- certificate/cert_utils.py +634 -0
- certificate/certificate.py +205 -0
- certificate/certificate_cli.py +76 -0
- certificate/certificate_eth_test_list.txt +76 -0
- certificate/certificate_sanity_test_list.txt +66 -0
- certificate/certificate_test_list.txt +76 -0
- {brg_certificate → certificate}/tests/calibration/interval_test/interval_test.json +3 -2
- {brg_certificate → certificate}/tests/calibration/interval_test/interval_test.py +7 -6
- certificate/tests/calibration/output_power_test/output_power_test.json +23 -0
- certificate/tests/calibration/output_power_test/output_power_test.py +39 -0
- {brg_certificate → certificate}/tests/calibration/pattern_test/pattern_test.json +2 -1
- {brg_certificate → certificate}/tests/calibration/pattern_test/pattern_test.py +20 -15
- certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.json +15 -0
- certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.py +140 -0
- certificate/tests/cloud_connectivity/acl_test/acl_test.json +15 -0
- certificate/tests/cloud_connectivity/acl_test/acl_test.py +96 -0
- certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.json +19 -0
- certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.py +41 -0
- certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.json +19 -0
- certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.py +215 -0
- certificate/tests/cloud_connectivity/connection_test/connection_test.json +18 -0
- certificate/tests/cloud_connectivity/connection_test/connection_test.py +67 -0
- certificate/tests/cloud_connectivity/deduplication_test/deduplication_test.json +15 -0
- certificate/tests/cloud_connectivity/deduplication_test/deduplication_test.py +80 -0
- certificate/tests/cloud_connectivity/downlink_test/downlink_test.json +21 -0
- certificate/tests/cloud_connectivity/downlink_test/downlink_test.py +201 -0
- certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.json +17 -0
- certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.py +104 -0
- certificate/tests/cloud_connectivity/reboot_test/reboot_test.json +18 -0
- certificate/tests/cloud_connectivity/reboot_test/reboot_test.py +59 -0
- certificate/tests/cloud_connectivity/registration_test/registration_test.json +20 -0
- certificate/tests/cloud_connectivity/registration_test/registration_test.py +384 -0
- certificate/tests/cloud_connectivity/registration_test/registration_test_cli.py +90 -0
- certificate/tests/cloud_connectivity/stress_test/stress_test.json +17 -0
- certificate/tests/cloud_connectivity/stress_test/stress_test.py +101 -0
- certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.json +25 -0
- certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.py +92 -0
- certificate/tests/cloud_connectivity/uplink_test/uplink_test.json +20 -0
- certificate/tests/cloud_connectivity/uplink_test/uplink_test.py +169 -0
- {brg_certificate → certificate}/tests/datapath/aging_test/aging_test.json +2 -1
- certificate/tests/datapath/aging_test/aging_test.py +142 -0
- certificate/tests/datapath/event_ble5_test/event_ble5_test.json +17 -0
- certificate/tests/datapath/event_ble5_test/event_ble5_test.py +89 -0
- certificate/tests/datapath/event_test/event_test.json +17 -0
- certificate/tests/datapath/event_test/event_test.py +80 -0
- {brg_certificate → certificate}/tests/datapath/num_of_tags_test/num_of_tags_test.json +4 -3
- {brg_certificate → certificate}/tests/datapath/num_of_tags_test/num_of_tags_test.py +19 -13
- certificate/tests/datapath/output_power_test/output_power_test.json +23 -0
- {brg_certificate → certificate}/tests/datapath/output_power_test/output_power_test.py +17 -6
- {brg_certificate → certificate}/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.json +2 -1
- {brg_certificate → certificate}/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.py +13 -11
- {brg_certificate → certificate}/tests/datapath/pacer_interval_test/pacer_interval_test.json +2 -1
- {brg_certificate → certificate}/tests/datapath/pacer_interval_test/pacer_interval_test.py +9 -7
- {brg_certificate → certificate}/tests/datapath/pattern_test/pattern_test.json +3 -2
- {brg_certificate → certificate}/tests/datapath/pattern_test/pattern_test.py +18 -6
- certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.json +20 -0
- certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.py +61 -0
- {brg_certificate → certificate}/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.json +2 -1
- {brg_certificate → certificate}/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.py +15 -14
- certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.json +19 -0
- certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.py +85 -0
- {brg_certificate → certificate}/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.json +2 -1
- {brg_certificate → certificate}/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.py +10 -9
- {brg_certificate → certificate}/tests/datapath/pkt_filter_test/pkt_filter_test.json +2 -1
- {brg_certificate → certificate}/tests/datapath/pkt_filter_test/pkt_filter_test.py +10 -9
- {brg_certificate → certificate}/tests/datapath/rssi_threshold_test/rssi_threshold_test.json +3 -2
- {brg_certificate → certificate}/tests/datapath/rssi_threshold_test/rssi_threshold_test.py +9 -8
- brg_certificate/tests/datapath/output_power_test/output_power_test.json → certificate/tests/datapath/rx_channel_hopping_test/rx_channel_hopping_test.json +6 -4
- certificate/tests/datapath/rx_channel_hopping_test/rx_channel_hopping_test.py +77 -0
- {brg_certificate → certificate}/tests/datapath/rx_channel_test/rx_channel_test.json +3 -2
- {brg_certificate → certificate}/tests/datapath/rx_channel_test/rx_channel_test.py +7 -6
- {brg_certificate → certificate}/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.json +8 -7
- {brg_certificate → certificate}/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.py +113 -73
- {brg_certificate → certificate}/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.json +8 -7
- {brg_certificate → certificate}/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.py +112 -72
- {brg_certificate → certificate}/tests/datapath/stress_gen3_test/stress_gen3_test.json +4 -3
- {brg_certificate → certificate}/tests/datapath/stress_gen3_test/stress_gen3_test.py +15 -11
- {brg_certificate → certificate}/tests/datapath/stress_test/stress_test.json +4 -3
- {brg_certificate → certificate}/tests/datapath/stress_test/stress_test.py +15 -11
- {brg_certificate → certificate}/tests/datapath/tx_repetition_test/tx_repetition_test.json +3 -1
- {brg_certificate → certificate}/tests/datapath/tx_repetition_test/tx_repetition_test.py +14 -13
- certificate/tests/edge_mgmt/action_blink_test/action_blink_test.json +15 -0
- certificate/tests/edge_mgmt/action_blink_test/action_blink_test.py +24 -0
- certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.json +15 -0
- certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.py +43 -0
- certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.json +15 -0
- certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.py +42 -0
- certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.json +15 -0
- certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.py +44 -0
- certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.json +16 -0
- certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.py +42 -0
- certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.json +15 -0
- certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.py +49 -0
- certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.json +15 -0
- certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.py +102 -0
- certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.json +15 -0
- certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.py +45 -0
- {brg_certificate → certificate}/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.json +3 -2
- {brg_certificate → certificate}/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.py +22 -11
- {brg_certificate → certificate}/tests/energy2400/duty_cycle_test/duty_cycle_test.json +2 -1
- {brg_certificate → certificate}/tests/energy2400/duty_cycle_test/duty_cycle_test.py +7 -6
- certificate/tests/energy2400/output_power_test/output_power_test.json +23 -0
- {brg_certificate → certificate}/tests/energy2400/output_power_test/output_power_test.py +17 -6
- {brg_certificate → certificate}/tests/energy2400/pattern_test/pattern_test.json +2 -1
- {brg_certificate → certificate}/tests/energy2400/pattern_test/pattern_test.py +7 -6
- certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.json +26 -0
- certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.py +379 -0
- certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.json +20 -0
- certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.py +173 -0
- certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +24 -0
- certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +350 -0
- {brg_certificate → certificate}/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.json +2 -1
- {brg_certificate → certificate}/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.py +7 -6
- {brg_certificate → certificate}/tests/energy_sub1g/pattern_test/pattern_test.json +2 -1
- {brg_certificate → certificate}/tests/energy_sub1g/pattern_test/pattern_test.py +7 -6
- {brg_certificate → certificate}/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.json +2 -1
- {brg_certificate → certificate}/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.py +10 -10
- {brg_certificate → certificate}/tests/sensors/ext_sensor_test/ext_sensor_test.json +5 -4
- certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +450 -0
- certificate/wlt_types.py +122 -0
- {gw_certificate → common}/api_if/202/status.json +6 -0
- {gw_certificate → common}/api_if/203/status.json +6 -0
- {gw_certificate → common}/api_if/204/status.json +6 -0
- common/api_if/206/data.json +85 -0
- common/api_if/206/status.json +69 -0
- common/api_if/api_validation.py +91 -0
- common/web/templates/generator.html +210 -0
- common/web/templates/index.html +20 -0
- common/web/templates/menu.html +54 -0
- common/web/templates/parser.html +53 -0
- {brg_certificate/ag → common/web/templates}/wlt_types.html +1216 -191
- common/web/web_utils.py +399 -0
- {brg_certificate → common}/wltPb_pb2.py +14 -12
- {gw_certificate/common → common}/wltPb_pb2.pyi +16 -2
- gui_certificate/gui_certificate_cli.py +14 -0
- gui_certificate/server.py +1267 -0
- gui_certificate/templates/cert_run.html +1273 -0
- wiliot_certificate-4.5.0.dist-info/METADATA +99 -0
- wiliot_certificate-4.5.0.dist-info/RECORD +168 -0
- {wiliot_certificate-4.4.3.dist-info → wiliot_certificate-4.5.0.dist-info}/WHEEL +1 -1
- wiliot_certificate-4.5.0.dist-info/entry_points.txt +5 -0
- wiliot_certificate-4.5.0.dist-info/top_level.txt +3 -0
- brg_certificate/ag/energous_v0_defines.py +0 -925
- brg_certificate/ag/energous_v1_defines.py +0 -931
- brg_certificate/ag/energous_v2_defines.py +0 -925
- brg_certificate/ag/energous_v3_defines.py +0 -925
- brg_certificate/ag/energous_v4_defines.py +0 -925
- brg_certificate/ag/fanstel_lan_v0_defines.py +0 -925
- brg_certificate/ag/fanstel_lte_v0_defines.py +0 -925
- brg_certificate/ag/fanstel_wifi_v0_defines.py +0 -925
- brg_certificate/ag/minew_lte_v0_defines.py +0 -925
- brg_certificate/ag/wlt_types_ag_jsons/brg2brg_ota.json +0 -142
- brg_certificate/ag/wlt_types_ag_jsons/brg2gw_hb.json +0 -785
- brg_certificate/ag/wlt_types_ag_jsons/brg2gw_hb_sleep.json +0 -139
- brg_certificate/ag/wlt_types_ag_jsons/calibration.json +0 -394
- brg_certificate/ag/wlt_types_ag_jsons/custom.json +0 -515
- brg_certificate/ag/wlt_types_ag_jsons/datapath.json +0 -672
- brg_certificate/ag/wlt_types_ag_jsons/energy2400.json +0 -550
- brg_certificate/ag/wlt_types_ag_jsons/energySub1g.json +0 -595
- brg_certificate/ag/wlt_types_ag_jsons/externalSensor.json +0 -598
- brg_certificate/ag/wlt_types_ag_jsons/interface.json +0 -938
- brg_certificate/ag/wlt_types_ag_jsons/powerManagement.json +0 -1234
- brg_certificate/ag/wlt_types_ag_jsons/side_info_sensor.json +0 -105
- brg_certificate/ag/wlt_types_ag_jsons/signal_indicator_data.json +0 -77
- brg_certificate/ag/wlt_types_ag_jsons/unified_echo_ext_pkt.json +0 -61
- brg_certificate/ag/wlt_types_ag_jsons/unified_echo_pkt.json +0 -110
- brg_certificate/brg_certificate.py +0 -225
- brg_certificate/brg_certificate_cli.py +0 -63
- brg_certificate/cert_common.py +0 -923
- brg_certificate/cert_config.py +0 -402
- brg_certificate/cert_utils.py +0 -362
- brg_certificate/certificate_bcc_sanity_test_list.txt +0 -40
- brg_certificate/certificate_bcc_test_list.txt +0 -48
- brg_certificate/certificate_sanity_test_list.txt +0 -43
- brg_certificate/certificate_test_list.txt +0 -53
- brg_certificate/config/eclipse.json +0 -10
- brg_certificate/config/hivemq.json +0 -10
- brg_certificate/config/mosquitto.json +0 -10
- brg_certificate/config/mosquitto.md +0 -95
- brg_certificate/config/wiliot-dev.json +0 -10
- brg_certificate/restore_brg.py +0 -61
- brg_certificate/tests/calibration/output_power_test/output_power_test.json +0 -16
- brg_certificate/tests/calibration/output_power_test/output_power_test.py +0 -28
- brg_certificate/tests/datapath/aging_test/aging_test.py +0 -143
- brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.json +0 -16
- brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.py +0 -73
- brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.json +0 -17
- brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.py +0 -118
- brg_certificate/tests/edge_mgmt/actions_test/actions_test.json +0 -14
- brg_certificate/tests/edge_mgmt/actions_test/actions_test.py +0 -396
- brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.json +0 -20
- brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.py +0 -94
- brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.json +0 -19
- brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.py +0 -87
- brg_certificate/tests/edge_mgmt/leds_test/leds_test.json +0 -17
- brg_certificate/tests/edge_mgmt/leds_test/leds_test.py +0 -223
- brg_certificate/tests/edge_mgmt/ota_test/ota_test.json +0 -17
- brg_certificate/tests/edge_mgmt/ota_test/ota_test.py +0 -128
- brg_certificate/tests/energy2400/output_power_test/output_power_test.json +0 -16
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.json +0 -20
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.py +0 -321
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.json +0 -20
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.py +0 -321
- brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.json +0 -20
- brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.py +0 -141
- brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +0 -20
- brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +0 -276
- brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.json +0 -20
- brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.py +0 -390
- brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.json +0 -16
- brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.py +0 -28
- brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +0 -305
- brg_certificate/wltPb_pb2.pyi +0 -234
- brg_certificate/wlt_types.py +0 -113
- gw_certificate/ag/ut_defines.py +0 -364
- gw_certificate/ag/wlt_types.py +0 -85
- gw_certificate/ag/wlt_types_ag.py +0 -5310
- gw_certificate/ag/wlt_types_data.py +0 -64
- gw_certificate/api/extended_api.py +0 -23
- gw_certificate/api_if/200/data.json +0 -106
- gw_certificate/api_if/200/status.json +0 -47
- gw_certificate/api_if/201/data.json +0 -98
- gw_certificate/api_if/201/status.json +0 -53
- gw_certificate/api_if/205/logs.json +0 -12
- gw_certificate/api_if/api_validation.py +0 -38
- gw_certificate/api_if/gw_capabilities.py +0 -54
- gw_certificate/cert_results.py +0 -145
- gw_certificate/common/analysis_data_bricks.py +0 -60
- gw_certificate/common/debug.py +0 -42
- gw_certificate/common/serialization_formatter.py +0 -93
- gw_certificate/common/utils.py +0 -8
- gw_certificate/common/utils_defines.py +0 -15
- gw_certificate/common/wltPb_pb2.py +0 -84
- gw_certificate/gw_certificate.py +0 -154
- gw_certificate/gw_certificate_cli.py +0 -87
- gw_certificate/interface/4.4.93_app.zip +0 -0
- gw_certificate/interface/4.4.93_sd_bl_app.zip +0 -0
- gw_certificate/interface/ble_simulator.py +0 -61
- gw_certificate/interface/ble_sniffer.py +0 -189
- gw_certificate/interface/flash_fw.py +0 -90
- gw_certificate/interface/if_defines.py +0 -36
- gw_certificate/interface/mqtt.py +0 -563
- gw_certificate/interface/nrfutil-linux +0 -0
- gw_certificate/interface/nrfutil-mac +0 -0
- gw_certificate/interface/nrfutil.exe +0 -0
- gw_certificate/interface/pkt_generator.py +0 -594
- gw_certificate/interface/uart_if.py +0 -236
- gw_certificate/interface/uart_ports.py +0 -20
- gw_certificate/templates/results.html +0 -241
- gw_certificate/templates/stage.html +0 -22
- gw_certificate/templates/table.html +0 -6
- gw_certificate/templates/test.html +0 -38
- gw_certificate/tests/__init__.py +0 -10
- gw_certificate/tests/actions.py +0 -289
- gw_certificate/tests/bad_crc_to_PER_quantization.csv +0 -51
- gw_certificate/tests/connection.py +0 -188
- gw_certificate/tests/downlink.py +0 -172
- gw_certificate/tests/generic.py +0 -238
- gw_certificate/tests/registration.py +0 -340
- gw_certificate/tests/static/__init__.py +0 -0
- gw_certificate/tests/static/connection_defines.py +0 -9
- gw_certificate/tests/static/downlink_defines.py +0 -9
- gw_certificate/tests/static/generated_packet_table.py +0 -195
- gw_certificate/tests/static/packet_table.csv +0 -10067
- gw_certificate/tests/static/references.py +0 -5
- gw_certificate/tests/static/uplink_defines.py +0 -14
- gw_certificate/tests/throughput.py +0 -240
- gw_certificate/tests/uplink.py +0 -853
- wiliot_certificate-4.4.3.dist-info/METADATA +0 -211
- wiliot_certificate-4.4.3.dist-info/RECORD +0 -210
- wiliot_certificate-4.4.3.dist-info/entry_points.txt +0 -3
- wiliot_certificate-4.4.3.dist-info/top_level.txt +0 -3
- {brg_certificate → certificate}/__init__.py +0 -0
- {gw_certificate → common}/api_if/202/data.json +0 -0
- {gw_certificate/api_if/200 → common/api_if/202}/logs.json +0 -0
- {gw_certificate → common}/api_if/203/data.json +0 -0
- {gw_certificate/api_if/201 → common/api_if/203}/logs.json +0 -0
- {gw_certificate → common}/api_if/204/data.json +0 -0
- {gw_certificate/api_if/202 → common/api_if/204}/logs.json +0 -0
- {gw_certificate → common}/api_if/205/data.json +0 -0
- {gw_certificate/api_if/203 → common/api_if/205}/logs.json +0 -0
- {gw_certificate → common}/api_if/205/status.json +0 -0
- {gw_certificate/api_if/204 → common/api_if/206}/logs.json +0 -0
- {gw_certificate → common/api_if}/__init__.py +0 -0
- {gw_certificate/api_if → gui_certificate}/__init__.py +0 -0
- {wiliot_certificate-4.4.3.dist-info → wiliot_certificate-4.5.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from certificate.cert_prints import *
|
|
2
|
+
from certificate.cert_defines import *
|
|
3
|
+
from certificate.wlt_types import *
|
|
4
|
+
import certificate.cert_mqtt as cert_mqtt
|
|
5
|
+
import certificate.cert_common as cert_common
|
|
6
|
+
import certificate.cert_config as cert_config
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def run(test):
|
|
10
|
+
test = cert_common.test_prolog(test)
|
|
11
|
+
if test.rc == TEST_FAILED:
|
|
12
|
+
return cert_common.test_epilog(test)
|
|
13
|
+
|
|
14
|
+
if test.active_brg.board_type in POF_NOT_SUPPORTING_BOARD_TYPES:
|
|
15
|
+
test.rc = TEST_SKIPPED
|
|
16
|
+
return cert_common.test_epilog(test)
|
|
17
|
+
functionality_run_print("action_get_module")
|
|
18
|
+
|
|
19
|
+
# CHECK ONLY FOR ONE MODULE (ModuleDatapath) #
|
|
20
|
+
# send action
|
|
21
|
+
print("\nCHECK ONLY FOR ModuleDatapath\n")
|
|
22
|
+
cert_config.send_brg_action(test, ag.ACTION_GET_MODULE, datapath=1)
|
|
23
|
+
# analysis
|
|
24
|
+
test = cert_common.search_action_ack(test, ag.ACTION_GET_MODULE, datapath=1)
|
|
25
|
+
test = cert_common.scan_for_modules(test, [test.active_brg.datapath])
|
|
26
|
+
if test.rc == TEST_FAILED:
|
|
27
|
+
return cert_common.test_epilog(test)
|
|
28
|
+
|
|
29
|
+
# CHECK FOR ALL MODULES AT ONCE #
|
|
30
|
+
# send action
|
|
31
|
+
print("\nCHECK FOR ALL MODULES AT ONCE\n")
|
|
32
|
+
cert_config.send_brg_action(test, ag.ACTION_GET_MODULE, interface=1, datapath=1, energy2400=1,
|
|
33
|
+
energy_sub1g=1, calibration=1, pwr_mgmt=1, ext_sensors=1, custom=1)
|
|
34
|
+
# analysis
|
|
35
|
+
test = cert_common.search_action_ack(test, ag.ACTION_GET_MODULE, interface=1, datapath=1, energy2400=1,
|
|
36
|
+
energy_sub1g=1, calibration=1, pwr_mgmt=1, ext_sensors=1, custom=1)
|
|
37
|
+
test = cert_common.scan_for_modules(test)
|
|
38
|
+
|
|
39
|
+
cert_mqtt.generate_log_file(test, "action_get_module")
|
|
40
|
+
field_functionality_pass_fail_print(test, "action_get_module")
|
|
41
|
+
|
|
42
|
+
return cert_common.test_epilog(test)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Get POF Data Action",
|
|
3
|
+
"module": "Edge Management",
|
|
4
|
+
"purpose": "Test get POF data action functionality",
|
|
5
|
+
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Bridge-Modular-Architecture",
|
|
6
|
+
"initialCondition": "Bridge configured to defaults",
|
|
7
|
+
"procedure": ["Test prolog", "Send get POF data action and test bridge's response accordingly", "Test epilog"],
|
|
8
|
+
"expectedOutcome": "Bridge returned an ack for the action, and sent a POF data packet.",
|
|
9
|
+
"mandatory": 0,
|
|
10
|
+
"multiBridgeTest": 0,
|
|
11
|
+
"gwOnlyTest": 0,
|
|
12
|
+
"dataSimOnlyTest": 0,
|
|
13
|
+
"SupportedFromApiVersion": 12,
|
|
14
|
+
"allSupportedValues": []
|
|
15
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
from certificate.cert_prints import *
|
|
2
|
+
from certificate.cert_defines import *
|
|
3
|
+
from certificate.wlt_types import *
|
|
4
|
+
import certificate.cert_mqtt as cert_mqtt
|
|
5
|
+
import certificate.cert_common as cert_common
|
|
6
|
+
import certificate.cert_config as cert_config
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def run(test):
|
|
10
|
+
test = cert_common.test_prolog(test)
|
|
11
|
+
if test.rc == TEST_FAILED:
|
|
12
|
+
return cert_common.test_epilog(test)
|
|
13
|
+
|
|
14
|
+
if test.active_brg.board_type in POF_NOT_SUPPORTING_BOARD_TYPES:
|
|
15
|
+
test.rc = TEST_SKIPPED
|
|
16
|
+
return cert_common.test_epilog(test)
|
|
17
|
+
|
|
18
|
+
functionality_run_print("action_get_pof_data")
|
|
19
|
+
|
|
20
|
+
# send action
|
|
21
|
+
cert_config.send_brg_action(test, ag.ACTION_GET_POF_DATA)
|
|
22
|
+
# analysis
|
|
23
|
+
test = cert_common.search_action_ack(test, ag.ACTION_GET_POF_DATA)
|
|
24
|
+
if test.rc == TEST_FAILED:
|
|
25
|
+
return cert_common.test_epilog(test)
|
|
26
|
+
|
|
27
|
+
found_packet = False
|
|
28
|
+
custom_pkts = cert_mqtt.get_all_custom_pkts(test)
|
|
29
|
+
for p in custom_pkts:
|
|
30
|
+
if ("{:02X}{:02X}{:02X}".format(p[UNIFIED_SENSOR_PKT].pkt.sensor_ad_type,
|
|
31
|
+
p[UNIFIED_SENSOR_PKT].pkt.sensor_uuid_msb,
|
|
32
|
+
p[UNIFIED_SENSOR_PKT].pkt.sensor_uuid_lsb) ==
|
|
33
|
+
f"{ag.SENSOR_SERVICE_ID_POF_DATA:06X}"):
|
|
34
|
+
print_pkt(p)
|
|
35
|
+
found_packet = True
|
|
36
|
+
break
|
|
37
|
+
if found_packet is False:
|
|
38
|
+
test.rc = TEST_FAILED
|
|
39
|
+
test.add_reason("Didn't find pof data packet.")
|
|
40
|
+
|
|
41
|
+
cert_mqtt.generate_log_file(test, "action_get_pof_data")
|
|
42
|
+
field_functionality_pass_fail_print(test, "action_get_pof_data")
|
|
43
|
+
|
|
44
|
+
return cert_common.test_epilog(test)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "GW Heartbeat Action",
|
|
3
|
+
"module": "Edge Management",
|
|
4
|
+
"purpose": "Test GW Heartbeat action functionality",
|
|
5
|
+
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Bridge-Modular-Architecture",
|
|
6
|
+
"initialCondition": "Bridge configured to defaults",
|
|
7
|
+
"procedure": ["Test prolog", "Send GW HB action and test bridge's response accordingly", "Test epilog"],
|
|
8
|
+
"expectedOutcome": "Bridge sent a GW HB packet.",
|
|
9
|
+
"mandatory": 1,
|
|
10
|
+
"multiBridgeTest": 0,
|
|
11
|
+
"gwOnlyTest": 0,
|
|
12
|
+
"bridgeOnlyTest": 1,
|
|
13
|
+
"dataSimOnlyTest": 0,
|
|
14
|
+
"SupportedFromApiVersion": 12,
|
|
15
|
+
"allSupportedValues": []
|
|
16
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from certificate.cert_prints import *
|
|
2
|
+
from certificate.cert_defines import *
|
|
3
|
+
from certificate.wlt_types import *
|
|
4
|
+
import certificate.cert_mqtt as cert_mqtt
|
|
5
|
+
import certificate.cert_common as cert_common
|
|
6
|
+
import certificate.cert_config as cert_config
|
|
7
|
+
import random
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def run(test):
|
|
11
|
+
test = cert_common.test_prolog(test)
|
|
12
|
+
if test.rc == TEST_FAILED:
|
|
13
|
+
return cert_common.test_epilog(test)
|
|
14
|
+
|
|
15
|
+
functionality_run_print("action_gw_hb")
|
|
16
|
+
|
|
17
|
+
# Create randomized 13 bytes hex to send as the gw
|
|
18
|
+
randomized_gw = ''.join(f'{b:02X}' for b in bytes([random.randint(0, 255) for _ in range(13)]))
|
|
19
|
+
randomized_gw = hex_str2int(randomized_gw)
|
|
20
|
+
# send action
|
|
21
|
+
cert_config.send_brg_action(test, ag.ACTION_GW_HB, gw_id=randomized_gw)
|
|
22
|
+
# analysis
|
|
23
|
+
gw_hb_pkt = eval_pkt(f'ActionGwHbV{test.active_brg.api_version}')
|
|
24
|
+
test, mgmt_pkts = cert_common.scan_for_mgmt_pkts(test, [gw_hb_pkt])
|
|
25
|
+
if not mgmt_pkts:
|
|
26
|
+
test.add_reason("Didn't find ACTION GW HB ACK pkts")
|
|
27
|
+
test.rc = TEST_FAILED
|
|
28
|
+
else:
|
|
29
|
+
for p in mgmt_pkts:
|
|
30
|
+
if p[MGMT_PKT].pkt.rssi == 0 or randomized_gw != p[MGMT_PKT].pkt.gw_id:
|
|
31
|
+
if p[MGMT_PKT].pkt.rssi == 0:
|
|
32
|
+
print("ERROR: PKT RSSI is zero!")
|
|
33
|
+
test.add_reason("RSSI is zero on the ACTION GW HB ACK pkt")
|
|
34
|
+
else:
|
|
35
|
+
print(f"ERROR: GW ID does not match!\nGW_ID: {p[MGMT_PKT].pkt.gw_id}\nrandomized_gw: {randomized_gw}")
|
|
36
|
+
test.add_reason("GW ID not found on the ACTION GW HB ACK pkt")
|
|
37
|
+
test.rc = TEST_FAILED
|
|
38
|
+
|
|
39
|
+
cert_mqtt.generate_log_file(test, "action_gw_hb")
|
|
40
|
+
field_functionality_pass_fail_print(test, "action_gw_hb")
|
|
41
|
+
|
|
42
|
+
return cert_common.test_epilog(test)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Reboot Action",
|
|
3
|
+
"module": "Edge Management",
|
|
4
|
+
"purpose": "Test rebot action functionality",
|
|
5
|
+
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Bridge-Modular-Architecture",
|
|
6
|
+
"initialCondition": "Bridge configured to defaults",
|
|
7
|
+
"procedure": ["Test prolog", "Configure bridge to non-default configurations, send reboot action, and test bridge's response accordingly", "Test epilog"],
|
|
8
|
+
"expectedOutcome": "Bridge rebooted properly and kept its configurations.",
|
|
9
|
+
"mandatory": 1,
|
|
10
|
+
"multiBridgeTest": 0,
|
|
11
|
+
"gwOnlyTest": 0,
|
|
12
|
+
"dataSimOnlyTest": 0,
|
|
13
|
+
"SupportedFromApiVersion": 12,
|
|
14
|
+
"allSupportedValues": []
|
|
15
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from certificate.cert_prints import *
|
|
2
|
+
from certificate.cert_defines import *
|
|
3
|
+
from certificate.wlt_types import *
|
|
4
|
+
import certificate.cert_mqtt as cert_mqtt
|
|
5
|
+
import certificate.cert_common as cert_common
|
|
6
|
+
import certificate.cert_config as cert_config
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def run(test):
|
|
10
|
+
test = cert_common.test_prolog(test)
|
|
11
|
+
if test.rc == TEST_FAILED:
|
|
12
|
+
return cert_common.test_epilog(test)
|
|
13
|
+
|
|
14
|
+
functionality_run_print("action_reboot")
|
|
15
|
+
|
|
16
|
+
# configure tester to listen to ch39 so we can receieve euro pattern packets
|
|
17
|
+
test = cert_config.brg_configure(test, fields=[BRG_RX_CHANNEL], values=[ag.RX_CHANNEL_39],
|
|
18
|
+
module=test.tester.internal_brg.datapath,
|
|
19
|
+
target=TESTER)[0]
|
|
20
|
+
if test.rc == TEST_FAILED:
|
|
21
|
+
return cert_common.test_epilog(test)
|
|
22
|
+
# non-default cfg
|
|
23
|
+
test = cert_common.brg_non_default_modules_cfg(test)
|
|
24
|
+
if test.rc == TEST_FAILED and test.exit_on_param_failure:
|
|
25
|
+
return cert_common.test_epilog(test, revert_brgs=True)
|
|
26
|
+
# sample non-default cfg_hash
|
|
27
|
+
test, non_default_hash = cert_common.get_cfg_hash(test)
|
|
28
|
+
if test.active_brg.cfg_hash == non_default_hash:
|
|
29
|
+
test.rc = TEST_FAILED
|
|
30
|
+
test.add_reason(f"Config failed default_hash==non_default==0x{non_default_hash:08X}")
|
|
31
|
+
if test.rc == TEST_FAILED:
|
|
32
|
+
return cert_common.test_epilog(test)
|
|
33
|
+
print(f"\nnon_default_hash: 0x{non_default_hash:08X}\n")
|
|
34
|
+
# send action
|
|
35
|
+
cert_config.send_brg_action(test, ag.ACTION_REBOOT)
|
|
36
|
+
# analysis
|
|
37
|
+
test = cert_common.reboot_config_analysis(test, expected_hash=non_default_hash, timeout=40)
|
|
38
|
+
# epilog
|
|
39
|
+
test = cert_config.config_brg_defaults(test)[0]
|
|
40
|
+
if test.rc == TEST_FAILED:
|
|
41
|
+
return cert_common.test_epilog(test)
|
|
42
|
+
|
|
43
|
+
# configure tester to listen to default channel again
|
|
44
|
+
test = cert_config.brg_configure(test, module=test.tester.internal_brg.datapath, target=TESTER)[0]
|
|
45
|
+
|
|
46
|
+
cert_mqtt.generate_log_file(test, "action_reboot")
|
|
47
|
+
field_functionality_pass_fail_print(test, "action_reboot")
|
|
48
|
+
|
|
49
|
+
return cert_common.test_epilog(test)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Restore Defaults Action",
|
|
3
|
+
"module": "Edge Management",
|
|
4
|
+
"purpose": "Test restore defaults action functionality",
|
|
5
|
+
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Bridge-Modular-Architecture",
|
|
6
|
+
"initialCondition": "Bridge configured to defaults",
|
|
7
|
+
"procedure": ["Test prolog", "Configure bridge to non-default configurations, send restore defaults action, and test bridge's response accordingly", "Test epilog"],
|
|
8
|
+
"expectedOutcome": "Bridge rebooted properly and restored its default configurations.",
|
|
9
|
+
"mandatory": 1,
|
|
10
|
+
"multiBridgeTest": 0,
|
|
11
|
+
"gwOnlyTest": 0,
|
|
12
|
+
"dataSimOnlyTest": 0,
|
|
13
|
+
"SupportedFromApiVersion": 13,
|
|
14
|
+
"allSupportedValues": []
|
|
15
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
from certificate.cert_prints import *
|
|
2
|
+
from certificate.cert_defines import *
|
|
3
|
+
from certificate.wlt_types import *
|
|
4
|
+
import certificate.cert_mqtt as cert_mqtt
|
|
5
|
+
import certificate.cert_common as cert_common
|
|
6
|
+
import certificate.cert_config as cert_config
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def run(test):
|
|
10
|
+
test = cert_common.test_prolog(test)
|
|
11
|
+
if test.rc == TEST_FAILED:
|
|
12
|
+
return cert_common.test_epilog(test)
|
|
13
|
+
|
|
14
|
+
functionality_run_print("action_restore_defaults")
|
|
15
|
+
|
|
16
|
+
# configure tester to listen to ch39 so we can receieve euro pattern packets
|
|
17
|
+
test = cert_config.brg_configure(test, fields=[BRG_RX_CHANNEL], values=[ag.RX_CHANNEL_39],
|
|
18
|
+
module=test.tester.internal_brg.datapath,
|
|
19
|
+
target=TESTER)[0]
|
|
20
|
+
if test.rc == TEST_FAILED:
|
|
21
|
+
return cert_common.test_epilog(test)
|
|
22
|
+
# non-default cfg
|
|
23
|
+
test = cert_common.brg_non_default_modules_cfg(test)
|
|
24
|
+
if test.rc == TEST_FAILED and test.exit_on_param_failure:
|
|
25
|
+
return cert_common.test_epilog(test, revert_brgs=True)
|
|
26
|
+
# sample non-default cfg_hash
|
|
27
|
+
test, non_default_hash = cert_common.get_cfg_hash(test)
|
|
28
|
+
if test.rc == TEST_FAILED:
|
|
29
|
+
# revert to defaults without restore_defaults action if action failed
|
|
30
|
+
test = cert_config.config_brg_defaults(test)[0]
|
|
31
|
+
return cert_common.test_epilog(test)
|
|
32
|
+
# send action
|
|
33
|
+
cert_config.send_brg_action(test, ag.ACTION_RESTORE_DEFAULTS)
|
|
34
|
+
# analysis
|
|
35
|
+
expected_hash = test.active_brg.cfg_hash
|
|
36
|
+
utPrint("Analyzing Restore Defaults", "BLUE")
|
|
37
|
+
# First 30 for wlt app start + 10 sec extra for brg to settle to recieve its get module action
|
|
38
|
+
wait_time_n_print(40, txt="Analyzing Restore Defaults")
|
|
39
|
+
|
|
40
|
+
start_time = datetime.datetime.now()
|
|
41
|
+
seq_ids = []
|
|
42
|
+
cfg_once = True
|
|
43
|
+
test.get_mqttc_by_target(DUT).flush_pkts()
|
|
44
|
+
|
|
45
|
+
utPrint(f"Get Interface Module from BRG {test.active_brg.id_str}")
|
|
46
|
+
cert_config.send_brg_action(test, ag.ACTION_GET_MODULE, interface=1)
|
|
47
|
+
test = cert_common.search_action_ack(test, ag.ACTION_GET_MODULE, interface=1)
|
|
48
|
+
if test.rc == TEST_FAILED:
|
|
49
|
+
return cert_common.test_epilog(test)
|
|
50
|
+
|
|
51
|
+
while True:
|
|
52
|
+
# scan for ModuleIf pkt of all api versions to support api version change on update
|
|
53
|
+
mgmt_types = [eval_pkt(f'ModuleIfV{test.active_brg.api_version}')]
|
|
54
|
+
pkts = cert_mqtt.get_brg2gw_mgmt_pkts(test.get_mqttc_by_target(DUT), test.active_brg, mgmt_types=mgmt_types)
|
|
55
|
+
for p in pkts:
|
|
56
|
+
if (not seq_ids or p[SEQUENCE_ID] not in seq_ids):
|
|
57
|
+
seq_ids.append(p[SEQUENCE_ID])
|
|
58
|
+
interface = p[MGMT_PKT].pkt
|
|
59
|
+
if interface:
|
|
60
|
+
test.active_brg.api_version = interface.api_version
|
|
61
|
+
print(f"\nGot pkt after {(datetime.datetime.now() - start_time).seconds} sec!")
|
|
62
|
+
print(interface)
|
|
63
|
+
received_hash = interface.cfg_hash
|
|
64
|
+
print(f"\nexpected cfg_hash: 0x{expected_hash:08X}\n"
|
|
65
|
+
f"received cfg_hash: 0x{received_hash:08X}\n"
|
|
66
|
+
f"non_default_hash: 0x{non_default_hash:08X}")
|
|
67
|
+
if received_hash == non_default_hash:
|
|
68
|
+
# test.rc = TEST_FAILED
|
|
69
|
+
test.add_reason("received_hash is equal to non_default_hash, ACTION_RESTORE_DEFAULTS was not received by the brg!")
|
|
70
|
+
# return test
|
|
71
|
+
elif received_hash == expected_hash:
|
|
72
|
+
return cert_common.test_epilog(test)
|
|
73
|
+
else:
|
|
74
|
+
# Default SUB1G EP in the BRG is 0 and in the UT is 9
|
|
75
|
+
# in order to allign BRG cfg to the one after ut.py start script
|
|
76
|
+
# we should configure sub1g ep individually once after reboot in case cfg hash dont match
|
|
77
|
+
if ag.MODULE_ENERGY_SUB1G in test.active_brg.sup_caps and cfg_once:
|
|
78
|
+
cfg_once = False
|
|
79
|
+
cfg_pkt = cert_config.get_default_brg_pkt(test,
|
|
80
|
+
test.active_brg.energy_sub1g,
|
|
81
|
+
**{BRG_PATTERN: ag.SUB1G_ENERGY_PATTERN_ISRAEL})
|
|
82
|
+
test = cert_config.brg_configure(test, cfg_pkt=cfg_pkt)[0]
|
|
83
|
+
if test.rc == TEST_FAILED:
|
|
84
|
+
return cert_common.test_epilog(test)
|
|
85
|
+
cert_config.send_brg_action(test, ag.ACTION_GET_MODULE, interface=1)
|
|
86
|
+
print_update_wait()
|
|
87
|
+
|
|
88
|
+
if (datetime.datetime.now() - start_time).seconds > DEFAULT_BRG_FIELD_UPDATE_TIMEOUT:
|
|
89
|
+
test.rc = TEST_FAILED
|
|
90
|
+
test.add_reason(f"Didn't receive expected ModuleIfV{test.active_brg.api_version} pkt "
|
|
91
|
+
f"after {DEFAULT_BRG_FIELD_UPDATE_TIMEOUT} seconds!")
|
|
92
|
+
# revert to defaults without restore_defaults action if action failed
|
|
93
|
+
test = cert_config.config_brg_defaults(test)[0]
|
|
94
|
+
break
|
|
95
|
+
|
|
96
|
+
# configure tester to listen to default channel again
|
|
97
|
+
test = cert_config.brg_configure(test, module=test.tester.internal_brg.datapath, target=TESTER)[0]
|
|
98
|
+
|
|
99
|
+
cert_mqtt.generate_log_file(test, "action_restore_defaults")
|
|
100
|
+
field_functionality_pass_fail_print(test, "action_restore_defaults")
|
|
101
|
+
|
|
102
|
+
return cert_common.test_epilog(test)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Send Heartbeat Action",
|
|
3
|
+
"module": "Edge Management",
|
|
4
|
+
"purpose": "Test send Heartbeat action functionality",
|
|
5
|
+
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Bridge-Modular-Architecture",
|
|
6
|
+
"initialCondition": "Bridge configured to defaults",
|
|
7
|
+
"procedure": ["Test prolog", "Send HB action and test bridge's response accordingly", "Test epilog"],
|
|
8
|
+
"expectedOutcome": "Bridge sent a HB packet.",
|
|
9
|
+
"mandatory": 1,
|
|
10
|
+
"multiBridgeTest": 0,
|
|
11
|
+
"gwOnlyTest": 0,
|
|
12
|
+
"dataSimOnlyTest": 0,
|
|
13
|
+
"SupportedFromApiVersion": 12,
|
|
14
|
+
"allSupportedValues": []
|
|
15
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
from certificate.cert_prints import *
|
|
2
|
+
from certificate.cert_defines import *
|
|
3
|
+
from certificate.wlt_types import *
|
|
4
|
+
import certificate.cert_mqtt as cert_mqtt
|
|
5
|
+
import certificate.cert_common as cert_common
|
|
6
|
+
import certificate.cert_config as cert_config
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def run(test):
|
|
10
|
+
test = cert_common.test_prolog(test)
|
|
11
|
+
if test.rc == TEST_FAILED:
|
|
12
|
+
return cert_common.test_epilog(test)
|
|
13
|
+
|
|
14
|
+
functionality_run_print("action_send_hb")
|
|
15
|
+
|
|
16
|
+
# send action
|
|
17
|
+
cert_config.send_brg_action(test, ag.ACTION_SEND_HB)
|
|
18
|
+
# analysis
|
|
19
|
+
test, mgmt_pkts = cert_common.scan_for_mgmt_pkts(test, [eval_pkt(f'Brg2GwHbV{test.active_brg.api_version}')])
|
|
20
|
+
if not mgmt_pkts:
|
|
21
|
+
test.add_reason("Didn't find ACTION HB pkt")
|
|
22
|
+
test.rc = TEST_FAILED
|
|
23
|
+
elif test.active_brg.api_version >= ag.API_VERSION_V13:
|
|
24
|
+
utPrint("Got HB pkt", "GREEN")
|
|
25
|
+
algo_tx_rep_val = []
|
|
26
|
+
for p in mgmt_pkts:
|
|
27
|
+
algo_tx_rep_val.append(p[MGMT_PKT].pkt.algo_tx_rep)
|
|
28
|
+
if test.dut_is_combo() and any(val != 0 for val in algo_tx_rep_val):
|
|
29
|
+
invalid_vals = [val for val in algo_tx_rep_val if val != 0]
|
|
30
|
+
print(f"ERROR: tx_rep_algo yielded invalid value(s) {invalid_vals} instead of '0' for internal brg!")
|
|
31
|
+
test.add_reason("Internal's BRG tx_rep_algo isn't working as expected!")
|
|
32
|
+
test.rc = TEST_FAILED
|
|
33
|
+
elif test.dut_is_bridge() and any((val < 1 or val > 3) for val in algo_tx_rep_val):
|
|
34
|
+
invalid_vals = [val for val in algo_tx_rep_val if val < 1 or val > 3]
|
|
35
|
+
print(f"ERROR: tx_rep_algo yielded invalid value(s) {invalid_vals}!")
|
|
36
|
+
test.add_reason("BRG's tx_rep_algo isn't working as expected!")
|
|
37
|
+
test.rc = TEST_FAILED
|
|
38
|
+
print(f"tx_rep_algo yielded valid value(s) of - {algo_tx_rep_val}")
|
|
39
|
+
else:
|
|
40
|
+
utPrint("Got HB pkt, Skipping tx_rep_algo hb field check - API version < V13", "GREEN")
|
|
41
|
+
|
|
42
|
+
cert_mqtt.generate_log_file(test, "action_send_hb")
|
|
43
|
+
field_functionality_pass_fail_print(test, "action_send_hb")
|
|
44
|
+
|
|
45
|
+
return cert_common.test_epilog(test)
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
"name": "Periodic Messages",
|
|
3
3
|
"module": "Edge Management",
|
|
4
4
|
"purpose": "Test periodic messages (heartbeat and interface) sent from the bridge",
|
|
5
|
-
"documentation": "
|
|
5
|
+
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Bridge-Modular-Architecture",
|
|
6
6
|
"initialCondition": "Bridge configured to defaults",
|
|
7
7
|
"procedure": ["Test prolog", "Scan for heartbeat and interface packets", "Test epilog"],
|
|
8
8
|
"expectedOutcome": "Both heartbeat and interface packets received from the bridge within 65 seconds",
|
|
9
9
|
"mandatory": 1,
|
|
10
10
|
"multiBridgeTest": 0,
|
|
11
11
|
"gwOnlyTest": 0,
|
|
12
|
-
"
|
|
12
|
+
"dataSimOnlyTest": 0,
|
|
13
|
+
"SupportedFromApiVersion": 12,
|
|
13
14
|
"allSupportedValues": []
|
|
14
15
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
from
|
|
2
|
-
from
|
|
3
|
-
from
|
|
4
|
-
import
|
|
1
|
+
from certificate.cert_prints import *
|
|
2
|
+
from certificate.cert_defines import *
|
|
3
|
+
from certificate.wlt_types import *
|
|
4
|
+
import certificate.cert_mqtt as cert_mqtt
|
|
5
|
+
import certificate.cert_common as cert_common
|
|
5
6
|
|
|
6
7
|
BRG_PER_MSGS_SCAN_TIMEOUT = 65
|
|
7
8
|
|
|
@@ -13,18 +14,28 @@ def scan_for_brg_periodic_msgs(test, timeout=BRG_PER_MSGS_SCAN_TIMEOUT, only_hb=
|
|
|
13
14
|
for pkt_type in found:
|
|
14
15
|
if pkt_type != HB:
|
|
15
16
|
found[pkt_type] = True
|
|
16
|
-
else: #
|
|
17
|
-
test.
|
|
17
|
+
else: # flush pkts if only_hb=False
|
|
18
|
+
test.get_mqttc_by_target(DUT).flush_pkts()
|
|
18
19
|
|
|
19
20
|
start_time = datetime.datetime.now()
|
|
20
21
|
# Search for packets
|
|
21
22
|
while not all(found.values()):
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
mgmt_types = [eval_pkt(f'Brg2GwHbV{test.active_brg.api_version}')]
|
|
24
|
+
hb_pkts = cert_mqtt.get_brg2gw_mgmt_pkts(
|
|
25
|
+
test.get_mqttc_by_target(DUT),
|
|
26
|
+
test.active_brg,
|
|
27
|
+
mgmt_types=mgmt_types,
|
|
28
|
+
)
|
|
29
|
+
if hb_pkts and not found[HB]:
|
|
24
30
|
found[HB] = True
|
|
25
31
|
print(f"Got HB packet after {(datetime.datetime.now() - start_time).seconds} sec!")
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
mgmt_types = [eval_pkt(f'ModuleIfV{test.active_brg.api_version}')]
|
|
33
|
+
module_if_pkts = cert_mqtt.get_brg2gw_mgmt_pkts(
|
|
34
|
+
test.get_mqttc_by_target(DUT),
|
|
35
|
+
test.active_brg,
|
|
36
|
+
mgmt_types=mgmt_types,
|
|
37
|
+
)
|
|
38
|
+
if module_if_pkts and not found[MODULE_IF]:
|
|
28
39
|
found[MODULE_IF] = True
|
|
29
40
|
print(f"Got interface module packet after {(datetime.datetime.now() - start_time).seconds} sec!")
|
|
30
41
|
print_update_wait()
|
|
@@ -43,6 +54,6 @@ def run(test):
|
|
|
43
54
|
return cert_common.test_epilog(test)
|
|
44
55
|
|
|
45
56
|
test = scan_for_brg_periodic_msgs(test)
|
|
46
|
-
generate_log_file(test, "periodic_msgs")
|
|
57
|
+
cert_mqtt.generate_log_file(test, "periodic_msgs")
|
|
47
58
|
|
|
48
59
|
return cert_common.test_epilog(test)
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
from
|
|
2
|
-
from
|
|
3
|
-
from
|
|
4
|
-
import
|
|
5
|
-
import
|
|
1
|
+
from certificate.cert_prints import *
|
|
2
|
+
from certificate.cert_defines import *
|
|
3
|
+
from certificate.wlt_types import *
|
|
4
|
+
import certificate.cert_mqtt as cert_mqtt
|
|
5
|
+
import certificate.cert_common as cert_common
|
|
6
|
+
import certificate.cert_config as cert_config
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
def run(test):
|
|
@@ -15,7 +16,7 @@ def run(test):
|
|
|
15
16
|
return cert_common.test_epilog(test)
|
|
16
17
|
for param in test.params:
|
|
17
18
|
test = cert_config.brg_configure(test, fields=fields, values=[param.value], module=energy2400_module)[0]
|
|
18
|
-
generate_log_file(test, param.name)
|
|
19
|
+
cert_mqtt.generate_log_file(test, param.name)
|
|
19
20
|
field_functionality_pass_fail_print(test, fields[0], value=param.name)
|
|
20
21
|
test.set_phase_rc(param.name, test.rc)
|
|
21
22
|
test.add_phase_reason(param.name, test.reason)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Output Power",
|
|
3
|
+
"module": "Energizer 2.4GHz",
|
|
4
|
+
"purpose": "Test configuration for all supported Energizer 2.4GHz output power values",
|
|
5
|
+
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Energizing-2-4Ghz",
|
|
6
|
+
"initialCondition": "Bridge configured to defaults",
|
|
7
|
+
"procedure": ["Test prolog",
|
|
8
|
+
"For each supported value - configure the BRG and verify the value",
|
|
9
|
+
"Test epilog and revert to defaults"],
|
|
10
|
+
"expectedOutcome": "All values configured successfully",
|
|
11
|
+
"mandatory": 0,
|
|
12
|
+
"multiBridgeTest": 0,
|
|
13
|
+
"gwOnlyTest": 0,
|
|
14
|
+
"dataSimOnlyTest": 0,
|
|
15
|
+
"SupportedFromApiVersion": 13,
|
|
16
|
+
"allSupportedValues": ["OUTPUT_POWER_2_4_MAX", "OUTPUT_POWER_2_4_MAX_MINUS_2", "OUTPUT_POWER_2_4_MAX_MINUS_3",
|
|
17
|
+
"OUTPUT_POWER_2_4_MAX_MINUS_4", "OUTPUT_POWER_2_4_MAX_MINUS_6", "OUTPUT_POWER_2_4_MAX_MINUS_7",
|
|
18
|
+
"OUTPUT_POWER_2_4_MAX_MINUS_8", "OUTPUT_POWER_2_4_MAX_MINUS_10", "OUTPUT_POWER_2_4_MAX_MINUS_11",
|
|
19
|
+
"OUTPUT_POWER_2_4_MAX_MINUS_12", "OUTPUT_POWER_2_4_MAX_MINUS_14", "OUTPUT_POWER_2_4_MAX_MINUS_15",
|
|
20
|
+
"OUTPUT_POWER_2_4_MAX_MINUS_16", "OUTPUT_POWER_2_4_MAX_MINUS_18", "OUTPUT_POWER_2_4_MAX_MINUS_19",
|
|
21
|
+
"OUTPUT_POWER_2_4_MAX_MINUS_20", "OUTPUT_POWER_2_4_MAX_MINUS_22", "OUTPUT_POWER_2_4_MAX_MINUS_23",
|
|
22
|
+
"OUTPUT_POWER_2_4_MAX_MINUS_26"]
|
|
23
|
+
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
from
|
|
2
|
-
from
|
|
3
|
-
from
|
|
4
|
-
import
|
|
5
|
-
import
|
|
1
|
+
from certificate.cert_prints import *
|
|
2
|
+
from certificate.cert_defines import *
|
|
3
|
+
from certificate.wlt_types import *
|
|
4
|
+
import certificate.cert_mqtt as cert_mqtt
|
|
5
|
+
import certificate.cert_common as cert_common
|
|
6
|
+
import certificate.cert_config as cert_config
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
def run(test):
|
|
@@ -15,8 +16,18 @@ def run(test):
|
|
|
15
16
|
return cert_common.test_epilog(test)
|
|
16
17
|
|
|
17
18
|
for param in test.params:
|
|
19
|
+
if not cert_common.output_power_supported(test.active_brg.board_type, param.value):
|
|
20
|
+
# Skip this parameter if its value isn't supported by the board
|
|
21
|
+
test.rc = TEST_SKIPPED
|
|
22
|
+
cert_mqtt.generate_log_file(test, param.name)
|
|
23
|
+
field_functionality_pass_fail_print(test, fields[0], value=param.name)
|
|
24
|
+
test.set_phase_rc(param.name, test.rc)
|
|
25
|
+
test.add_phase_reason(param.name, test.reason)
|
|
26
|
+
test.reset_result() # reset result and continue to next param
|
|
27
|
+
continue
|
|
28
|
+
|
|
18
29
|
test = cert_config.brg_configure(test, fields=fields, values=[param.value], module=energy2400_module)[0]
|
|
19
|
-
generate_log_file(test, param.name)
|
|
30
|
+
cert_mqtt.generate_log_file(test, param.name)
|
|
20
31
|
field_functionality_pass_fail_print(test, fields[0], value=param.name)
|
|
21
32
|
test.set_phase_rc(param.name, test.rc)
|
|
22
33
|
test.add_phase_reason(param.name, test.reason)
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"mandatory": 0,
|
|
12
12
|
"multiBridgeTest": 0,
|
|
13
13
|
"gwOnlyTest": 0,
|
|
14
|
-
"
|
|
14
|
+
"dataSimOnlyTest": 0,
|
|
15
|
+
"SupportedFromApiVersion": 12,
|
|
15
16
|
"allSupportedValues": ["ENERGY_PATTERN_2_4_NO_ENERGIZING", "ENERGY_PATTERN_2_4_CHANNEL_37", "ENERGY_PATTERN_2_4_CHANNEL_38", "ENERGY_PATTERN_2_4_CHANNEL_39", "ENERGY_PATTERN_2_4_FREQ_2450", "ENERGY_PATTERN_2_4_FREQ_2454"]
|
|
16
17
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
from
|
|
2
|
-
from
|
|
3
|
-
from
|
|
4
|
-
import
|
|
5
|
-
import
|
|
1
|
+
from certificate.cert_prints import *
|
|
2
|
+
from certificate.cert_defines import *
|
|
3
|
+
from certificate.wlt_types import *
|
|
4
|
+
import certificate.cert_mqtt as cert_mqtt
|
|
5
|
+
import certificate.cert_common as cert_common
|
|
6
|
+
import certificate.cert_config as cert_config
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
def run(test):
|
|
@@ -17,7 +18,7 @@ def run(test):
|
|
|
17
18
|
for param in test.params:
|
|
18
19
|
test = cert_config.brg_configure(test, fields=fields, values=[param.value], module=energy2400_module)[0]
|
|
19
20
|
# param epilog
|
|
20
|
-
generate_log_file(test, param.name)
|
|
21
|
+
cert_mqtt.generate_log_file(test, param.name)
|
|
21
22
|
field_functionality_pass_fail_print(test, fields[0], value=param.name)
|
|
22
23
|
test.set_phase_rc(param.name, test.rc)
|
|
23
24
|
test.add_phase_reason(param.name, test.reason)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Signal Indicator BLE5",
|
|
3
|
+
"module": "Energizer 2.4GHz",
|
|
4
|
+
"purpose": "verify Energizer 2.4GHz signal indicator functionality for BLE_5.0 in CHANNEL_10",
|
|
5
|
+
"documentation": "https://community.wiliot.com/customers/s/article/Bridge-to-Bridge-Signal-Indicator",
|
|
6
|
+
"initialCondition": "Bridge configured to defaults",
|
|
7
|
+
"procedure": [
|
|
8
|
+
"Test prolog",
|
|
9
|
+
"Configure DUT and TESTER datapath to BLE5 RX channel 10 for the entire test, if DUT is a Bridge only, configure the tx pattern to be extended advertising channel 10 so the tester will receive the packets.",
|
|
10
|
+
"rssi_threshold - Configure DUT as Signal Indicator Receiver with RSSI threshold (e.g., -25 dBm); configure TESTER as Transmitter; scan and verify all received packets on DUT meet the RSSI threshold",
|
|
11
|
+
"rx - Configure DUT as Receiver and TESTER as Transmitter; scan and validate expected packet count in DUT; run antenna, output power, and RSSI checks",
|
|
12
|
+
"tx - Configure DUT as Transmitter; configure TESTER as Receiver; scan and validate expected packet count in TESTER; run antenna, output power, and RSSI checks",
|
|
13
|
+
"disable_tx - Keep DUT at defaults (TX disabled); configure TESTER as Receiver; scan default duration and verify zero signal indicator packets received",
|
|
14
|
+
"disable_rx - Keep DUT RX disabled (defaults); configure TESTER as Transmitter; scan and verify DUT receives zero signal indicator packets",
|
|
15
|
+
"rx_tx - Configure both DUT and TESTER as Signal Indicator RX and TX; scan and validate expected packet counts in both directions; note antenna/output power checks are skipped in this phase",
|
|
16
|
+
"Revert DUT and TESTER datapath modules to defaults",
|
|
17
|
+
"Test epilog"
|
|
18
|
+
],
|
|
19
|
+
"expectedOutcome": "All phases passed successfully!",
|
|
20
|
+
"mandatory": 0,
|
|
21
|
+
"multiBridgeTest": 1,
|
|
22
|
+
"gwOnlyTest": 0,
|
|
23
|
+
"dataSimOnlyTest": 0,
|
|
24
|
+
"SupportedFromApiVersion": 13,
|
|
25
|
+
"allSupportedValues": ["rssi_threshold", "rx", "tx", "disable_tx", "disable_rx", "rx_tx"]
|
|
26
|
+
}
|