wiliot-certificate 1.5.0a1__py3-none-any.whl → 1.5.2a1__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/ag/energous_v0_defines.py +17 -17
- brg_certificate/ag/energous_v1_defines.py +17 -17
- brg_certificate/ag/energous_v2_defines.py +17 -17
- brg_certificate/ag/energous_v3_defines.py +17 -17
- brg_certificate/ag/energous_v4_defines.py +17 -17
- brg_certificate/ag/fanstel_lan_v0_defines.py +17 -17
- brg_certificate/ag/fanstel_lte_v0_defines.py +17 -17
- brg_certificate/ag/fanstel_wifi_v0_defines.py +17 -17
- brg_certificate/ag/minew_lte_v0_defines.py +17 -17
- brg_certificate/ag/wlt_cmd_if.html +3 -2
- brg_certificate/ag/wlt_types.html +0 -1
- brg_certificate/ag/wlt_types_ag.py +151 -152
- brg_certificate/brg_certificate.py +38 -7
- brg_certificate/brg_certificate_cli.py +19 -3
- brg_certificate/cert_common.py +92 -55
- brg_certificate/cert_config.py +6 -4
- brg_certificate/cert_data_sim.py +47 -7
- brg_certificate/cert_defines.py +20 -6
- brg_certificate/cert_gw_sim.py +10 -6
- brg_certificate/cert_mqtt.py +9 -6
- brg_certificate/cert_prints.py +14 -1
- brg_certificate/cert_protobuf.py +7 -7
- brg_certificate/cert_results.py +131 -84
- brg_certificate/cert_utils.py +13 -7
- brg_certificate/certificate_bcc_sanity_test_list.txt +40 -0
- brg_certificate/certificate_bcc_test_list.txt +50 -0
- brg_certificate/certificate_sanity_test_list.txt +12 -5
- brg_certificate/certificate_test_list.txt +16 -6
- brg_certificate/tests/calibration/interval_test/interval_test.json +4 -3
- brg_certificate/tests/calibration/output_power_test/output_power_test.json +8 -5
- brg_certificate/tests/calibration/pattern_test/pattern_test.json +7 -4
- brg_certificate/tests/calibration/pattern_test/pattern_test.py +25 -26
- brg_certificate/tests/datapath/aging_test/aging_test.json +19 -0
- brg_certificate/tests/datapath/aging_test/aging_test.py +142 -0
- brg_certificate/tests/datapath/num_of_tags_test/num_of_tags_test.json +10 -5
- brg_certificate/tests/datapath/num_of_tags_test/num_of_tags_test.py +12 -11
- brg_certificate/tests/datapath/output_power_test/output_power_test.json +7 -4
- brg_certificate/tests/datapath/output_power_test/output_power_test.py +2 -1
- brg_certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.json +8 -5
- brg_certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.py +6 -3
- brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.json +7 -4
- brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.py +6 -3
- brg_certificate/tests/datapath/pacer_interval_test/pacer_interval_test.json +7 -4
- brg_certificate/tests/datapath/pacer_interval_test/pacer_interval_test.py +4 -2
- brg_certificate/tests/datapath/pattern_test/pattern_test.json +8 -5
- brg_certificate/tests/datapath/pattern_test/pattern_test.py +2 -1
- brg_certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.json +11 -5
- brg_certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.py +12 -5
- brg_certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.json +10 -4
- brg_certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.py +11 -6
- brg_certificate/tests/datapath/pkt_filter_test/pkt_filter_test.json +10 -4
- brg_certificate/tests/datapath/pkt_filter_test/pkt_filter_test.py +11 -7
- brg_certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.json +8 -4
- brg_certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.py +7 -5
- brg_certificate/tests/datapath/rx_channel_test/rx_channel_test.json +7 -4
- brg_certificate/tests/datapath/rx_channel_test/rx_channel_test.py +7 -3
- brg_certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.json +4 -5
- brg_certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.py +107 -73
- brg_certificate/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.json +4 -5
- brg_certificate/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.py +128 -118
- brg_certificate/tests/datapath/stress_gen3_test/stress_gen3_test.json +15 -23
- brg_certificate/tests/datapath/stress_gen3_test/stress_gen3_test.py +104 -103
- brg_certificate/tests/datapath/stress_test/stress_test.json +15 -23
- brg_certificate/tests/datapath/stress_test/stress_test.py +104 -110
- brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.json +8 -4
- brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.py +7 -2
- brg_certificate/tests/datapath/tx_repetition_test/tx_repetition_test.json +8 -4
- brg_certificate/tests/datapath/tx_repetition_test/tx_repetition_test.py +8 -6
- brg_certificate/tests/edge_mgmt/actions_test/actions_test.json +4 -3
- brg_certificate/tests/edge_mgmt/actions_test/actions_test.py +2 -38
- brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.json +15 -8
- brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.json +14 -8
- brg_certificate/tests/edge_mgmt/leds_test/leds_test.json +11 -7
- brg_certificate/tests/edge_mgmt/leds_test/leds_test.py +25 -12
- brg_certificate/tests/edge_mgmt/ota_test/ota_test.json +11 -7
- brg_certificate/tests/edge_mgmt/ota_test/ota_test.py +48 -3
- brg_certificate/tests/edge_mgmt/{stat_test/stat_test.json → periodic_msgs_test/periodic_msgs_test.json} +5 -4
- brg_certificate/tests/edge_mgmt/{stat_test/stat_test.py → periodic_msgs_test/periodic_msgs_test.py} +4 -4
- brg_certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.json +8 -5
- brg_certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.py +2 -1
- brg_certificate/tests/energy2400/output_power_test/output_power_test.json +9 -6
- brg_certificate/tests/energy2400/output_power_test/output_power_test.py +2 -1
- brg_certificate/tests/energy2400/pattern_test/pattern_test.json +8 -5
- brg_certificate/tests/energy2400/pattern_test/pattern_test.py +2 -1
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.json +20 -0
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.py +343 -0
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.json +20 -0
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.py +343 -0
- brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.json +14 -7
- brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.py +45 -57
- brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +14 -7
- brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +198 -125
- brg_certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.json +7 -4
- brg_certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.py +2 -1
- brg_certificate/tests/energy_sub1g/pattern_test/pattern_test.json +13 -6
- brg_certificate/tests/energy_sub1g/pattern_test/pattern_test.py +2 -1
- brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.json +14 -7
- brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.py +117 -124
- brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.json +7 -4
- brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.py +2 -1
- brg_certificate/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.json +18 -0
- brg_certificate/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.py +84 -0
- brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.json +21 -0
- brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +306 -0
- brg_certificate/wltPb_pb2.py +15 -15
- brg_certificate/wltPb_pb2.pyi +8 -2
- brg_certificate/wlt_types.py +2 -1
- gw_certificate/cert_results.py +11 -4
- gw_certificate/gw_certificate.py +0 -2
- gw_certificate/gw_certificate_cli.py +3 -3
- gw_certificate/interface/uart_if.py +1 -1
- gw_certificate/tests/actions.py +7 -1
- gw_certificate/tests/registration.py +2 -1
- gw_certificate/tests/uplink.py +26 -35
- {wiliot_certificate-1.5.0a1.dist-info → wiliot_certificate-1.5.2a1.dist-info}/METADATA +46 -42
- {wiliot_certificate-1.5.0a1.dist-info → wiliot_certificate-1.5.2a1.dist-info}/RECORD +120 -112
- {wiliot_certificate-1.5.0a1.dist-info → wiliot_certificate-1.5.2a1.dist-info}/WHEEL +1 -1
- brg_certificate/tests/datapath/adaptive_pacer_algo_test/adaptive_pacer_algo_test.json +0 -13
- brg_certificate/tests/datapath/adaptive_pacer_algo_test/adaptive_pacer_algo_test.py +0 -76
- brg_certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.json +0 -13
- brg_certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.py +0 -398
- {wiliot_certificate-1.5.0a1.dist-info → wiliot_certificate-1.5.2a1.dist-info}/entry_points.txt +0 -0
- {wiliot_certificate-1.5.0a1.dist-info → wiliot_certificate-1.5.2a1.dist-info/licenses}/LICENSE +0 -0
- {wiliot_certificate-1.5.0a1.dist-info → wiliot_certificate-1.5.2a1.dist-info}/top_level.txt +0 -0
|
@@ -4,6 +4,7 @@ from brg_certificate.wlt_types import *
|
|
|
4
4
|
import brg_certificate.cert_common as cert_common
|
|
5
5
|
import brg_certificate.cert_config as cert_config
|
|
6
6
|
|
|
7
|
+
|
|
7
8
|
def run(test):
|
|
8
9
|
|
|
9
10
|
fields = [BRG_PACER_INTERVAL, BRG_PKT_FILTER, BRG_RX_CHANNEL]
|
|
@@ -14,7 +15,8 @@ def run(test):
|
|
|
14
15
|
return cert_common.test_epilog(test)
|
|
15
16
|
|
|
16
17
|
for param in test.params:
|
|
17
|
-
test = cert_config.brg_configure(test, fields=fields, values=[param.value, ag.PKT_FILTER_TEMP_PKT, ag.RX_CHANNEL_37],
|
|
18
|
+
test = cert_config.brg_configure(test, fields=fields, values=[param.value, ag.PKT_FILTER_TEMP_PKT, ag.RX_CHANNEL_37],
|
|
19
|
+
module=datapath_module)[0]
|
|
18
20
|
test.set_phase_rc(param.name, test.rc)
|
|
19
21
|
test.add_phase_reason(param.name, test.reason)
|
|
20
22
|
if test.rc == TEST_FAILED and test.exit_on_param_failure:
|
|
@@ -28,7 +30,7 @@ def run(test):
|
|
|
28
30
|
num_of_pixels = 10
|
|
29
31
|
pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=num_of_pixels, duplicates=3, delay=100, pkt_types=[0])
|
|
30
32
|
pixel_sim_thread.start()
|
|
31
|
-
df = cert_common.data_scan(test, scan_time=param.value*4, brg_data=(not test.internal_brg), gw_data=test.internal_brg)
|
|
33
|
+
df = cert_common.data_scan(test, scan_time=param.value * 4, brg_data=(not test.internal_brg), gw_data=test.internal_brg)
|
|
32
34
|
if test.data == DATA_SIMULATION:
|
|
33
35
|
# stop generating pkts with data simulator and wait a few seconds for full flush
|
|
34
36
|
pixel_sim_thread.stop()
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"module": "
|
|
4
|
-
"purpose": "Test configuration for all supported
|
|
5
|
-
"
|
|
2
|
+
"name": "Pattern",
|
|
3
|
+
"module": "Datapath",
|
|
4
|
+
"purpose": "Test configuration for all supported communication pattern values",
|
|
5
|
+
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Data-Path-Module-Configuration",
|
|
6
6
|
"initialCondition": "Bridge configured to defaults",
|
|
7
|
-
"procedure": ["Test prolog",
|
|
7
|
+
"procedure": ["Test prolog",
|
|
8
|
+
"For each supported value - configure the BRG and verify the value",
|
|
9
|
+
"Test epilog and revert to defaults"],
|
|
8
10
|
"expectedOutcome": "All values configured successfully",
|
|
9
11
|
"mandatory": 1,
|
|
10
12
|
"multiBridgeTest": 0,
|
|
11
13
|
"gwOnlyTest": 0,
|
|
14
|
+
"internalBridge": 1,
|
|
12
15
|
"allSupportedValues": ["DATAPATH_PATTERN_STANDARD", "DATAPATH_PATTERN_38_38_39", "DATAPATH_PATTERN_EU_PATTERN"]
|
|
13
16
|
}
|
|
@@ -4,6 +4,7 @@ from brg_certificate.wlt_types import *
|
|
|
4
4
|
import brg_certificate.cert_common as cert_common
|
|
5
5
|
import brg_certificate.cert_config as cert_config
|
|
6
6
|
|
|
7
|
+
|
|
7
8
|
def run(test):
|
|
8
9
|
|
|
9
10
|
fields = [BRG_PATTERN]
|
|
@@ -25,4 +26,4 @@ def run(test):
|
|
|
25
26
|
else:
|
|
26
27
|
test.reset_result()
|
|
27
28
|
|
|
28
|
-
return cert_common.test_epilog(test, revert_brgs=True, modules=[datapath_module])
|
|
29
|
+
return cert_common.test_epilog(test, revert_brgs=True, modules=[datapath_module])
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"module": "
|
|
4
|
-
"purpose": "Test packet filter feature configuration and functionality in the bridge for different packet filters using
|
|
5
|
-
"
|
|
2
|
+
"name": "Packet Filter BLE5",
|
|
3
|
+
"module": "Datapath",
|
|
4
|
+
"purpose": "Test packet filter feature configuration and functionality in the bridge for different packet filters using BLE_5.0",
|
|
5
|
+
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Data-Path-Module-Pacing",
|
|
6
6
|
"initialCondition": "Bridge & data simulator configured to defaults",
|
|
7
|
-
"procedure": ["Test prolog",
|
|
7
|
+
"procedure": ["Test prolog",
|
|
8
|
+
"Packet filter & secondary BLE5 rx channel configuration",
|
|
9
|
+
"Generate pixels packets & scan for packets in the bridge",
|
|
10
|
+
"Compare pacer interval mean per pixel & packet type to the configured value",
|
|
11
|
+
"Repeat for all given packet filter values",
|
|
12
|
+
"Test epilog and revert to defaults"],
|
|
8
13
|
"expectedOutcome": "All values configured successfully and actual pacing found matching to the configured values",
|
|
9
14
|
"mandatory": 1,
|
|
10
15
|
"multiBridgeTest": 0,
|
|
11
16
|
"gwOnlyTest": 0,
|
|
17
|
+
"internalBridge": 1,
|
|
12
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"]
|
|
13
19
|
}
|
|
@@ -6,6 +6,7 @@ import brg_certificate.cert_config as cert_config
|
|
|
6
6
|
|
|
7
7
|
PKT_FILTER_TEST_PACER_INTERVAL = 10
|
|
8
8
|
|
|
9
|
+
|
|
9
10
|
def run(test):
|
|
10
11
|
|
|
11
12
|
fields = [BRG_PKT_FILTER, BRG_RX_CHANNEL, BRG_PACER_INTERVAL]
|
|
@@ -15,12 +16,14 @@ def run(test):
|
|
|
15
16
|
if test.rc == TEST_FAILED:
|
|
16
17
|
return cert_common.test_epilog(test)
|
|
17
18
|
|
|
18
|
-
|
|
19
19
|
for param in test.params:
|
|
20
|
-
test = cert_config.brg_configure_ble5(test, fields=fields,
|
|
20
|
+
test = cert_config.brg_configure_ble5(test, fields=fields,
|
|
21
|
+
values=[param.value, RX_CHANNEL_10_250K, PKT_FILTER_TEST_PACER_INTERVAL],
|
|
22
|
+
module=datapath_module)[0]
|
|
21
23
|
test.set_phase_rc(param.name, test.rc)
|
|
22
24
|
test.add_phase_reason(param.name, test.reason)
|
|
23
25
|
if test.rc == TEST_FAILED and test.exit_on_param_failure:
|
|
26
|
+
test.add_reason(f"Failed to configure BRG with {param.name} filter")
|
|
24
27
|
break
|
|
25
28
|
else:
|
|
26
29
|
test.reset_result()
|
|
@@ -30,15 +33,19 @@ def run(test):
|
|
|
30
33
|
if test.data == DATA_SIMULATION:
|
|
31
34
|
# start generating pkts and send them using data simulator
|
|
32
35
|
num_of_pixels = 5
|
|
33
|
-
pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=num_of_pixels, duplicates=2,
|
|
36
|
+
pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=num_of_pixels, duplicates=2,
|
|
37
|
+
delay=0, pkt_types=[2], pixels_type=GEN3_EXTENDED)
|
|
34
38
|
pixel_sim_thread.start()
|
|
35
|
-
df = cert_common.data_scan(test, brg_data=(not test.internal_brg), gw_data=test.internal_brg,
|
|
39
|
+
df = cert_common.data_scan(test, brg_data=(not test.internal_brg), gw_data=test.internal_brg,
|
|
40
|
+
scan_time=PKT_FILTER_TEST_PACER_INTERVAL * 6, per_pkt_type=True,
|
|
41
|
+
pkt_filter_cfg=param.value, flush_pkts=True)
|
|
36
42
|
if test.data == DATA_SIMULATION:
|
|
37
43
|
# stop generating pkts with data simulator and wait a few seconds for full flush
|
|
38
44
|
pixel_sim_thread.stop()
|
|
39
45
|
time.sleep(5)
|
|
40
46
|
cert_common.display_data(df, nfpkt=True, tbc=True, name_prefix=f"{param.name}_", dir=test.dir)
|
|
41
|
-
test = cert_common.pacing_analysis(test, pacer_interval=PKT_FILTER_TEST_PACER_INTERVAL, df=df, pkt_filter_cfg=param.value,
|
|
47
|
+
test = cert_common.pacing_analysis(test, pacer_interval=PKT_FILTER_TEST_PACER_INTERVAL, df=df, pkt_filter_cfg=param.value,
|
|
48
|
+
num_of_pixels=num_of_pixels, is_ble5_test=True)
|
|
42
49
|
generate_log_file(test, param.name)
|
|
43
50
|
field_functionality_pass_fail_print(test, fields[0], value=param.name)
|
|
44
51
|
test.set_phase_rc(param.name, test.rc)
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"module": "
|
|
2
|
+
"name": "Packet Filter Gen3 Pixels",
|
|
3
|
+
"module": "Datapath",
|
|
4
4
|
"purpose": "Test the packet filter feature configuration and functionality in the bridge for different packet filters with Gen3 data packets",
|
|
5
|
-
"
|
|
5
|
+
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Data-Path-Module-Pacing",
|
|
6
6
|
"initialCondition": "Bridge & data simulator configured to defaults",
|
|
7
|
-
"procedure": ["Test prolog",
|
|
7
|
+
"procedure": ["Test prolog",
|
|
8
|
+
"Packet filter configuration",
|
|
9
|
+
"Generate Gen3 pixels packets & scan for packets in the bridge",
|
|
10
|
+
"Compare pacer interval mean per pixel & packet type to the configured value",
|
|
11
|
+
"Repeat for all given packet filter values",
|
|
12
|
+
"Test epilog and revert to defaults"],
|
|
8
13
|
"expectedOutcome": "All values configured successfully and actual pacing found matching to the configured values",
|
|
9
14
|
"mandatory": 1,
|
|
10
15
|
"multiBridgeTest": 0,
|
|
11
16
|
"gwOnlyTest": 0,
|
|
17
|
+
"internalBridge": 1,
|
|
12
18
|
"allSupportedValues": ["PKT_FILTER_RANDOM_FIRST_ARRIVING_PKT", "PKT_FILTER_DISABLE_FORWARDING", "PKT_FILTER_TEMP_PKT", "PKT_FILTER_TEMP_AND_ADVANCED_PKTS"]
|
|
13
19
|
}
|
|
@@ -6,6 +6,7 @@ import brg_certificate.cert_config as cert_config
|
|
|
6
6
|
|
|
7
7
|
PKT_FILTER_TEST_PACER_INTERVAL = 10
|
|
8
8
|
|
|
9
|
+
|
|
9
10
|
def run(test):
|
|
10
11
|
|
|
11
12
|
# We add the field BRG_RX_CHANNEL so internal BRGs will be configured to channel 37 (default is 39)
|
|
@@ -16,12 +17,13 @@ def run(test):
|
|
|
16
17
|
if test.rc == TEST_FAILED:
|
|
17
18
|
return cert_common.test_epilog(test)
|
|
18
19
|
|
|
19
|
-
|
|
20
20
|
for param in test.params:
|
|
21
|
-
test = cert_config.brg_configure(test, fields=fields, values=[param.value, ag.RX_CHANNEL_37, PKT_FILTER_TEST_PACER_INTERVAL],
|
|
21
|
+
test = cert_config.brg_configure(test, fields=fields, values=[param.value, ag.RX_CHANNEL_37, PKT_FILTER_TEST_PACER_INTERVAL],
|
|
22
|
+
module=datapath_module)[0]
|
|
22
23
|
test.set_phase_rc(param.name, test.rc)
|
|
23
24
|
test.add_phase_reason(param.name, test.reason)
|
|
24
25
|
if test.rc == TEST_FAILED and test.exit_on_param_failure:
|
|
26
|
+
test.add_reason(f"Failed to configure BRG with {param.name} filter")
|
|
25
27
|
break
|
|
26
28
|
else:
|
|
27
29
|
test.reset_result()
|
|
@@ -32,16 +34,19 @@ def run(test):
|
|
|
32
34
|
if test.data == DATA_SIMULATION:
|
|
33
35
|
# start generating pkts and send them using data simulator
|
|
34
36
|
num_of_pixels = 5
|
|
35
|
-
pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=num_of_pixels, duplicates=2, delay=0,
|
|
37
|
+
pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=num_of_pixels, duplicates=2, delay=0,
|
|
38
|
+
pkt_types=[0, 1], pixels_type=GEN3)
|
|
36
39
|
pixel_sim_thread.start()
|
|
37
|
-
df = cert_common.data_scan(test, brg_data=(not test.internal_brg), gw_data=test.internal_brg,
|
|
38
|
-
|
|
40
|
+
df = cert_common.data_scan(test, brg_data=(not test.internal_brg), gw_data=test.internal_brg,
|
|
41
|
+
scan_time=PKT_FILTER_TEST_PACER_INTERVAL * 6, per_pkt_type=True,
|
|
42
|
+
pkt_filter_cfg=param.value, flush_pkts=True)
|
|
39
43
|
if test.data == DATA_SIMULATION:
|
|
40
44
|
# stop generating pkts with data simulator and wait a few seconds for full flush
|
|
41
45
|
pixel_sim_thread.stop()
|
|
42
46
|
time.sleep(5)
|
|
43
47
|
cert_common.display_data(df, nfpkt=True, tbc=True, name_prefix=f"pkt_filter_gen3_{param.name}_", dir=test.dir)
|
|
44
|
-
test = cert_common.pacing_analysis(test, pacer_interval=PKT_FILTER_TEST_PACER_INTERVAL, df=df, pkt_filter_cfg=param.value,
|
|
48
|
+
test = cert_common.pacing_analysis(test, pacer_interval=PKT_FILTER_TEST_PACER_INTERVAL, df=df, pkt_filter_cfg=param.value,
|
|
49
|
+
num_of_pixels=num_of_pixels)
|
|
45
50
|
generate_log_file(test, param.name)
|
|
46
51
|
field_functionality_pass_fail_print(test, fields[0], value=param.name)
|
|
47
52
|
test.set_phase_rc(param.name, test.rc)
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"module": "
|
|
2
|
+
"name": "Packet Filter Gen2 Pixels",
|
|
3
|
+
"module": "Datapath",
|
|
4
4
|
"purpose": "Test packet filter feature configuration and functionality in the bridge for different packet filters",
|
|
5
|
-
"
|
|
5
|
+
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Data-Path-Module-Pacing",
|
|
6
6
|
"initialCondition": "Bridge & data simulator configured to defaults",
|
|
7
|
-
"procedure": ["Test prolog",
|
|
7
|
+
"procedure": ["Test prolog",
|
|
8
|
+
"Packet filter configuration",
|
|
9
|
+
"Generate pixels packets & scan for packets in the bridge",
|
|
10
|
+
"Compare pacer interval mean per pixel & packet type to the configured value",
|
|
11
|
+
"Repeat for all given packet filter values",
|
|
12
|
+
"Test epilog and revert to defaults"],
|
|
8
13
|
"expectedOutcome": "All values configured successfully and actual pacing found matching to the configured values",
|
|
9
14
|
"mandatory": 1,
|
|
10
15
|
"multiBridgeTest": 0,
|
|
11
16
|
"gwOnlyTest": 0,
|
|
17
|
+
"internalBridge": 1,
|
|
12
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"]
|
|
13
19
|
}
|
|
@@ -6,6 +6,7 @@ import brg_certificate.cert_config as cert_config
|
|
|
6
6
|
|
|
7
7
|
PKT_FILTER_TEST_PACER_INTERVAL = 10
|
|
8
8
|
|
|
9
|
+
|
|
9
10
|
def run(test):
|
|
10
11
|
|
|
11
12
|
# We add the field BRG_RX_CHANNEL so internal BRGs will be configured to channel 37 (default is 39)
|
|
@@ -16,12 +17,13 @@ def run(test):
|
|
|
16
17
|
if test.rc == TEST_FAILED:
|
|
17
18
|
return cert_common.test_epilog(test)
|
|
18
19
|
|
|
19
|
-
|
|
20
20
|
for param in test.params:
|
|
21
|
-
test = cert_config.brg_configure(test, fields=fields, values=[param.value, ag.RX_CHANNEL_37, PKT_FILTER_TEST_PACER_INTERVAL],
|
|
21
|
+
test = cert_config.brg_configure(test, fields=fields, values=[param.value, ag.RX_CHANNEL_37, PKT_FILTER_TEST_PACER_INTERVAL],
|
|
22
|
+
module=datapath_module)[0]
|
|
22
23
|
test.set_phase_rc(param.name, test.rc)
|
|
23
24
|
test.add_phase_reason(param.name, test.reason)
|
|
24
25
|
if test.rc == TEST_FAILED and test.exit_on_param_failure:
|
|
26
|
+
test.add_reason(f"Failed to configure BRG with {param.name} filter")
|
|
25
27
|
break
|
|
26
28
|
else:
|
|
27
29
|
test.reset_result()
|
|
@@ -32,17 +34,19 @@ def run(test):
|
|
|
32
34
|
if test.data == DATA_SIMULATION:
|
|
33
35
|
# start generating pkts and send them using data simulator
|
|
34
36
|
num_of_pixels = 5
|
|
35
|
-
pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=num_of_pixels,
|
|
37
|
+
pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=num_of_pixels,
|
|
38
|
+
duplicates=2, delay=0, pkt_types=[0, 1, 2])
|
|
36
39
|
pixel_sim_thread.start()
|
|
37
|
-
df = cert_common.data_scan(test, brg_data=(not test.internal_brg), gw_data=test.internal_brg,
|
|
38
|
-
|
|
40
|
+
df = cert_common.data_scan(test, brg_data=(not test.internal_brg), gw_data=test.internal_brg,
|
|
41
|
+
scan_time=PKT_FILTER_TEST_PACER_INTERVAL * 6, per_pkt_type=True,
|
|
42
|
+
pkt_filter_cfg=param.value, flush_pkts=True)
|
|
39
43
|
if test.data == DATA_SIMULATION:
|
|
40
44
|
# stop generating pkts with data simulator and wait a few seconds for full flush
|
|
41
45
|
pixel_sim_thread.stop()
|
|
42
46
|
time.sleep(5)
|
|
43
47
|
cert_common.display_data(df, nfpkt=True, tbc=True, name_prefix=f"pkt_filter_{param.name}_", dir=test.dir)
|
|
44
|
-
test = cert_common.pacing_analysis(test, pacer_interval=PKT_FILTER_TEST_PACER_INTERVAL, df=df,
|
|
45
|
-
|
|
48
|
+
test = cert_common.pacing_analysis(test, pacer_interval=PKT_FILTER_TEST_PACER_INTERVAL, df=df,
|
|
49
|
+
pkt_filter_cfg=param.value, num_of_pixels=num_of_pixels)
|
|
46
50
|
generate_log_file(test, param.name)
|
|
47
51
|
field_functionality_pass_fail_print(test, fields[0], value=param.name)
|
|
48
52
|
test.set_phase_rc(param.name, test.rc)
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"module": "
|
|
2
|
+
"name": "RSSI Threshold",
|
|
3
|
+
"module": "Datapath",
|
|
4
4
|
"purpose": "Test RSSI threshold configuration and functionality in the bridge",
|
|
5
|
-
"
|
|
5
|
+
"documentation": "<TEST_DOCUMENTATION_LINK>",
|
|
6
6
|
"initialCondition": "Bridge configured to defaults",
|
|
7
|
-
"procedure": ["Test prolog",
|
|
7
|
+
"procedure": ["Test prolog",
|
|
8
|
+
"RSSI Threshold configuration",
|
|
9
|
+
"Checking for packets violating RSSI threshold",
|
|
10
|
+
"Test epilog and revert to defaults"],
|
|
8
11
|
"expectedOutcome": "RSSI Threshold configured successfully and no pixel packets with RSSI weaker than the threshold have been echoed.",
|
|
9
12
|
"mandatory": 1,
|
|
10
13
|
"multiBridgeTest": 0,
|
|
11
14
|
"gwOnlyTest": 0,
|
|
15
|
+
"internalBridge": 1,
|
|
12
16
|
"allSupportedValues": ["-80", "-65", "-10"]
|
|
13
17
|
}
|
|
@@ -4,27 +4,29 @@ from brg_certificate.wlt_types import *
|
|
|
4
4
|
import brg_certificate.cert_common as cert_common
|
|
5
5
|
import brg_certificate.cert_config as cert_config
|
|
6
6
|
|
|
7
|
+
|
|
7
8
|
def rssi_threshold_analysis(test, df, threshold):
|
|
8
9
|
tags_count = len(list(df[TAG_ID].unique()))
|
|
9
10
|
|
|
10
11
|
# Filter rows where RSSI is higher than threshold
|
|
11
|
-
low_rssi_df = df[df[RSSI] >= (-1)*threshold]
|
|
12
|
+
low_rssi_df = df[df[RSSI] >= (-1) * threshold]
|
|
12
13
|
|
|
13
14
|
# Extract all tag IDs from those filtered rows
|
|
14
15
|
low_rssi_tag_ids = low_rssi_df[TAG_ID].unique()
|
|
15
16
|
failed_tags = len(low_rssi_tag_ids)
|
|
16
17
|
|
|
17
18
|
if failed_tags:
|
|
18
|
-
test.rc =TEST_FAILED
|
|
19
|
-
print("Tag IDs with RSSI exceeding", (-1)*threshold, ":", low_rssi_tag_ids)
|
|
19
|
+
test.rc = TEST_FAILED
|
|
20
|
+
print("Tag IDs with RSSI exceeding", (-1) * threshold, ":", low_rssi_tag_ids)
|
|
20
21
|
|
|
21
22
|
if test.rc == TEST_FAILED:
|
|
22
|
-
test.add_reason(f"{failed_tags}/{tags_count} tags rssi violating threshold of {(-1)*threshold}")
|
|
23
|
+
test.add_reason(f"{failed_tags}/{tags_count} tags rssi violating threshold of {(-1) * threshold}")
|
|
23
24
|
print(test.reason)
|
|
24
25
|
else:
|
|
25
26
|
test.rc = TEST_PASSED
|
|
26
27
|
return test
|
|
27
28
|
|
|
29
|
+
|
|
28
30
|
def run(test):
|
|
29
31
|
|
|
30
32
|
fields = [BRG_RSSI_THRESHOLD]
|
|
@@ -33,7 +35,7 @@ def run(test):
|
|
|
33
35
|
test = cert_common.test_prolog(test)
|
|
34
36
|
if test.rc == TEST_FAILED:
|
|
35
37
|
return cert_common.test_epilog(test)
|
|
36
|
-
|
|
38
|
+
|
|
37
39
|
# Configure the BRG with RSSI threshold and check for packets violating the threshold
|
|
38
40
|
for param in test.params:
|
|
39
41
|
functionality_run_print(f"test for RSSI threshold of {param.value}")
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"module": "
|
|
2
|
+
"name": "Rx Channel",
|
|
3
|
+
"module": "Datapath",
|
|
4
4
|
"purpose": "Test configuration for all supported datapath rx channel values",
|
|
5
|
-
"
|
|
5
|
+
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Data-Path-Module-Configuration",
|
|
6
6
|
"initialCondition": "Bridge configured to defaults",
|
|
7
|
-
"procedure": ["Test prolog",
|
|
7
|
+
"procedure": ["Test prolog",
|
|
8
|
+
"For each supported value - configure the BRG and verify the value",
|
|
9
|
+
"Test epilog and revert to defaults"],
|
|
8
10
|
"expectedOutcome": "All values configured successfully",
|
|
9
11
|
"mandatory": 1,
|
|
10
12
|
"multiBridgeTest": 0,
|
|
11
13
|
"gwOnlyTest": 0,
|
|
14
|
+
"internalBridge": 1,
|
|
12
15
|
"allSupportedValues": ["RX_CHANNEL_37", "RX_CHANNEL_38", "RX_CHANNEL_39", "RX_CHANNEL_10_250K", "RX_CHANNEL_10_500K"]
|
|
13
16
|
}
|
|
@@ -4,18 +4,22 @@ from brg_certificate.wlt_types import *
|
|
|
4
4
|
import brg_certificate.cert_common as cert_common
|
|
5
5
|
import brg_certificate.cert_config as cert_config
|
|
6
6
|
|
|
7
|
+
|
|
7
8
|
def is_primary_channel(channel):
|
|
8
9
|
if channel == ag.RX_CHANNEL_37 or channel == ag.RX_CHANNEL_38 or channel == ag.RX_CHANNEL_39:
|
|
9
10
|
return True
|
|
10
11
|
else:
|
|
11
12
|
return False
|
|
12
13
|
|
|
14
|
+
|
|
13
15
|
def run(test):
|
|
14
16
|
|
|
15
17
|
fields = [BRG_RX_CHANNEL]
|
|
16
18
|
print(test.params)
|
|
17
|
-
datapath_module =
|
|
18
|
-
|
|
19
|
+
datapath_module = cert_common.get_module_by_name(test.active_brg.modules, "Datapath")
|
|
20
|
+
|
|
21
|
+
# We use this flag to know whether the BRG is currently in BLE5 mode and needs special configuration next time it is configured
|
|
22
|
+
ble5_state = False
|
|
19
23
|
|
|
20
24
|
test = cert_common.test_prolog(test)
|
|
21
25
|
if test.rc == TEST_FAILED:
|
|
@@ -38,4 +42,4 @@ def run(test):
|
|
|
38
42
|
else:
|
|
39
43
|
test.reset_result()
|
|
40
44
|
|
|
41
|
-
return cert_common.test_epilog(test, revert_brgs=True, modules=[datapath_module], ble5=ble5_state)
|
|
45
|
+
return cert_common.test_epilog(test, revert_brgs=True, modules=[datapath_module], ble5=ble5_state)
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"module": "
|
|
4
|
-
"purpose":
|
|
5
|
-
"Verify the accuracy of the RX rate value"
|
|
6
|
-
],
|
|
2
|
+
"name": "Rx Rate Gen2 Pixels",
|
|
3
|
+
"module": "Datapath",
|
|
4
|
+
"purpose": "Verify the accuracy of the RX rate value",
|
|
7
5
|
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Data-Path-Module-Pacing",
|
|
8
6
|
"initialCondition": "Bridge set to default configuration",
|
|
9
7
|
"procedure": [
|
|
@@ -17,5 +15,6 @@
|
|
|
17
15
|
"mandatory": 1,
|
|
18
16
|
"multiBridgeTest": 0,
|
|
19
17
|
"gwOnlyTest": 0,
|
|
18
|
+
"internalBridge": 1,
|
|
20
19
|
"allSupportedValues": ["mid_values", "diff_pacer", "min_value", "max_value", "diff_rate"]
|
|
21
20
|
}
|