wiliot-certificate 4.5.0__py3-none-any.whl → 4.5.0a1__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.
- certificate/ag/wlt_types_ag_jsons/brg2brg_ota.json +211 -0
- certificate/ag/wlt_types_ag_jsons/brg2gw_hb.json +894 -0
- certificate/ag/wlt_types_ag_jsons/brg2gw_hb_sleep.json +184 -0
- certificate/ag/wlt_types_ag_jsons/calibration.json +490 -0
- certificate/ag/wlt_types_ag_jsons/custom.json +614 -0
- certificate/ag/wlt_types_ag_jsons/datapath.json +900 -0
- certificate/ag/wlt_types_ag_jsons/energy2400.json +670 -0
- certificate/ag/wlt_types_ag_jsons/energySub1g.json +691 -0
- certificate/ag/wlt_types_ag_jsons/externalSensor.json +727 -0
- certificate/ag/wlt_types_ag_jsons/interface.json +1095 -0
- certificate/ag/wlt_types_ag_jsons/powerManagement.json +1439 -0
- certificate/ag/wlt_types_ag_jsons/side_info_sensor.json +105 -0
- certificate/ag/wlt_types_ag_jsons/signal_indicator_data.json +77 -0
- certificate/ag/wlt_types_ag_jsons/unified_echo_ext_pkt.json +126 -0
- certificate/ag/wlt_types_ag_jsons/unified_echo_pkt.json +175 -0
- certificate/ag/wlt_types_ag_jsons/unified_sensor_pkt.json +65 -0
- certificate/cert_common.py +46 -75
- certificate/cert_config.py +18 -43
- certificate/cert_data_sim.py +9 -12
- certificate/cert_defines.py +0 -9
- certificate/cert_gw_sim.py +7 -35
- certificate/cert_mqtt.py +5 -15
- certificate/cert_prints.py +0 -1
- certificate/cert_results.py +37 -56
- certificate/cert_utils.py +15 -27
- certificate/certificate.py +5 -12
- certificate/certificate_cli.py +13 -10
- certificate/certificate_eth_test_list.txt +4 -6
- certificate/certificate_sanity_test_list.txt +2 -3
- certificate/certificate_test_list.txt +4 -5
- certificate/tests/calibration/interval_test/interval_test.json +0 -1
- certificate/tests/calibration/output_power_test/output_power_test.json +0 -1
- certificate/tests/calibration/pattern_test/pattern_test.json +0 -1
- certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.json +1 -2
- certificate/tests/cloud_connectivity/acl_test/acl_test.json +1 -2
- certificate/tests/cloud_connectivity/acl_test/acl_test.py +15 -13
- certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.json +1 -2
- certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.py +6 -8
- certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.json +1 -2
- certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.py +3 -3
- certificate/tests/cloud_connectivity/connection_test/connection_test.json +0 -1
- certificate/tests/cloud_connectivity/connection_test/connection_test.py +13 -6
- certificate/tests/cloud_connectivity/downlink_test/downlink_test.json +0 -1
- certificate/tests/cloud_connectivity/downlink_test/downlink_test.py +4 -1
- certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.json +1 -2
- certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.py +14 -20
- certificate/tests/cloud_connectivity/reboot_test/reboot_test.json +0 -1
- certificate/tests/cloud_connectivity/reboot_test/reboot_test.py +0 -2
- certificate/tests/cloud_connectivity/registration_test/registration_test.json +0 -1
- certificate/tests/cloud_connectivity/registration_test/registration_test_cli.py +1 -1
- certificate/tests/cloud_connectivity/stress_test/stress_test.json +1 -2
- certificate/tests/cloud_connectivity/stress_test/stress_test.py +16 -20
- certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.json +0 -1
- certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.py +2 -1
- certificate/tests/cloud_connectivity/uplink_test/uplink_test.json +0 -1
- certificate/tests/cloud_connectivity/uplink_test/uplink_test.py +20 -28
- certificate/tests/datapath/aging_test/aging_test.json +0 -1
- certificate/tests/datapath/aging_test/aging_test.py +3 -7
- certificate/tests/datapath/event_ble5_test/event_ble5_test.json +2 -3
- certificate/tests/datapath/event_ble5_test/event_ble5_test.py +13 -7
- certificate/tests/datapath/event_test/event_test.json +2 -3
- certificate/tests/datapath/event_test/event_test.py +10 -5
- certificate/tests/datapath/num_of_tags_test/num_of_tags_test.json +2 -3
- certificate/tests/datapath/num_of_tags_test/num_of_tags_test.py +5 -9
- certificate/tests/datapath/output_power_test/output_power_test.json +0 -1
- certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.json +0 -1
- certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.py +4 -4
- certificate/tests/datapath/pacer_interval_test/pacer_interval_test.json +0 -1
- certificate/tests/datapath/pattern_test/pattern_test.json +0 -1
- certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.json +0 -1
- certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.py +5 -5
- certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.json +0 -1
- certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.py +5 -5
- certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.json +0 -1
- certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.py +8 -10
- certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.json +0 -1
- certificate/tests/datapath/pkt_filter_test/pkt_filter_test.json +0 -1
- certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.json +1 -2
- certificate/tests/datapath/rx_channel_hopping_test/rx_channel_hopping_test.json +0 -1
- certificate/tests/datapath/rx_channel_test/rx_channel_test.json +0 -1
- certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.json +0 -1
- certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.py +1 -1
- certificate/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.json +0 -1
- certificate/tests/datapath/stress_gen3_test/stress_gen3_test.json +0 -1
- certificate/tests/datapath/stress_gen3_test/stress_gen3_test.py +0 -3
- certificate/tests/datapath/stress_test/stress_test.json +0 -1
- certificate/tests/datapath/stress_test/stress_test.py +0 -3
- certificate/tests/datapath/tx_repetition_test/tx_repetition_test.json +0 -1
- certificate/tests/edge_mgmt/action_blink_test/action_blink_test.json +0 -1
- certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.json +0 -1
- certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.json +0 -1
- certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.json +0 -1
- certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.json +0 -1
- certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.json +0 -1
- certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.json +0 -1
- certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.json +0 -1
- certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.py +14 -18
- certificate/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.json +0 -1
- certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.json +0 -1
- certificate/tests/energy2400/output_power_test/output_power_test.json +0 -1
- certificate/tests/energy2400/pattern_test/pattern_test.json +0 -1
- certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.json +0 -1
- certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.py +3 -4
- certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.json +9 -9
- certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.py +271 -113
- certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +0 -1
- certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +1 -1
- certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.json +0 -1
- certificate/tests/energy_sub1g/pattern_test/pattern_test.json +0 -1
- certificate/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.json +0 -1
- certificate/tests/sensors/ext_sensor_test/ext_sensor_test.json +0 -1
- certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +9 -4
- common/api_if/api_validation.py +2 -8
- common/web/templates/generator.html +79 -141
- common/web/web_utils.py +56 -78
- gui_certificate/server.py +78 -283
- gui_certificate/templates/cert_run.html +113 -179
- {wiliot_certificate-4.5.0.dist-info → wiliot_certificate-4.5.0a1.dist-info}/METADATA +38 -27
- {wiliot_certificate-4.5.0.dist-info → wiliot_certificate-4.5.0a1.dist-info}/RECORD +123 -109
- certificate/tests/cloud_connectivity/deduplication_test/deduplication_test.json +0 -15
- certificate/tests/cloud_connectivity/deduplication_test/deduplication_test.py +0 -80
- {wiliot_certificate-4.5.0.dist-info → wiliot_certificate-4.5.0a1.dist-info}/WHEEL +0 -0
- {wiliot_certificate-4.5.0.dist-info → wiliot_certificate-4.5.0a1.dist-info}/entry_points.txt +0 -0
- {wiliot_certificate-4.5.0.dist-info → wiliot_certificate-4.5.0a1.dist-info}/licenses/LICENSE +0 -0
- {wiliot_certificate-4.5.0.dist-info → wiliot_certificate-4.5.0a1.dist-info}/top_level.txt +0 -0
|
@@ -7,9 +7,15 @@ import certificate.cert_config as cert_config
|
|
|
7
7
|
|
|
8
8
|
NEW_TAG_EVENT_SCAN_TIME = 100 # in seconds
|
|
9
9
|
TAG_EVENT_SCAN_TIME = 60 # in seconds
|
|
10
|
+
NEW_TAG_HOURS_EVENT_SCAN_TIME = 62 * 60 # 62 minutes
|
|
10
11
|
RSSI_MOVEMENT_THRESHOLD = 15
|
|
11
12
|
|
|
12
13
|
|
|
14
|
+
def test_new_tag_event_hours(test, phase, datapath_module):
|
|
15
|
+
values = [ag.EVENT_TIME_UNIT_HOURS, TEST_EVENT_WINDOW_HR_CFG, ag.RX_CHANNEL_37, ag.EVENT_TRIGGER_NEW_TAG, 0]
|
|
16
|
+
return cert_common.run_event_test_phase(test, phase, datapath_module, values, NEW_TAG_HOURS_EVENT_SCAN_TIME, ag.EVENT_TIME_UNIT_HOURS)
|
|
17
|
+
|
|
18
|
+
|
|
13
19
|
def test_new_tag_event_minutes(test, phase, datapath_module):
|
|
14
20
|
values = [ag.EVENT_TIME_UNIT_MINUTES, TEST_EVENT_WINDOW_MIN_CFG, ag.RX_CHANNEL_37, ag.EVENT_TRIGGER_NEW_TAG, 0]
|
|
15
21
|
return cert_common.run_event_test_phase(test, phase, datapath_module, values, NEW_TAG_EVENT_SCAN_TIME, ag.EVENT_TIME_UNIT_MINUTES)
|
|
@@ -39,7 +45,7 @@ def test_rssi_event(test, phase, datapath_module):
|
|
|
39
45
|
|
|
40
46
|
|
|
41
47
|
EVENT_TEST_MAP = {"rssi_event": test_rssi_event, "new_tag_event_seconds": test_new_tag_event_seconds,
|
|
42
|
-
"new_tag_event_minutes": test_new_tag_event_minutes,
|
|
48
|
+
"new_tag_event_minutes": test_new_tag_event_minutes, "new_tag_event_hours": test_new_tag_event_hours,
|
|
43
49
|
"temp_event": test_temp_event, "tx_rate_event": test_tx_rate_event}
|
|
44
50
|
|
|
45
51
|
|
|
@@ -48,11 +54,10 @@ def run(test):
|
|
|
48
54
|
test = cert_common.test_prolog(test)
|
|
49
55
|
if test.rc == TEST_FAILED:
|
|
50
56
|
return cert_common.test_epilog(test)
|
|
51
|
-
dut = cert_config.get_brg_by_target(test, DUT)
|
|
52
57
|
|
|
53
58
|
for param in test.params:
|
|
54
59
|
phase_run_print(param.name)
|
|
55
|
-
test = EVENT_TEST_MAP[param.value](test, param.name,
|
|
60
|
+
test = EVENT_TEST_MAP[param.value](test, param.name, test.active_brg.datapath)
|
|
56
61
|
cert_mqtt.generate_log_file(test, param.name)
|
|
57
62
|
field_functionality_pass_fail_print(test, param.name)
|
|
58
63
|
test.set_phase_rc(param.name, test.rc)
|
|
@@ -65,7 +70,7 @@ def run(test):
|
|
|
65
70
|
continue
|
|
66
71
|
|
|
67
72
|
# Reset to defaults after every phase (don't fail the phase on that)
|
|
68
|
-
test = cert_config.config_brg_defaults(test, modules=[
|
|
73
|
+
test = cert_config.config_brg_defaults(test, modules=[test.active_brg.datapath])[0]
|
|
69
74
|
if test.rc == TEST_FAILED:
|
|
70
75
|
test.add_reason("Failed to restore brg to defaults")
|
|
71
76
|
|
|
@@ -77,4 +82,4 @@ def run(test):
|
|
|
77
82
|
else:
|
|
78
83
|
test.reset_result()
|
|
79
84
|
|
|
80
|
-
return cert_common.test_epilog(test, revert_brgs=True, modules=[
|
|
85
|
+
return cert_common.test_epilog(test, revert_brgs=True, modules=[test.active_brg.datapath])
|
|
@@ -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": "<TEST_DOCUMENTATION_LINK>",
|
|
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",
|
|
@@ -14,6 +14,5 @@
|
|
|
14
14
|
"multiBridgeTest": 0,
|
|
15
15
|
"gwOnlyTest": 0,
|
|
16
16
|
"dataSimOnlyTest": 1,
|
|
17
|
-
"
|
|
18
|
-
"allSupportedValues": ["dynamic_parameters", 1000]
|
|
17
|
+
"allSupportedValues": [500, 1000, 2500, 5000]
|
|
19
18
|
}
|
|
@@ -51,11 +51,9 @@ def run(test):
|
|
|
51
51
|
cert_config.send_brg_action(test, ag.ACTION_SEND_HB)
|
|
52
52
|
test, mgmt_pkts = cert_common.scan_for_mgmt_pkts(test, [eval_pkt(f'Brg2GwHbV{test.active_brg.api_version}')])
|
|
53
53
|
if not mgmt_pkts:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
test.add_phase_reason(param.name, "Didn't find ACTION HB pkt")
|
|
58
|
-
continue
|
|
54
|
+
test.rc = TEST_FAILED
|
|
55
|
+
test.add_reason("Didn't find ACTION HB pkt")
|
|
56
|
+
break
|
|
59
57
|
|
|
60
58
|
num_of_tags_HB = mgmt_pkts[0][MGMT_PKT].pkt.tags_ctr
|
|
61
59
|
print(f"Tags from HB: {num_of_tags_HB}\n ")
|
|
@@ -64,13 +62,11 @@ def run(test):
|
|
|
64
62
|
|
|
65
63
|
# compare the numbers of tags that come from the brg, success in 95% from number of tags (value) or more.
|
|
66
64
|
if num_of_tags < (param.value * 0.95):
|
|
67
|
-
test.add_reason(f"Received {num_of_tags}
|
|
68
|
-
test.rc = TEST_FAILED
|
|
65
|
+
test.add_reason(f"Received {num_of_tags} pixels, expected: {param.name} pixels!")
|
|
69
66
|
|
|
70
67
|
# compare the counter tags in the HB packet
|
|
71
68
|
if num_of_tags_HB < 0.95 * param.value or num_of_tags_HB > (param.value + 100):
|
|
72
|
-
test.add_reason(f"HB counter
|
|
73
|
-
test.rc = TEST_FAILED
|
|
69
|
+
test.add_reason(f"HB counter: {num_of_tags_HB}, expected: {param.name}!")
|
|
74
70
|
# param epilog
|
|
75
71
|
time.sleep(10)
|
|
76
72
|
cert_mqtt.generate_log_file(test, param.name)
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
"multiBridgeTest": 0,
|
|
13
13
|
"gwOnlyTest": 0,
|
|
14
14
|
"dataSimOnlyTest": 0,
|
|
15
|
-
"SupportedFromApiVersion": 13,
|
|
16
15
|
"allSupportedValues": ["OUTPUT_POWER_2_4_MAX", "OUTPUT_POWER_2_4_MAX_MINUS_2", "OUTPUT_POWER_2_4_MAX_MINUS_3",
|
|
17
16
|
"OUTPUT_POWER_2_4_MAX_MINUS_4", "OUTPUT_POWER_2_4_MAX_MINUS_6", "OUTPUT_POWER_2_4_MAX_MINUS_7",
|
|
18
17
|
"OUTPUT_POWER_2_4_MAX_MINUS_8", "OUTPUT_POWER_2_4_MAX_MINUS_10", "OUTPUT_POWER_2_4_MAX_MINUS_11",
|
|
@@ -10,15 +10,15 @@ import certificate.cert_data_sim as cert_data_sim
|
|
|
10
10
|
def run(test):
|
|
11
11
|
|
|
12
12
|
fields = [BRG_PACER_INTERVAL, BRG_RX_CHANNEL, BRG_PKT_FILTER]
|
|
13
|
-
|
|
13
|
+
datapath_module = test.active_brg.datapath
|
|
14
14
|
|
|
15
15
|
test = cert_common.test_prolog(test)
|
|
16
16
|
if test.rc == TEST_FAILED:
|
|
17
17
|
return cert_common.test_epilog(test)
|
|
18
18
|
|
|
19
19
|
for param in test.params:
|
|
20
|
-
test = cert_config.
|
|
21
|
-
|
|
20
|
+
test = cert_config.brg_configure_ble5(test, fields=fields, values=[param.value, ag.RX_CHANNEL_10_500K, ag.PKT_FILTER_TEMP_PKT],
|
|
21
|
+
module=datapath_module)[0]
|
|
22
22
|
if test.rc == TEST_FAILED:
|
|
23
23
|
if test.exit_on_param_failure:
|
|
24
24
|
break # break the whole for loop and keep the test as failed
|
|
@@ -49,4 +49,4 @@ def run(test):
|
|
|
49
49
|
break # break the whole for loop and keep the test as failed
|
|
50
50
|
test.reset_result() # reset result and continue to next param
|
|
51
51
|
|
|
52
|
-
return cert_common.test_epilog(test, revert_brgs=True, revert_gws=test.internal_brg, modules=[
|
|
52
|
+
return cert_common.test_epilog(test, revert_brgs=True, revert_gws=test.internal_brg, modules=[datapath_module], ble5=True)
|
|
@@ -12,6 +12,5 @@
|
|
|
12
12
|
"multiBridgeTest": 0,
|
|
13
13
|
"gwOnlyTest": 0,
|
|
14
14
|
"dataSimOnlyTest": 0,
|
|
15
|
-
"SupportedFromApiVersion": 12,
|
|
16
15
|
"allSupportedValues": ["DATAPATH_PATTERN_STANDARD", "DATAPATH_PATTERN_38_38_39", "DATAPATH_PATTERN_EU_PATTERN", "DATAPATH_PATTERN_EXTENDED_ADV", "DATAPATH_PATTERN_EXTENDED_ADV_38_39", "DATAPATH_PATTERN_EXTENDED_ADV_CH_10"]
|
|
17
16
|
}
|
|
@@ -15,6 +15,5 @@
|
|
|
15
15
|
"multiBridgeTest": 0,
|
|
16
16
|
"gwOnlyTest": 0,
|
|
17
17
|
"dataSimOnlyTest": 0,
|
|
18
|
-
"SupportedFromApiVersion": 13,
|
|
19
18
|
"allSupportedValues": ["PKT_FILTER_RANDOM_FIRST_ARRIVING_PKT", "PKT_FILTER_DISABLE_FORWARDING", "PKT_FILTER_TEMP_PKT", "PKT_FILTER_TEMP_AND_ADVANCED_PKTS", "PKT_FILTER_TEMP_ADVANCED_AND_DEBUG_PKTS"]
|
|
20
19
|
}
|
|
@@ -12,16 +12,16 @@ PKT_FILTER_TEST_PACER_INTERVAL = 10
|
|
|
12
12
|
def run(test):
|
|
13
13
|
|
|
14
14
|
fields = [BRG_PKT_FILTER, BRG_RX_CHANNEL, BRG_PACER_INTERVAL]
|
|
15
|
-
|
|
15
|
+
datapath_module = eval(f'ModuleDatapathV{test.active_brg.api_version}')
|
|
16
16
|
|
|
17
17
|
test = cert_common.test_prolog(test)
|
|
18
18
|
if test.rc == TEST_FAILED:
|
|
19
19
|
return cert_common.test_epilog(test)
|
|
20
20
|
|
|
21
21
|
for param in test.params:
|
|
22
|
-
test = cert_config.
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
test = cert_config.brg_configure_ble5(test, fields=fields,
|
|
23
|
+
values=[param.value, RX_CHANNEL_21, PKT_FILTER_TEST_PACER_INTERVAL],
|
|
24
|
+
module=datapath_module)[0]
|
|
25
25
|
test.set_phase_rc(param.name, test.rc)
|
|
26
26
|
test.add_phase_reason(param.name, test.reason)
|
|
27
27
|
if test.rc == TEST_FAILED:
|
|
@@ -58,4 +58,4 @@ def run(test):
|
|
|
58
58
|
break # break the whole for loop and keep the test as failed
|
|
59
59
|
test.reset_result() # reset result and continue to next param
|
|
60
60
|
|
|
61
|
-
return cert_common.test_epilog(test, revert_brgs=True, revert_gws=test.internal_brg, modules=[
|
|
61
|
+
return cert_common.test_epilog(test, revert_brgs=True, revert_gws=test.internal_brg, modules=[datapath_module], ble5=True)
|
|
@@ -15,6 +15,5 @@
|
|
|
15
15
|
"multiBridgeTest": 0,
|
|
16
16
|
"gwOnlyTest": 0,
|
|
17
17
|
"dataSimOnlyTest": 0,
|
|
18
|
-
"SupportedFromApiVersion": 12,
|
|
19
18
|
"allSupportedValues": ["PKT_FILTER_RANDOM_FIRST_ARRIVING_PKT", "PKT_FILTER_DISABLE_FORWARDING", "PKT_FILTER_TEMP_PKT", "PKT_FILTER_TEMP_AND_ADVANCED_PKTS", "PKT_FILTER_TEMP_ADVANCED_AND_DEBUG_PKTS"]
|
|
20
19
|
}
|
|
@@ -12,16 +12,16 @@ PKT_FILTER_TEST_PACER_INTERVAL = 10
|
|
|
12
12
|
def run(test):
|
|
13
13
|
|
|
14
14
|
fields = [BRG_PKT_FILTER, BRG_RX_CHANNEL, BRG_PACER_INTERVAL]
|
|
15
|
-
|
|
15
|
+
datapath_module = eval(f'ModuleDatapathV{test.active_brg.api_version}')
|
|
16
16
|
|
|
17
17
|
test = cert_common.test_prolog(test)
|
|
18
18
|
if test.rc == TEST_FAILED:
|
|
19
19
|
return cert_common.test_epilog(test)
|
|
20
20
|
|
|
21
21
|
for param in test.params:
|
|
22
|
-
test = cert_config.
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
test = cert_config.brg_configure_ble5(test, fields=fields,
|
|
23
|
+
values=[param.value, RX_CHANNEL_10_500K, PKT_FILTER_TEST_PACER_INTERVAL],
|
|
24
|
+
module=datapath_module)[0]
|
|
25
25
|
test.set_phase_rc(param.name, test.rc)
|
|
26
26
|
test.add_phase_reason(param.name, test.reason)
|
|
27
27
|
if test.rc == TEST_FAILED:
|
|
@@ -57,4 +57,4 @@ def run(test):
|
|
|
57
57
|
break # break the whole for loop and keep the test as failed
|
|
58
58
|
test.reset_result() # reset result and continue to next param
|
|
59
59
|
|
|
60
|
-
return cert_common.test_epilog(test, revert_brgs=True, revert_gws=test.internal_brg, modules=[
|
|
60
|
+
return cert_common.test_epilog(test, revert_brgs=True, revert_gws=test.internal_brg, modules=[datapath_module], ble5=True)
|
|
@@ -12,16 +12,15 @@ PKT_FILTER_TEST_PACER_INTERVAL = 4
|
|
|
12
12
|
def run(test):
|
|
13
13
|
|
|
14
14
|
fields = [BRG_PKT_FILTER, BRG_RX_CHANNEL, BRG_PACER_INTERVAL, BRG_PATTERN]
|
|
15
|
-
|
|
15
|
+
datapath_module = eval(f'ModuleDatapathV{test.active_brg.api_version}')
|
|
16
16
|
|
|
17
17
|
test = cert_common.test_prolog(test)
|
|
18
18
|
if test.rc == TEST_FAILED:
|
|
19
19
|
return cert_common.test_epilog(test)
|
|
20
20
|
|
|
21
|
-
test = cert_config.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
module=dut.datapath, ble5=test.dut_is_bridge())[0]
|
|
21
|
+
test = cert_config.brg_configure_ble5(test, fields=fields, values=[PKT_FILTER_TEMP_AND_ADVANCED_PKTS,
|
|
22
|
+
RX_CHANNEL_10_500K, PKT_FILTER_TEST_PACER_INTERVAL,
|
|
23
|
+
DATAPATH_PATTERN_EXTENDED_ADV], module=datapath_module)[0]
|
|
25
24
|
if test.rc == TEST_FAILED:
|
|
26
25
|
return cert_common.test_epilog(test)
|
|
27
26
|
|
|
@@ -42,10 +41,9 @@ def run(test):
|
|
|
42
41
|
|
|
43
42
|
# Configure the BRG to DATAPATH_PATTERN_EXTENDED_ADV_CH_10 if the GW listens to channel 10
|
|
44
43
|
if param.value == RX_CHANNEL_10_500K:
|
|
45
|
-
test = cert_config.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
module=dut.datapath, ble5=test.dut_is_bridge())[0]
|
|
44
|
+
test = cert_config.brg_configure_ble5(test, fields=fields, values=[PKT_FILTER_TEMP_AND_ADVANCED_PKTS,
|
|
45
|
+
RX_CHANNEL_10_500K, PKT_FILTER_TEST_PACER_INTERVAL,
|
|
46
|
+
DATAPATH_PATTERN_EXTENDED_ADV_CH_10], module=datapath_module)[0]
|
|
49
47
|
if test.rc == TEST_FAILED:
|
|
50
48
|
if test.exit_on_param_failure:
|
|
51
49
|
break # break the whole for loop and keep the test as failed
|
|
@@ -82,4 +80,4 @@ def run(test):
|
|
|
82
80
|
# Revert tester's rx channel
|
|
83
81
|
test = cert_config.brg_configure(test, module=test.tester.internal_brg.datapath, target=TESTER)[0]
|
|
84
82
|
|
|
85
|
-
return cert_common.test_epilog(test, revert_brgs=True, modules=[
|
|
83
|
+
return cert_common.test_epilog(test, revert_brgs=True, modules=[datapath_module], ble5=True)
|
|
@@ -15,6 +15,5 @@
|
|
|
15
15
|
"multiBridgeTest": 0,
|
|
16
16
|
"gwOnlyTest": 0,
|
|
17
17
|
"dataSimOnlyTest": 0,
|
|
18
|
-
"SupportedFromApiVersion": 12,
|
|
19
18
|
"allSupportedValues": ["PKT_FILTER_RANDOM_FIRST_ARRIVING_PKT", "PKT_FILTER_DISABLE_FORWARDING", "PKT_FILTER_TEMP_PKT", "PKT_FILTER_TEMP_AND_ADVANCED_PKTS"]
|
|
20
19
|
}
|
|
@@ -15,6 +15,5 @@
|
|
|
15
15
|
"multiBridgeTest": 0,
|
|
16
16
|
"gwOnlyTest": 0,
|
|
17
17
|
"dataSimOnlyTest": 0,
|
|
18
|
-
"SupportedFromApiVersion": 12,
|
|
19
18
|
"allSupportedValues": ["PKT_FILTER_RANDOM_FIRST_ARRIVING_PKT", "PKT_FILTER_DISABLE_FORWARDING", "PKT_FILTER_TEMP_PKT", "PKT_FILTER_TEMP_AND_ADVANCED_PKTS", "PKT_FILTER_TEMP_ADVANCED_AND_DEBUG_PKTS"]
|
|
20
19
|
}
|
|
@@ -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": "<TEST_DOCUMENTATION_LINK>",
|
|
6
6
|
"initialCondition": "Bridge configured to defaults",
|
|
7
7
|
"procedure": ["Test prolog",
|
|
8
8
|
"RSSI Threshold configuration",
|
|
@@ -13,6 +13,5 @@
|
|
|
13
13
|
"multiBridgeTest": 0,
|
|
14
14
|
"gwOnlyTest": 0,
|
|
15
15
|
"dataSimOnlyTest": 0,
|
|
16
|
-
"SupportedFromApiVersion": 12,
|
|
17
16
|
"allSupportedValues": ["-80", "-65", "-10"]
|
|
18
17
|
}
|
|
@@ -31,7 +31,7 @@ def cal_scan_time(test, delay, pacer_interval):
|
|
|
31
31
|
|
|
32
32
|
def scan_and_compare(test, pacer_interval, delay, expected_TBC_value):
|
|
33
33
|
|
|
34
|
-
pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=1, duplicates=3, delay=delay, pkt_types=[0], pixels_type=
|
|
34
|
+
pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=1, duplicates=3, delay=delay, pkt_types=[0], pixels_type=GEN3)
|
|
35
35
|
pixel_sim_thread.start()
|
|
36
36
|
test, scan_time = cal_scan_time(test, delay, pacer_interval)
|
|
37
37
|
df = cert_common.data_scan(test, scan_time=scan_time, brg_data=(not test.internal_brg), gw_data=test.internal_brg)
|
|
@@ -206,7 +206,4 @@ def run(test):
|
|
|
206
206
|
# Re-enable unified packets deduplication
|
|
207
207
|
cert_config.gw_action(test, f"{DEDUPLICATION_PKTS} 1")
|
|
208
208
|
|
|
209
|
-
# wait a few seconds to ensure bridge relaxed before next test
|
|
210
|
-
wait_time_n_print(60)
|
|
211
|
-
|
|
212
209
|
return cert_common.test_epilog(test, revert_brgs=True, modules=[datapath_module])
|
|
@@ -205,7 +205,4 @@ def run(test):
|
|
|
205
205
|
# Re-enable unified packets deduplication
|
|
206
206
|
cert_config.gw_action(test, f"{DEDUPLICATION_PKTS} 1")
|
|
207
207
|
|
|
208
|
-
# wait a few seconds to ensure bridge relaxed before next test
|
|
209
|
-
wait_time_n_print(60)
|
|
210
|
-
|
|
211
208
|
return cert_common.test_epilog(test, revert_brgs=True, modules=[datapath_module])
|
|
@@ -20,24 +20,20 @@ def run(test):
|
|
|
20
20
|
if not mgmt_pkts:
|
|
21
21
|
test.add_reason("Didn't find ACTION HB pkt")
|
|
22
22
|
test.rc = TEST_FAILED
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
algo_tx_rep_val
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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")
|
|
23
|
+
algo_tx_rep_val = []
|
|
24
|
+
for p in mgmt_pkts:
|
|
25
|
+
algo_tx_rep_val.append(p[MGMT_PKT].pkt.algo_tx_rep)
|
|
26
|
+
if (test.internal_brg or test.dut_is_combo()) and any(val != 0 for val in algo_tx_rep_val):
|
|
27
|
+
invalid_vals = [val for val in algo_tx_rep_val if val != 0]
|
|
28
|
+
print(f"ERROR: tx_rep_algo yielded invalid value(s) {invalid_vals} instead of '0' for internal brg!")
|
|
29
|
+
test.add_reason("Internal's BRG tx_rep_algo isn't working as expected!")
|
|
30
|
+
test.rc = TEST_FAILED
|
|
31
|
+
elif not (test.internal_brg or test.dut_is_combo()) and any((val < 1 or val > 3) for val in algo_tx_rep_val):
|
|
32
|
+
invalid_vals = [val for val in algo_tx_rep_val if val < 1 or val > 3]
|
|
33
|
+
print(f"ERROR: tx_rep_algo yielded invalid value(s) {invalid_vals}!")
|
|
34
|
+
test.add_reason("BRG's tx_rep_algo isn't working as expected!")
|
|
35
|
+
test.rc = TEST_FAILED
|
|
36
|
+
print(f"tx_rep_algo yielded valid value(s) of - {algo_tx_rep_val}")
|
|
41
37
|
|
|
42
38
|
cert_mqtt.generate_log_file(test, "action_send_hb")
|
|
43
39
|
field_functionality_pass_fail_print(test, "action_send_hb")
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
"multiBridgeTest": 0,
|
|
13
13
|
"gwOnlyTest": 0,
|
|
14
14
|
"dataSimOnlyTest": 0,
|
|
15
|
-
"SupportedFromApiVersion": 13,
|
|
16
15
|
"allSupportedValues": ["OUTPUT_POWER_2_4_MAX", "OUTPUT_POWER_2_4_MAX_MINUS_2", "OUTPUT_POWER_2_4_MAX_MINUS_3",
|
|
17
16
|
"OUTPUT_POWER_2_4_MAX_MINUS_4", "OUTPUT_POWER_2_4_MAX_MINUS_6", "OUTPUT_POWER_2_4_MAX_MINUS_7",
|
|
18
17
|
"OUTPUT_POWER_2_4_MAX_MINUS_8", "OUTPUT_POWER_2_4_MAX_MINUS_10", "OUTPUT_POWER_2_4_MAX_MINUS_11",
|
|
@@ -12,6 +12,5 @@
|
|
|
12
12
|
"multiBridgeTest": 0,
|
|
13
13
|
"gwOnlyTest": 0,
|
|
14
14
|
"dataSimOnlyTest": 0,
|
|
15
|
-
"SupportedFromApiVersion": 12,
|
|
16
15
|
"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"]
|
|
17
16
|
}
|
|
@@ -28,6 +28,7 @@ import certificate.cert_config as cert_config
|
|
|
28
28
|
NUM_OF_SCANNING_CYCLE = 5
|
|
29
29
|
DEFAULT_SCAN_TIME = 30
|
|
30
30
|
SCAN_DELAY_TIME = 3
|
|
31
|
+
BLE5_MAX_DURATION_SEC = ag.BLE5_PARAM_PRIMARY_CHANNEL_SCAN_CYCLE // 1000 + 1
|
|
31
32
|
|
|
32
33
|
|
|
33
34
|
def test_rssi_threshold(test):
|
|
@@ -284,7 +285,7 @@ def test_rx_tx(test):
|
|
|
284
285
|
print(rec_sig_ind_pkts) # TODO: logging print(debug)
|
|
285
286
|
|
|
286
287
|
# Analyzing tester performance as receiver
|
|
287
|
-
utPrint(f"Analyzing DUT {
|
|
288
|
+
utPrint(f"Analyzing DUT {tester.id_str} performance as a Transmitter\n", "BOLD")
|
|
288
289
|
rec_sig_ind_pkts = cert_common.get_all_sig_ind_pkts(test=test, rx_brg=tester, tx_brg=dut)
|
|
289
290
|
if cert_common.sig_ind_pkts_fail_analysis(tx_brg=dut, rx_brg=tester, cycles=NUM_OF_SCANNING_CYCLE, received_pkts=rec_sig_ind_pkts):
|
|
290
291
|
test.rc = TEST_FAILED
|
|
@@ -323,8 +324,6 @@ def run(test):
|
|
|
323
324
|
return cert_common.test_epilog(test, revert_brgs=True,
|
|
324
325
|
modules=[dut.datapath],
|
|
325
326
|
ble5=test.dut_is_bridge())
|
|
326
|
-
if test.dut_is_bridge():
|
|
327
|
-
wait_time_n_print(BLE5_MAX_DURATION_SEC) # BLE5 configuration can take up to BLE5_MAX_DURATION_SEC
|
|
328
327
|
# Configure TESTER to scan ble5 channel during all the test
|
|
329
328
|
test = cert_config.brg_configure(test, fields=[BRG_RX_CHANNEL],
|
|
330
329
|
values=[ag.RX_CHANNEL_10_500K],
|
|
@@ -367,7 +366,7 @@ def run(test):
|
|
|
367
366
|
else:
|
|
368
367
|
test.reset_result()
|
|
369
368
|
|
|
370
|
-
# Revert DUT
|
|
369
|
+
# Revert DUT to defaults here and not in epilog
|
|
371
370
|
test = cert_config.config_brg_defaults(test, modules=[dut.datapath], ble5=test.dut_is_bridge(), wait=test.dut_is_combo())[0]
|
|
372
371
|
if test.rc == TEST_FAILED:
|
|
373
372
|
test.add_reason("Failed to revert brg0 datapath to defaults")
|
certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "Signal Indicator Extended Advertising",
|
|
3
3
|
"module": "Energizer 2.4GHz",
|
|
4
|
-
"purpose": "
|
|
4
|
+
"purpose": "verify Signal Indicator functionality when using bridge with extended advertising pattern",
|
|
5
5
|
"documentation": "https://community.wiliot.com/customers/s/article/Bridge-to-Bridge-Signal-Indicator",
|
|
6
6
|
"initialCondition": "Bridge configured to defaults",
|
|
7
|
-
"procedure": [
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
"procedure": ["Test prolog",
|
|
8
|
+
"rssi_threshold - check the if rssi value is between 0 to -25.",
|
|
9
|
+
"brg0_tx_brg1_rx - one brg is transmitter and the second is receiver, we expect to get the same values from the receiver, according to the tx params",
|
|
10
|
+
"brg0_none_brg1_rx - One rx BRG without any tx BRG. We don't expect to see any signal indicator packets.",
|
|
11
|
+
"brg0_rxtx_brg1_rxtx - Both BRG's will be configured to be transmitters and receivers, with different tx params for each one. we expect to see signal indicator packets from both BRG's, according to the tx params.",
|
|
12
|
+
"brg0_tx_brg1_none - One BRG will be configured as signal indicator tx, but no rx, so we don't expect to receive signal indicator packets.",
|
|
13
|
+
"Test epilog"],
|
|
13
14
|
"expectedOutcome": "All phases passed successfully!",
|
|
14
15
|
"mandatory": 0,
|
|
15
16
|
"multiBridgeTest": 1,
|
|
16
17
|
"gwOnlyTest": 0,
|
|
17
18
|
"dataSimOnlyTest": 0,
|
|
18
|
-
"
|
|
19
|
-
"allSupportedValues": ["ext_adv_rx37", "ext_adv_rx10"]
|
|
19
|
+
"allSupportedValues": ["rssi_threshold", "brg0_tx_brg1_rx", "brg0_none_brg1_rx", "brg0_rxtx_brg1_rxtx", "brg0_tx_brg1_none"]
|
|
20
20
|
}
|