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.
Files changed (125) hide show
  1. certificate/ag/wlt_types_ag_jsons/brg2brg_ota.json +211 -0
  2. certificate/ag/wlt_types_ag_jsons/brg2gw_hb.json +894 -0
  3. certificate/ag/wlt_types_ag_jsons/brg2gw_hb_sleep.json +184 -0
  4. certificate/ag/wlt_types_ag_jsons/calibration.json +490 -0
  5. certificate/ag/wlt_types_ag_jsons/custom.json +614 -0
  6. certificate/ag/wlt_types_ag_jsons/datapath.json +900 -0
  7. certificate/ag/wlt_types_ag_jsons/energy2400.json +670 -0
  8. certificate/ag/wlt_types_ag_jsons/energySub1g.json +691 -0
  9. certificate/ag/wlt_types_ag_jsons/externalSensor.json +727 -0
  10. certificate/ag/wlt_types_ag_jsons/interface.json +1095 -0
  11. certificate/ag/wlt_types_ag_jsons/powerManagement.json +1439 -0
  12. certificate/ag/wlt_types_ag_jsons/side_info_sensor.json +105 -0
  13. certificate/ag/wlt_types_ag_jsons/signal_indicator_data.json +77 -0
  14. certificate/ag/wlt_types_ag_jsons/unified_echo_ext_pkt.json +126 -0
  15. certificate/ag/wlt_types_ag_jsons/unified_echo_pkt.json +175 -0
  16. certificate/ag/wlt_types_ag_jsons/unified_sensor_pkt.json +65 -0
  17. certificate/cert_common.py +46 -75
  18. certificate/cert_config.py +18 -43
  19. certificate/cert_data_sim.py +9 -12
  20. certificate/cert_defines.py +0 -9
  21. certificate/cert_gw_sim.py +7 -35
  22. certificate/cert_mqtt.py +5 -15
  23. certificate/cert_prints.py +0 -1
  24. certificate/cert_results.py +37 -56
  25. certificate/cert_utils.py +15 -27
  26. certificate/certificate.py +5 -12
  27. certificate/certificate_cli.py +13 -10
  28. certificate/certificate_eth_test_list.txt +4 -6
  29. certificate/certificate_sanity_test_list.txt +2 -3
  30. certificate/certificate_test_list.txt +4 -5
  31. certificate/tests/calibration/interval_test/interval_test.json +0 -1
  32. certificate/tests/calibration/output_power_test/output_power_test.json +0 -1
  33. certificate/tests/calibration/pattern_test/pattern_test.json +0 -1
  34. certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.json +1 -2
  35. certificate/tests/cloud_connectivity/acl_test/acl_test.json +1 -2
  36. certificate/tests/cloud_connectivity/acl_test/acl_test.py +15 -13
  37. certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.json +1 -2
  38. certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.py +6 -8
  39. certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.json +1 -2
  40. certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.py +3 -3
  41. certificate/tests/cloud_connectivity/connection_test/connection_test.json +0 -1
  42. certificate/tests/cloud_connectivity/connection_test/connection_test.py +13 -6
  43. certificate/tests/cloud_connectivity/downlink_test/downlink_test.json +0 -1
  44. certificate/tests/cloud_connectivity/downlink_test/downlink_test.py +4 -1
  45. certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.json +1 -2
  46. certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.py +14 -20
  47. certificate/tests/cloud_connectivity/reboot_test/reboot_test.json +0 -1
  48. certificate/tests/cloud_connectivity/reboot_test/reboot_test.py +0 -2
  49. certificate/tests/cloud_connectivity/registration_test/registration_test.json +0 -1
  50. certificate/tests/cloud_connectivity/registration_test/registration_test_cli.py +1 -1
  51. certificate/tests/cloud_connectivity/stress_test/stress_test.json +1 -2
  52. certificate/tests/cloud_connectivity/stress_test/stress_test.py +16 -20
  53. certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.json +0 -1
  54. certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.py +2 -1
  55. certificate/tests/cloud_connectivity/uplink_test/uplink_test.json +0 -1
  56. certificate/tests/cloud_connectivity/uplink_test/uplink_test.py +20 -28
  57. certificate/tests/datapath/aging_test/aging_test.json +0 -1
  58. certificate/tests/datapath/aging_test/aging_test.py +3 -7
  59. certificate/tests/datapath/event_ble5_test/event_ble5_test.json +2 -3
  60. certificate/tests/datapath/event_ble5_test/event_ble5_test.py +13 -7
  61. certificate/tests/datapath/event_test/event_test.json +2 -3
  62. certificate/tests/datapath/event_test/event_test.py +10 -5
  63. certificate/tests/datapath/num_of_tags_test/num_of_tags_test.json +2 -3
  64. certificate/tests/datapath/num_of_tags_test/num_of_tags_test.py +5 -9
  65. certificate/tests/datapath/output_power_test/output_power_test.json +0 -1
  66. certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.json +0 -1
  67. certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.py +4 -4
  68. certificate/tests/datapath/pacer_interval_test/pacer_interval_test.json +0 -1
  69. certificate/tests/datapath/pattern_test/pattern_test.json +0 -1
  70. certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.json +0 -1
  71. certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.py +5 -5
  72. certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.json +0 -1
  73. certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.py +5 -5
  74. certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.json +0 -1
  75. certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.py +8 -10
  76. certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.json +0 -1
  77. certificate/tests/datapath/pkt_filter_test/pkt_filter_test.json +0 -1
  78. certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.json +1 -2
  79. certificate/tests/datapath/rx_channel_hopping_test/rx_channel_hopping_test.json +0 -1
  80. certificate/tests/datapath/rx_channel_test/rx_channel_test.json +0 -1
  81. certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.json +0 -1
  82. certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.py +1 -1
  83. certificate/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.json +0 -1
  84. certificate/tests/datapath/stress_gen3_test/stress_gen3_test.json +0 -1
  85. certificate/tests/datapath/stress_gen3_test/stress_gen3_test.py +0 -3
  86. certificate/tests/datapath/stress_test/stress_test.json +0 -1
  87. certificate/tests/datapath/stress_test/stress_test.py +0 -3
  88. certificate/tests/datapath/tx_repetition_test/tx_repetition_test.json +0 -1
  89. certificate/tests/edge_mgmt/action_blink_test/action_blink_test.json +0 -1
  90. certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.json +0 -1
  91. certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.json +0 -1
  92. certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.json +0 -1
  93. certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.json +0 -1
  94. certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.json +0 -1
  95. certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.json +0 -1
  96. certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.json +0 -1
  97. certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.py +14 -18
  98. certificate/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.json +0 -1
  99. certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.json +0 -1
  100. certificate/tests/energy2400/output_power_test/output_power_test.json +0 -1
  101. certificate/tests/energy2400/pattern_test/pattern_test.json +0 -1
  102. certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.json +0 -1
  103. certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.py +3 -4
  104. certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.json +9 -9
  105. certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.py +271 -113
  106. certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +0 -1
  107. certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +1 -1
  108. certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.json +0 -1
  109. certificate/tests/energy_sub1g/pattern_test/pattern_test.json +0 -1
  110. certificate/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.json +0 -1
  111. certificate/tests/sensors/ext_sensor_test/ext_sensor_test.json +0 -1
  112. certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +9 -4
  113. common/api_if/api_validation.py +2 -8
  114. common/web/templates/generator.html +79 -141
  115. common/web/web_utils.py +56 -78
  116. gui_certificate/server.py +78 -283
  117. gui_certificate/templates/cert_run.html +113 -179
  118. {wiliot_certificate-4.5.0.dist-info → wiliot_certificate-4.5.0a1.dist-info}/METADATA +38 -27
  119. {wiliot_certificate-4.5.0.dist-info → wiliot_certificate-4.5.0a1.dist-info}/RECORD +123 -109
  120. certificate/tests/cloud_connectivity/deduplication_test/deduplication_test.json +0 -15
  121. certificate/tests/cloud_connectivity/deduplication_test/deduplication_test.py +0 -80
  122. {wiliot_certificate-4.5.0.dist-info → wiliot_certificate-4.5.0a1.dist-info}/WHEEL +0 -0
  123. {wiliot_certificate-4.5.0.dist-info → wiliot_certificate-4.5.0a1.dist-info}/entry_points.txt +0 -0
  124. {wiliot_certificate-4.5.0.dist-info → wiliot_certificate-4.5.0a1.dist-info}/licenses/LICENSE +0 -0
  125. {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, dut.datapath)
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=[dut.datapath])[0]
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=[dut.datapath])
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
- "SupportedFromApiVersion": 12,
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
- reason = "Didn't find ACTION HB pkt"
55
- utPrint(reason, "RED")
56
- test.set_phase_rc(param.name, TEST_FAILED)
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} different pixels, expected: {param.name} pixels!")
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 num_of_tags: {num_of_tags_HB}, expected: {param.name}!")
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",
@@ -12,6 +12,5 @@
12
12
  "multiBridgeTest": 0,
13
13
  "gwOnlyTest": 0,
14
14
  "dataSimOnlyTest": 0,
15
- "SupportedFromApiVersion": 12,
16
15
  "allSupportedValues": [5, 15, 30, 60]
17
16
  }
@@ -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
- dut = cert_config.get_brg_by_target(test, DUT)
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.brg_configure(test, fields=fields, values=[param.value, ag.RX_CHANNEL_10_500K, ag.PKT_FILTER_TEMP_PKT],
21
- module=dut.datapath, ble5=test.dut_is_bridge())[0]
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=[dut.datapath], ble5=test.dut_is_bridge())
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": [5, 10, 15, 30, 60]
17
16
  }
@@ -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
- dut = cert_config.get_brg_by_target(test, DUT)
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.brg_configure(test, fields=fields,
23
- values=[param.value, RX_CHANNEL_21, PKT_FILTER_TEST_PACER_INTERVAL],
24
- module=dut.datapath, ble5=test.dut_is_bridge())[0]
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=[dut.datapath], ble5=test.dut_is_bridge())
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
- dut = cert_config.get_brg_by_target(test, DUT)
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.brg_configure(test, fields=fields,
23
- values=[param.value, RX_CHANNEL_10_500K, PKT_FILTER_TEST_PACER_INTERVAL],
24
- module=dut.datapath, ble5=test.dut_is_bridge())[0]
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=[dut.datapath], ble5=test.dut_is_bridge())
60
+ return cert_common.test_epilog(test, revert_brgs=True, revert_gws=test.internal_brg, modules=[datapath_module], ble5=True)
@@ -14,6 +14,5 @@
14
14
  "multiBridgeTest": 0,
15
15
  "gwOnlyTest": 0,
16
16
  "dataSimOnlyTest": 0,
17
- "SupportedFromApiVersion": 13,
18
17
  "allSupportedValues": ["RX_CHANNEL_37", "RX_CHANNEL_38", "RX_CHANNEL_39", "RX_CHANNEL_10_500K"]
19
18
  }
@@ -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
- dut = cert_config.get_brg_by_target(test, DUT)
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.brg_configure(test, fields=fields,
22
- values=[PKT_FILTER_TEMP_AND_ADVANCED_PKTS, RX_CHANNEL_10_500K,
23
- PKT_FILTER_TEST_PACER_INTERVAL, DATAPATH_PATTERN_EXTENDED_ADV],
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.brg_configure(test, fields=fields,
46
- values=[PKT_FILTER_TEMP_AND_ADVANCED_PKTS, RX_CHANNEL_10_500K,
47
- PKT_FILTER_TEST_PACER_INTERVAL, DATAPATH_PATTERN_EXTENDED_ADV_CH_10],
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=[dut.datapath], ble5=test.dut_is_bridge())
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
  }
@@ -13,6 +13,5 @@
13
13
  "multiBridgeTest": 0,
14
14
  "gwOnlyTest": 0,
15
15
  "dataSimOnlyTest": 0,
16
- "SupportedFromApiVersion": 13,
17
16
  "allSupportedValues": []
18
17
  }
@@ -12,6 +12,5 @@
12
12
  "multiBridgeTest": 0,
13
13
  "gwOnlyTest": 0,
14
14
  "dataSimOnlyTest": 0,
15
- "SupportedFromApiVersion": 13,
16
15
  "allSupportedValues": ["RX_CHANNEL_37", "RX_CHANNEL_38", "RX_CHANNEL_39", "RX_CHANNEL_10_500K", "RX_CHANNEL_HOPPING_37_10"]
17
16
  }
@@ -16,6 +16,5 @@
16
16
  "multiBridgeTest": 0,
17
17
  "gwOnlyTest": 0,
18
18
  "dataSimOnlyTest": 1,
19
- "SupportedFromApiVersion": 12,
20
19
  "allSupportedValues": ["mid_values", "diff_pacer", "min_value", "max_value", "diff_rate"]
21
20
  }
@@ -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=GEN2)
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)
@@ -16,6 +16,5 @@
16
16
  "multiBridgeTest": 0,
17
17
  "gwOnlyTest": 0,
18
18
  "dataSimOnlyTest": 1,
19
- "SupportedFromApiVersion": 12,
20
19
  "allSupportedValues": ["mid_values", "diff_pacer", "min_value", "max_value", "diff_rate"]
21
20
  }
@@ -17,6 +17,5 @@
17
17
  "gwOnlyTest": 0,
18
18
  "bridgeOnlyTest": 1,
19
19
  "dataSimOnlyTest": 1,
20
- "SupportedFromApiVersion": 12,
21
20
  "allSupportedValues": ["rep3", "rep2", "rep1"]
22
21
  }
@@ -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])
@@ -17,6 +17,5 @@
17
17
  "gwOnlyTest": 0,
18
18
  "bridgeOnlyTest": 1,
19
19
  "dataSimOnlyTest": 1,
20
- "SupportedFromApiVersion": 12,
21
20
  "allSupportedValues": ["rep3", "rep2", "rep1"]
22
21
  }
@@ -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])
@@ -14,6 +14,5 @@
14
14
  "gwOnlyTest": 0,
15
15
  "bridgeOnlyTest": 1,
16
16
  "dataSimOnlyTest": 0,
17
- "SupportedFromApiVersion": 12,
18
17
  "allSupportedValues": [1, 2, 3, 4, 5, 6]
19
18
  }
@@ -10,6 +10,5 @@
10
10
  "multiBridgeTest": 0,
11
11
  "gwOnlyTest": 0,
12
12
  "dataSimOnlyTest": 0,
13
- "SupportedFromApiVersion": 12,
14
13
  "allSupportedValues": []
15
14
  }
@@ -10,6 +10,5 @@
10
10
  "multiBridgeTest": 0,
11
11
  "gwOnlyTest": 0,
12
12
  "dataSimOnlyTest": 0,
13
- "SupportedFromApiVersion": 12,
14
13
  "allSupportedValues": []
15
14
  }
@@ -10,6 +10,5 @@
10
10
  "multiBridgeTest": 0,
11
11
  "gwOnlyTest": 0,
12
12
  "dataSimOnlyTest": 0,
13
- "SupportedFromApiVersion": 12,
14
13
  "allSupportedValues": []
15
14
  }
@@ -10,6 +10,5 @@
10
10
  "multiBridgeTest": 0,
11
11
  "gwOnlyTest": 0,
12
12
  "dataSimOnlyTest": 0,
13
- "SupportedFromApiVersion": 12,
14
13
  "allSupportedValues": []
15
14
  }
@@ -11,6 +11,5 @@
11
11
  "gwOnlyTest": 0,
12
12
  "bridgeOnlyTest": 1,
13
13
  "dataSimOnlyTest": 0,
14
- "SupportedFromApiVersion": 12,
15
14
  "allSupportedValues": []
16
15
  }
@@ -10,6 +10,5 @@
10
10
  "multiBridgeTest": 0,
11
11
  "gwOnlyTest": 0,
12
12
  "dataSimOnlyTest": 0,
13
- "SupportedFromApiVersion": 12,
14
13
  "allSupportedValues": []
15
14
  }
@@ -10,6 +10,5 @@
10
10
  "multiBridgeTest": 0,
11
11
  "gwOnlyTest": 0,
12
12
  "dataSimOnlyTest": 0,
13
- "SupportedFromApiVersion": 13,
14
13
  "allSupportedValues": []
15
14
  }
@@ -10,6 +10,5 @@
10
10
  "multiBridgeTest": 0,
11
11
  "gwOnlyTest": 0,
12
12
  "dataSimOnlyTest": 0,
13
- "SupportedFromApiVersion": 12,
14
13
  "allSupportedValues": []
15
14
  }
@@ -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
- 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")
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")
@@ -10,6 +10,5 @@
10
10
  "multiBridgeTest": 0,
11
11
  "gwOnlyTest": 0,
12
12
  "dataSimOnlyTest": 0,
13
- "SupportedFromApiVersion": 12,
14
13
  "allSupportedValues": []
15
14
  }
@@ -12,6 +12,5 @@
12
12
  "multiBridgeTest": 0,
13
13
  "gwOnlyTest": 0,
14
14
  "dataSimOnlyTest": 0,
15
- "SupportedFromApiVersion": 12,
16
15
  "allSupportedValues": [1, 25, 50, 75]
17
16
  }
@@ -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
  }
@@ -21,6 +21,5 @@
21
21
  "multiBridgeTest": 1,
22
22
  "gwOnlyTest": 0,
23
23
  "dataSimOnlyTest": 0,
24
- "SupportedFromApiVersion": 13,
25
24
  "allSupportedValues": ["rssi_threshold", "rx", "tx", "disable_tx", "disable_rx", "rx_tx"]
26
25
  }
@@ -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 {dut.id_str} performance as a Transmitter\n", "BOLD")
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 and TESTER to defaults here and not in epilog
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")
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "Signal Indicator Extended Advertising",
3
3
  "module": "Energizer 2.4GHz",
4
- "purpose": "Verify Signal Indicator functionality when using bridge with extended advertising pattern",
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
- "Test prolog - Initialize test environment and configure bridges to defaults",
9
- "ext_adv_rx37 - Configure DUT as Transmitter with extended advertising pattern and RX channel 37, and TESTER as Receiver and Analyze received signal indicator packets count, RX/TX antenna, output power, and RSSI values",
10
- "ext_adv_rx10 - Configure DUT as Transmitter with extended advertising pattern and RX channel 10, and TESTER as Receiver and Analyze received signal indicator packets count, RX/TX antenna, output power, and RSSI values",
11
- "Test epilog - Finalize test results and log outcomes"
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
- "SupportedFromApiVersion": 13,
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
  }