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.
Files changed (124) hide show
  1. brg_certificate/ag/energous_v0_defines.py +17 -17
  2. brg_certificate/ag/energous_v1_defines.py +17 -17
  3. brg_certificate/ag/energous_v2_defines.py +17 -17
  4. brg_certificate/ag/energous_v3_defines.py +17 -17
  5. brg_certificate/ag/energous_v4_defines.py +17 -17
  6. brg_certificate/ag/fanstel_lan_v0_defines.py +17 -17
  7. brg_certificate/ag/fanstel_lte_v0_defines.py +17 -17
  8. brg_certificate/ag/fanstel_wifi_v0_defines.py +17 -17
  9. brg_certificate/ag/minew_lte_v0_defines.py +17 -17
  10. brg_certificate/ag/wlt_cmd_if.html +3 -2
  11. brg_certificate/ag/wlt_types.html +0 -1
  12. brg_certificate/ag/wlt_types_ag.py +151 -152
  13. brg_certificate/brg_certificate.py +38 -7
  14. brg_certificate/brg_certificate_cli.py +19 -3
  15. brg_certificate/cert_common.py +92 -55
  16. brg_certificate/cert_config.py +6 -4
  17. brg_certificate/cert_data_sim.py +47 -7
  18. brg_certificate/cert_defines.py +20 -6
  19. brg_certificate/cert_gw_sim.py +10 -6
  20. brg_certificate/cert_mqtt.py +9 -6
  21. brg_certificate/cert_prints.py +14 -1
  22. brg_certificate/cert_protobuf.py +7 -7
  23. brg_certificate/cert_results.py +131 -84
  24. brg_certificate/cert_utils.py +13 -7
  25. brg_certificate/certificate_bcc_sanity_test_list.txt +40 -0
  26. brg_certificate/certificate_bcc_test_list.txt +50 -0
  27. brg_certificate/certificate_sanity_test_list.txt +12 -5
  28. brg_certificate/certificate_test_list.txt +16 -6
  29. brg_certificate/tests/calibration/interval_test/interval_test.json +4 -3
  30. brg_certificate/tests/calibration/output_power_test/output_power_test.json +8 -5
  31. brg_certificate/tests/calibration/pattern_test/pattern_test.json +7 -4
  32. brg_certificate/tests/calibration/pattern_test/pattern_test.py +25 -26
  33. brg_certificate/tests/datapath/aging_test/aging_test.json +19 -0
  34. brg_certificate/tests/datapath/aging_test/aging_test.py +142 -0
  35. brg_certificate/tests/datapath/num_of_tags_test/num_of_tags_test.json +10 -5
  36. brg_certificate/tests/datapath/num_of_tags_test/num_of_tags_test.py +12 -11
  37. brg_certificate/tests/datapath/output_power_test/output_power_test.json +7 -4
  38. brg_certificate/tests/datapath/output_power_test/output_power_test.py +2 -1
  39. brg_certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.json +8 -5
  40. brg_certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.py +6 -3
  41. brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.json +7 -4
  42. brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.py +6 -3
  43. brg_certificate/tests/datapath/pacer_interval_test/pacer_interval_test.json +7 -4
  44. brg_certificate/tests/datapath/pacer_interval_test/pacer_interval_test.py +4 -2
  45. brg_certificate/tests/datapath/pattern_test/pattern_test.json +8 -5
  46. brg_certificate/tests/datapath/pattern_test/pattern_test.py +2 -1
  47. brg_certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.json +11 -5
  48. brg_certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.py +12 -5
  49. brg_certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.json +10 -4
  50. brg_certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.py +11 -6
  51. brg_certificate/tests/datapath/pkt_filter_test/pkt_filter_test.json +10 -4
  52. brg_certificate/tests/datapath/pkt_filter_test/pkt_filter_test.py +11 -7
  53. brg_certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.json +8 -4
  54. brg_certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.py +7 -5
  55. brg_certificate/tests/datapath/rx_channel_test/rx_channel_test.json +7 -4
  56. brg_certificate/tests/datapath/rx_channel_test/rx_channel_test.py +7 -3
  57. brg_certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.json +4 -5
  58. brg_certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.py +107 -73
  59. brg_certificate/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.json +4 -5
  60. brg_certificate/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.py +128 -118
  61. brg_certificate/tests/datapath/stress_gen3_test/stress_gen3_test.json +15 -23
  62. brg_certificate/tests/datapath/stress_gen3_test/stress_gen3_test.py +104 -103
  63. brg_certificate/tests/datapath/stress_test/stress_test.json +15 -23
  64. brg_certificate/tests/datapath/stress_test/stress_test.py +104 -110
  65. brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.json +8 -4
  66. brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.py +7 -2
  67. brg_certificate/tests/datapath/tx_repetition_test/tx_repetition_test.json +8 -4
  68. brg_certificate/tests/datapath/tx_repetition_test/tx_repetition_test.py +8 -6
  69. brg_certificate/tests/edge_mgmt/actions_test/actions_test.json +4 -3
  70. brg_certificate/tests/edge_mgmt/actions_test/actions_test.py +2 -38
  71. brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.json +15 -8
  72. brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.json +14 -8
  73. brg_certificate/tests/edge_mgmt/leds_test/leds_test.json +11 -7
  74. brg_certificate/tests/edge_mgmt/leds_test/leds_test.py +25 -12
  75. brg_certificate/tests/edge_mgmt/ota_test/ota_test.json +11 -7
  76. brg_certificate/tests/edge_mgmt/ota_test/ota_test.py +48 -3
  77. brg_certificate/tests/edge_mgmt/{stat_test/stat_test.json → periodic_msgs_test/periodic_msgs_test.json} +5 -4
  78. brg_certificate/tests/edge_mgmt/{stat_test/stat_test.py → periodic_msgs_test/periodic_msgs_test.py} +4 -4
  79. brg_certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.json +8 -5
  80. brg_certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.py +2 -1
  81. brg_certificate/tests/energy2400/output_power_test/output_power_test.json +9 -6
  82. brg_certificate/tests/energy2400/output_power_test/output_power_test.py +2 -1
  83. brg_certificate/tests/energy2400/pattern_test/pattern_test.json +8 -5
  84. brg_certificate/tests/energy2400/pattern_test/pattern_test.py +2 -1
  85. brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.json +20 -0
  86. brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.py +343 -0
  87. brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.json +20 -0
  88. brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.py +343 -0
  89. brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.json +14 -7
  90. brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.py +45 -57
  91. brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +14 -7
  92. brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +198 -125
  93. brg_certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.json +7 -4
  94. brg_certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.py +2 -1
  95. brg_certificate/tests/energy_sub1g/pattern_test/pattern_test.json +13 -6
  96. brg_certificate/tests/energy_sub1g/pattern_test/pattern_test.py +2 -1
  97. brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.json +14 -7
  98. brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.py +117 -124
  99. brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.json +7 -4
  100. brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.py +2 -1
  101. brg_certificate/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.json +18 -0
  102. brg_certificate/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.py +84 -0
  103. brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.json +21 -0
  104. brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +306 -0
  105. brg_certificate/wltPb_pb2.py +15 -15
  106. brg_certificate/wltPb_pb2.pyi +8 -2
  107. brg_certificate/wlt_types.py +2 -1
  108. gw_certificate/cert_results.py +11 -4
  109. gw_certificate/gw_certificate.py +0 -2
  110. gw_certificate/gw_certificate_cli.py +3 -3
  111. gw_certificate/interface/uart_if.py +1 -1
  112. gw_certificate/tests/actions.py +7 -1
  113. gw_certificate/tests/registration.py +2 -1
  114. gw_certificate/tests/uplink.py +26 -35
  115. {wiliot_certificate-1.5.0a1.dist-info → wiliot_certificate-1.5.2a1.dist-info}/METADATA +46 -42
  116. {wiliot_certificate-1.5.0a1.dist-info → wiliot_certificate-1.5.2a1.dist-info}/RECORD +120 -112
  117. {wiliot_certificate-1.5.0a1.dist-info → wiliot_certificate-1.5.2a1.dist-info}/WHEEL +1 -1
  118. brg_certificate/tests/datapath/adaptive_pacer_algo_test/adaptive_pacer_algo_test.json +0 -13
  119. brg_certificate/tests/datapath/adaptive_pacer_algo_test/adaptive_pacer_algo_test.py +0 -76
  120. brg_certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.json +0 -13
  121. brg_certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.py +0 -398
  122. {wiliot_certificate-1.5.0a1.dist-info → wiliot_certificate-1.5.2a1.dist-info}/entry_points.txt +0 -0
  123. {wiliot_certificate-1.5.0a1.dist-info → wiliot_certificate-1.5.2a1.dist-info/licenses}/LICENSE +0 -0
  124. {wiliot_certificate-1.5.0a1.dist-info → wiliot_certificate-1.5.2a1.dist-info}/top_level.txt +0 -0
@@ -1,9 +1,12 @@
1
1
  # The certificate should run for every bridge change
2
- # The setup will include 1 tested BRG + 1 GW connected with UART
3
- # python ut.py --gw SIM --brg <XXXXXXXXXXXX> --tl certificate_sanity_test_list.txt --data sim --port <COM_PORT>
2
+ # The setup will include 1 tested BRG + 1 GW connected with UART or remotely
3
+ # Run command example with COM PORT connection:
4
+ # python brg_certificate_cli.py --gw SIM --brg <XXXXXXXXXXXX> --tl certificate_sanity_test_list.txt --data sim --port <COM_PORT>
5
+ # Run command example with remote GW connection:
6
+ # python brg_certificate_cli.py --gw <GWYYYYYYYYYYYY> --brg <XXXXXXXXXXXX> --tl certificate_sanity_test_list.txt --data sim
4
7
 
5
8
  # ------------- edge_mgmt -------------
6
- edge_mgmt/stat_test
9
+ edge_mgmt/periodic_msgs_test
7
10
  edge_mgmt/actions_test ACTION_GW_HB ACTION_BLINK ACTION_SEND_HB ACTION_GET_BATTERY_SENSOR ACTION_GET_POF_DATA ACTION_PL_STATUS ACTION_GET_MODULE ACTION_REBOOT ACTION_RESTORE_DEFAULTS
8
11
 
9
12
  # ------------- energy2400 -------------
@@ -26,11 +29,15 @@ datapath/pkt_filter_test PKT_FILTER_DISABLE_FORWARDING PKT_FILTER_TEMP_PKT
26
29
  datapath/pkt_filter_gen3_test PKT_FILTER_DISABLE_FORWARDING PKT_FILTER_TEMP_PKT
27
30
  datapath/pkt_filter_ble5_test PKT_FILTER_DISABLE_FORWARDING PKT_FILTER_TEMP_PKT
28
31
  datapath/rx_channel_test RX_CHANNEL_37 RX_CHANNEL_38 RX_CHANNEL_10_250K RX_CHANNEL_10_500K
29
- datapath/num_of_tags_test 500
32
+ datapath/aging_test low_pacer
30
33
  datapath/stress_gen3_test rep1_adaptive_pacer
34
+ datapath/num_of_tags_test 500
31
35
 
32
36
 
33
37
  # ------------- calibration -------------
34
38
  calibration/output_power_test -12 0 3
35
39
  calibration/interval_test 1 25 50
36
- calibration/pattern_test CALIBRATION_PATTERN_38_38_39 CALIBRATION_PATTERN_DISABLE_BEACON
40
+ calibration/pattern_test CALIBRATION_PATTERN_38_38_39 CALIBRATION_PATTERN_DISABLE_BEACON
41
+
42
+ # ------------- sensors -------------
43
+ sensors/ext_sensor_test tag_data_only rssi_threshold snsr0_scrmbl_snsr1_no_scrmbl
@@ -1,10 +1,12 @@
1
1
  # The certificate should run for every bridge change
2
- # The setup will include 1 tested BRG + 1 GW connected with UART
3
- # Run command example:
4
- # python ut.py --gw SIM --brg <XXXXXXXXXXXX> --tl certificate_test_list.txt --data sim --port <COM_PORT>
2
+ # The setup will include 1 tested BRG + 1 GW connected with UART or remotely
3
+ # Run command example with COM PORT connection:
4
+ # python brg_certificate_cli.py --gw SIM --brg <XXXXXXXXXXXX> --tl certificate_test_list.txt --data sim --port <COM_PORT>
5
+ # Run command example with remote GW connection:
6
+ # python brg_certificate_cli.py --gw <GWYYYYYYYYYYYY> --brg <XXXXXXXXXXXX> --tl certificate_test_list.txt --data sim
5
7
 
6
8
  # ------------- edge_mgmt -------------
7
- edge_mgmt/stat_test
9
+ edge_mgmt/periodic_msgs_test
8
10
  edge_mgmt/actions_test ACTION_GW_HB ACTION_BLINK ACTION_SEND_HB ACTION_GET_BATTERY_SENSOR ACTION_GET_POF_DATA ACTION_PL_STATUS ACTION_GET_MODULE ACTION_REBOOT ACTION_RESTORE_DEFAULTS
9
11
 
10
12
  # ------------- energy2400 -------------
@@ -12,6 +14,8 @@ energy2400/pattern_test ENERGY_PATTERN_2_4_NO_ENERGIZING ENERGY_PATTERN_2_4_CHAN
12
14
  energy2400/output_power_test -12 -8 -4 0 2 3
13
15
  energy2400/duty_cycle_test 1 25 50 75
14
16
  energy2400/signal_indicator_test internal_brg rssi_threshold brg0_rx_brg1_tx brg0_none_brg1_rx brg0_rxtx_brg1_rxtx brg0_tx_brg1_none
17
+ energy2400/signal_indicator_ble5_10_500k_test internal_brg rssi_threshold brg0_rx_brg1_tx brg0_none_brg1_rx brg0_rxtx_brg1_rxtx brg0_tx_brg1_none
18
+ energy2400/signal_indicator_ble5_10_250k_test internal_brg rssi_threshold brg0_rx_brg1_tx brg0_none_brg1_rx brg0_rxtx_brg1_rxtx brg0_tx_brg1_none
15
19
 
16
20
  # ------------- energy_sub1g -------------
17
21
  energy_sub1g/pattern_test SUB1G_ENERGY_PATTERN_NO_ENERGIZING SUB1G_ENERGY_PATTERN_SINGLE_TONE_915000 SUB1G_ENERGY_PATTERN_FCC_HOPPING SUB1G_ENERGY_PATTERN_SINGLE_TONE_917500 SUB1G_ENERGY_PATTERN_NZ_HOPPING
@@ -21,7 +25,7 @@ energy_sub1g/signal_indicator_test 60,4 100,3
21
25
  # ------------- datapath -------------
22
26
  datapath/rssi_threshold_test -80 -65 -10
23
27
  datapath/pattern_test DATAPATH_PATTERN_38_38_39 DATAPATH_PATTERN_EU_PATTERN
24
- datapath/tx_repetition_test 2 4
28
+ datapath/tx_repetition_test 2 4
25
29
  datapath/output_power_test -12 -8 -4 0 2 3
26
30
  datapath/pacer_interval_test 5 15 30 60
27
31
  datapath/pacer_interval_ble5_test 5 15 30 60
@@ -31,13 +35,19 @@ datapath/pkt_filter_ble5_test PKT_FILTER_RANDOM_FIRST_ARRIVING_PKT PKT_FILTER_DI
31
35
  datapath/rx_channel_test RX_CHANNEL_37 RX_CHANNEL_38 RX_CHANNEL_39 RX_CHANNEL_10_250K RX_CHANNEL_10_500K
32
36
  datapath/rx_rate_gen2_test mid_values diff_pacer min_value max_value diff_rate
33
37
  datapath/rx_rate_gen3_test mid_values diff_pacer min_value max_value diff_rate
34
- datapath/num_of_tags_test 2500
35
38
  datapath/pacer_interval_tags_count_test 1 10 15 30
36
39
  datapath/stress_test rep3 rep2 rep1 rep1_adaptive_pacer pixel_burst
37
40
  datapath/stress_gen3_test rep3 rep2 rep1 rep1_adaptive_pacer pixel_burst
41
+ datapath/aging_test low_pacer high_pacer
42
+ datapath/num_of_tags_test 5000
43
+
44
+ # ------------- pwr_mgmt -------------
45
+ pwr_mgmt/pwr_mgmt_test
38
46
 
39
47
  # ------------- calibration -------------
40
48
  calibration/output_power_test -12 -8 -4 0 2 3
41
49
  calibration/interval_test 1 25 50
42
50
  calibration/pattern_test CALIBRATION_PATTERN_38_38_39 CALIBRATION_PATTERN_STANDARD CALIBRATION_PATTERN_EU_PATTERN CALIBRATION_PATTERN_DISABLE_BEACON
43
51
 
52
+ # ------------- sensors -------------
53
+ sensors/ext_sensor_test tag_data_only rssi_threshold snsr0_no_scrmbl snsr1_scrmbl snsr0_scrmbl_snsr1_no_scrmbl snsr0_scrmbl_snsr1_scrmbl
@@ -1,13 +1,14 @@
1
1
  {
2
- "name": "interval_test",
3
- "module": "calibration",
2
+ "name": "Interval",
3
+ "module": "Calibration",
4
4
  "purpose": "Test configuration for all supported calibration interval values",
5
- "documentaion": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Calibration-Module",
5
+ "documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Calibration-Module",
6
6
  "initialCondition": "Bridge configured to defaults",
7
7
  "procedure": ["Test prolog", "Configurations", "Test epilog and revert to defaults"],
8
8
  "expectedOutcome": "All values configured successfully",
9
9
  "mandatory": 1,
10
10
  "multiBridgeTest": 0,
11
11
  "gwOnlyTest": 0,
12
+ "internalBridge": 1,
12
13
  "allSupportedValues": [1, 25, 50, 100, 255]
13
14
  }
@@ -1,13 +1,16 @@
1
1
  {
2
- "name": "output_power_test",
3
- "module": "calibration",
2
+ "name": "Output Power",
3
+ "module": "Calibration",
4
4
  "purpose": "Test configuration for all supported calibration output power values",
5
- "documentaion": "<TEST_DOCUMENTATION_LINK>",
5
+ "documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Calibration-Module",
6
6
  "initialCondition": "Bridge configured to defaults",
7
- "procedure": ["Test prolog", "Configurations", "Test epilog and revert to defaults"],
7
+ "procedure": ["Test prolog",
8
+ "For each supported value - configure the BRG and verify the value",
9
+ "Test epilog and revert to defaults"],
8
10
  "expectedOutcome": "All values configured successfully",
9
11
  "mandatory": 1,
10
12
  "multiBridgeTest": 0,
11
13
  "gwOnlyTest": 0,
12
- "allSupportedValues": ["OUTPUT_POWER_2_4_NEG_12", "OUTPUT_POWER_2_4_NEG_8", "OUTPUT_POWER_2_4_NEG_4", "OUTPUT_POWER_2_4_POS_0", "OUTPUT_POWER_2_4_POS_2", "OUTPUT_POWER_2_4_POS_3"]
14
+ "internalBridge": 1,
15
+ "allSupportedValues": [-12, -8, -4, 0, 2, 3]
13
16
  }
@@ -1,13 +1,16 @@
1
1
  {
2
- "name": "pattern_test",
3
- "module": "calibration",
2
+ "name": "Pattern",
3
+ "module": "Calibration",
4
4
  "purpose": "Test configuration for all supported calibration pattern values",
5
- "documentaion": "<TEST_DOCUMENTATION_LINK>",
5
+ "documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Calibration-Module",
6
6
  "initialCondition": "Bridge configured to defaults",
7
- "procedure": ["Test prolog", "Configurations and received packets sanity check (for specific patterns)", "Test epilog and revert to defaults"],
7
+ "procedure": ["Test prolog",
8
+ "For each supported value - Configure the BRG and verify packet reception functionality (for specific patterns)",
9
+ "Test epilog and revert to defaults"],
8
10
  "expectedOutcome": "All values configured successfully and packets received only on included channels. When configuring the brg to CALIBRATION_PATTERN_38_38_39 we configure the GW to rx channel 37 and make sure GW doesn't get any pixels",
9
11
  "mandatory": 1,
10
12
  "multiBridgeTest": 0,
11
13
  "gwOnlyTest": 0,
14
+ "internalBridge": 1,
12
15
  "allSupportedValues": ["CALIBRATION_PATTERN_STANDARD", "CALIBRATION_PATTERN_38_38_39", "CALIBRATION_PATTERN_EU_PATTERN", "CALIBRATION_PATTERN_DISABLE_BEACON"]
13
16
  }
@@ -16,36 +16,35 @@ def run(test):
16
16
  return cert_common.test_epilog(test)
17
17
 
18
18
  for param in test.params:
19
- if param.value == ag.CALIBRATION_PATTERN_38_38_39:
19
+ # A special verification for 38_38_39, which is irrelevant for bridge with cloud connectivity
20
+ if param.value == ag.CALIBRATION_PATTERN_38_38_39 and not cert_common.is_bcc_running(test):
20
21
  utPrint("\nCALIBRATION_PATTERN_38_38_39 was configured - checking the GW doesn't receive tag packets", "BLUE")
21
22
  # Config internal_brg's rx_channel to CHANNEL_37
22
23
  test = cert_config.internal_brg_configure(test, fields=[BRG_RX_CHANNEL], values=[ag.RX_CHANNEL_37], module=datapath_module)[0]
23
- if test.rc == TEST_FAILED and test.exit_on_param_failure:
24
- break
25
- # Configure the BRG, wait=False
26
- test = cert_config.brg_configure(test, fields=[BRG_PATTERN, BRG_CALIB_INTERVAL],
27
- values=[param.value, 1], module=calib_module, wait=False)[0]
28
- cert_common.wait_time_n_print(CLEAR_DATA_PATH_TIMEOUT)
29
- # MQTT scan
30
- if test.data == DATA_SIMULATION:
31
- # start generating pkts and send them using data simulator
32
- pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=10, duplicates=1, delay=100, pkt_types=[0])
33
- pixel_sim_thread.start()
34
- df = cert_common.data_scan(test, gw_data=True, brg_data=True, scan_time=(40))
35
- if test.data == DATA_SIMULATION:
36
- # stop generating pkts with data simulator and wait a few seconds for full flush
37
- pixel_sim_thread.stop()
38
- time.sleep(5)
24
+ if test.rc != TEST_FAILED:
25
+ # Configure the BRG, wait=False
26
+ test = cert_config.brg_configure(test, fields=[BRG_PATTERN, BRG_CALIB_INTERVAL],
27
+ values=[param.value, 1], module=calib_module, wait=False)[0]
28
+ cert_common.wait_time_n_print(CLEAR_DATA_PATH_TIMEOUT)
29
+ # MQTT scan
30
+ if test.data == DATA_SIMULATION:
31
+ # start generating pkts and send them using data simulator
32
+ pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=10, duplicates=1, delay=100, pkt_types=[0])
33
+ pixel_sim_thread.start()
34
+ df = cert_common.data_scan(test, gw_data=True, brg_data=True, scan_time=(40))
35
+ if test.data == DATA_SIMULATION:
36
+ # stop generating pkts with data simulator and wait a few seconds for full flush
37
+ pixel_sim_thread.stop()
38
+ time.sleep(5)
39
39
 
40
- # Analyze pass/fail
41
- gw_tags_pkts = len(df.query('src_id == gw_id'))
42
- brg_tags_pkts = len(df.query('src_id != gw_id'))
43
- print(f"Found gw_tags_pkts={gw_tags_pkts}, brg_tags_pkts={brg_tags_pkts}")
44
- if (gw_tags_pkts == 0 and test.data == DATA_REAL_TAGS) or brg_tags_pkts != 0:
45
- test.rc = TEST_FAILED
46
- test.add_reason(f"gw_tags_pkts={gw_tags_pkts} brg_tags_pkts={brg_tags_pkts} for BRG 38,38,39 calibration, "
47
- "and GW scanning on ch 37")
48
- break
40
+ # Analyze pass/fail
41
+ gw_tags_pkts = len(df.query('src_id == gw_id'))
42
+ brg_tags_pkts = len(df.query('src_id != gw_id'))
43
+ print(f"Found gw_tags_pkts={gw_tags_pkts}, brg_tags_pkts={brg_tags_pkts}")
44
+ if (gw_tags_pkts == 0 and test.data == DATA_REAL_TAGS) or brg_tags_pkts != 0:
45
+ test.rc = TEST_FAILED
46
+ test.add_reason(f"gw_tags_pkts={gw_tags_pkts} brg_tags_pkts={brg_tags_pkts} for BRG 38,38,39 calibration, "
47
+ "and GW scanning on ch 37")
49
48
  # Revert internal_brg
50
49
  test = cert_config.internal_brg_configure(test, module=datapath_module)[0]
51
50
  generate_log_file(test, param.name)
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "Pixels Aging",
3
+ "module": "Datapath",
4
+ "purpose": "verify the functionality of the aging mechanism in the bridge for low and high pacer intervals",
5
+ "documentation": [],
6
+ "initialCondition": "Bridge configured to defaults",
7
+ "procedure": ["Test prolog",
8
+ "define simulation with 500 Tags with 0 delay(0.02 sec) ",
9
+ "Low pacer - config pacer interval < 60, pi = 15, check ctr tags ,wait aging time, then expect to tags ctr = 0",
10
+ "High pacer - config pacer interval > 60, pi = 300, check ctr tags ,wait aging time, then expect to tags ctr = 0",
11
+ "Test epilog"],
12
+ "expectedOutcome": "Aging mechanism works as expected for low and high pacer intervals",
13
+ "mandatory": 1,
14
+ "multiBridgeTest": 0,
15
+ "gwOnlyTest": 0,
16
+ "internalBridge": 1,
17
+ "allSupportedValues": ["low_pacer", "high_pacer"]
18
+
19
+ }
@@ -0,0 +1,142 @@
1
+ from brg_certificate.cert_prints import *
2
+ from brg_certificate.cert_defines import *
3
+ from brg_certificate.wlt_types import *
4
+ import brg_certificate.cert_common as cert_common
5
+ import brg_certificate.cert_config as cert_config
6
+ import brg_certificate.cert_data_sim as cert_data_sim
7
+
8
+
9
+ def send_get_HB(test):
10
+ cert_config.send_brg_action(test, ag.ACTION_SEND_HB)
11
+ test, HB_list = cert_common.scan_for_mgmt_pkts(test, [eval_pkt(f'Brg2GwHbV{test.active_brg.api_version}')])
12
+ return HB_list
13
+
14
+
15
+ def calculate_aging_time(pacer_interval):
16
+ return max(60, pacer_interval)
17
+
18
+
19
+ def calculate_sending_time(duplicates, delay, num_of_sim_tags):
20
+ if delay <= 0.02:
21
+ return duplicates * 0.02 * num_of_sim_tags
22
+ else:
23
+ actual_delay = max(delay, duplicates * ag.PIXEL_SIM_MIN_CYCLE)
24
+ actual_delay = actual_delay / 1000
25
+ return actual_delay * num_of_sim_tags
26
+
27
+
28
+ def combination_func(test, datapath_module, pacer_interval, num_of_sim_tags, aging_time):
29
+
30
+ test = cert_config.brg_configure(test, fields=[BRG_PACER_INTERVAL], values=[pacer_interval], module=datapath_module)[0]
31
+ if test.rc == TEST_FAILED and test.reason != TEST_PASSED:
32
+ for i in range(2):
33
+ if test.rc == TEST_PASSED:
34
+ return test
35
+ test = cert_config.brg_configure(test, fields=[BRG_PACER_INTERVAL], values=[pacer_interval], module=datapath_module)[0]
36
+ test = test.add_reason("Didn't succeed to configure after two attempts - No pkt was found!")
37
+ return test
38
+ duplication = 1
39
+ delay = 0
40
+ pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=num_of_sim_tags, duplicates=duplication, delay=delay,
41
+ pkt_types=[0], pixels_type=GEN2)
42
+ cycle_time = calculate_sending_time(duplication, delay, num_of_sim_tags)
43
+ sending_time = cycle_time * 4
44
+ print(f"Simulator send pixels for {sending_time} sec")
45
+ pixel_sim_thread.start()
46
+ start_time = time.time()
47
+ # sending time
48
+ ctr_tags_sending_time = []
49
+ while (time.time() - start_time) < sending_time:
50
+ HB_list = send_get_HB(test)
51
+
52
+ pixel_sim_thread.stop()
53
+ for p in HB_list:
54
+ ctr_tags_sending_time.append(p[MGMT_PKT].pkt.tags_ctr)
55
+ print("\nSimulator stop generating packets\n")
56
+ # TODO: logging print(debug)
57
+ # print(f"ctr_tags_list: {ctr_tags_sending_time}\n")
58
+
59
+ # waiting time - until the aging value
60
+ # during of the aging time we expect to get the ctr_tags equal to the number of pixels
61
+ ctr_tags_aging_time = []
62
+ print(f"waiting for aging time of {aging_time} sec")
63
+ while (time.time() - start_time) < (cycle_time * 3 + aging_time):
64
+ HB_list = send_get_HB(test)
65
+ for p in HB_list:
66
+ ctr_tags_aging_time.append(p[MGMT_PKT].pkt.tags_ctr)
67
+ print(f"\naging time: {aging_time} passed\n")
68
+ # TODO: logging print(debug)
69
+ # print(f"ctr_tags_list: {ctr_tags_aging_time}\n")
70
+ start_aging_time = time.time()
71
+ ctr_tags_deleting_time = []
72
+
73
+ found_zero = 0
74
+ time_finding = 0
75
+ # stop after two HB packets, we expect to get the ctr_tags 0 in the second HB packet after the aging time
76
+ print("Start of deleting time, wait for zero value ")
77
+ while (time.time() - start_aging_time) <= 120:
78
+ test, HB_list = cert_common.scan_for_mgmt_pkts(test, [eval_pkt(f'Brg2GwHbV{test.active_brg.api_version}')])
79
+ for p in HB_list:
80
+ ctr_tags_deleting_time.append(p[MGMT_PKT].pkt.tags_ctr)
81
+ if p[MGMT_PKT].pkt.tags_ctr == 0:
82
+ found_zero = 1
83
+ time_finding = round(time.time() - start_aging_time, 2)
84
+ print(f"Finding time: {time_finding}")
85
+ print(f"Found zero value after {time_finding} sec")
86
+ break
87
+ if found_zero:
88
+ break
89
+ # sending time and the deleting time should be the same
90
+ print(f"Deleting time: {cycle_time} passed\n")
91
+ # TODO: logging print(debug)
92
+ # print(f"Ctr_tags_deleting_time: {ctr_tags_deleting_time}\n")
93
+
94
+ # expected to get the ctr_tags 0 in the second HB packet after the aging time
95
+ if found_zero == 0 or time_finding > 60:
96
+ test.rc = TEST_FAILED
97
+ test.add_reason("The last counter value is not zero")
98
+ print("The last counter value is not zero\n")
99
+ else:
100
+ # NOTE: because sometimes when it didn't find HB pkt it failed the test.
101
+ test.rc = TEST_PASSED
102
+ return test
103
+
104
+
105
+ def low_pacer(test, datapath_module, num_of_sim_tags):
106
+ pacer_interval = 15
107
+ aging_time = calculate_aging_time(pacer_interval)
108
+ test = combination_func(test, datapath_module, pacer_interval=pacer_interval, num_of_sim_tags=num_of_sim_tags, aging_time=aging_time)
109
+ return test
110
+
111
+
112
+ def high_pacer(test, datapath_module, num_of_sim_tags):
113
+ pacer_interval = 300
114
+ aging_time = calculate_aging_time(pacer_interval)
115
+ test = combination_func(test, datapath_module, pacer_interval=pacer_interval, num_of_sim_tags=num_of_sim_tags, aging_time=aging_time)
116
+ return test
117
+
118
+
119
+ def run(test):
120
+ # Test prolog
121
+ datapath_module = eval_pkt(f'ModuleDatapathV{test.active_brg.api_version}')
122
+ test = cert_common.test_prolog(test)
123
+ if test.rc == TEST_FAILED:
124
+ return cert_common.test_epilog(test)
125
+
126
+ STRESS_TEST_MAP = {"low_pacer": low_pacer, "high_pacer": high_pacer}
127
+ num_of_pixels = 500
128
+
129
+ for param in test.params:
130
+ functionality_run_print(param.name)
131
+ test = STRESS_TEST_MAP[param.value](test, datapath_module, num_of_pixels)
132
+ generate_log_file(test, param.name)
133
+ field_functionality_pass_fail_print(test, param.name)
134
+ test.set_phase_rc(param.name, test.rc)
135
+ test.add_phase_reason(param.name, test.reason)
136
+ if test.rc == TEST_FAILED and test.exit_on_param_failure:
137
+ break
138
+ else:
139
+ test.reset_result()
140
+ time.sleep(5)
141
+
142
+ return cert_common.test_epilog(test, revert_brgs=True, revert_gws=False, modules=[datapath_module])
@@ -1,13 +1,18 @@
1
1
  {
2
- "name": "num_of_tags_test",
3
- "module": "datapath",
2
+ "name": "Supported Pixels",
3
+ "module": "Datapath",
4
4
  "purpose": "Test pixels handling in the bridge for different amount of pixels",
5
- "documentaion": "<TEST_DOCUMENTATION_LINK>",
5
+ "documentation": "<TEST_DOCUMENTATION_LINK>",
6
6
  "initialCondition": "Bridge & data simulator configured to defaults",
7
- "procedure": ["Test prolog", "Generate packets from the given amount of pixels & scan for packets in the bridge", "Compare received amount of pixels and the heartbeat pixels counter to the given value","Repeat for all given pixels amounts", "Test epilog and revert to defaults"],
7
+ "procedure": ["Test prolog",
8
+ "Generate packets from the given amount of pixels & scan for packets in the bridge",
9
+ "Compare received amount of pixels and the heartbeat pixels counter to the given value",
10
+ "Repeat for all given pixels amounts",
11
+ "Test epilog and revert to defaults"],
8
12
  "expectedOutcome": "All values configured successfully",
9
13
  "mandatory": 1,
10
14
  "multiBridgeTest": 0,
11
15
  "gwOnlyTest": 0,
12
- "allSupportedValues": [500, 1000, 2500]
16
+ "internalBridge": 1,
17
+ "allSupportedValues": [500, 1000, 2500, 5000]
13
18
  }
@@ -5,10 +5,11 @@ from brg_certificate.wlt_types import *
5
5
  import brg_certificate.cert_common as cert_common
6
6
  import brg_certificate.cert_config as cert_config
7
7
 
8
- GW_CYCLE_TIME = 0.02 # GW sends BLE packet every 20 nsec
8
+ GW_CYCLE_TIME = 0.02 # GW sends BLE packet every 20 nsec
9
+
9
10
 
10
11
  def run(test):
11
-
12
+
12
13
  datapath_module = eval_pkt(f'ModuleDatapathV{test.active_brg.api_version}')
13
14
  print(f"values: {[param.value for param in test.params]}")
14
15
 
@@ -26,15 +27,15 @@ def run(test):
26
27
  test = cert_config.brg_configure(test, fields=[BRG_PACER_INTERVAL], values=[time_of_sending_pkts], module=datapath_module)[0]
27
28
  if test.rc == TEST_FAILED:
28
29
  return cert_common.test_epilog(test)
29
-
30
30
 
31
31
  if test.data == DATA_SIMULATION:
32
32
  # start generating pkts and send them using data simulator
33
- pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=param.value, duplicates=duplicates, delay=0, pkt_types=[0])
33
+ pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=param.value, duplicates=duplicates,
34
+ delay=0, pkt_types=[0])
34
35
  pixel_sim_thread.start()
35
36
 
36
- df = cert_common.data_scan(test, scan_time=time_of_sending_pkts+5, brg_data=(not test.internal_brg), gw_data=test.internal_brg)
37
-
37
+ df = cert_common.data_scan(test, scan_time=time_of_sending_pkts + 5, brg_data=(not test.internal_brg), gw_data=test.internal_brg)
38
+
38
39
  if test.data == DATA_SIMULATION:
39
40
  # stop generating pkts with data simulator and wait a few seconds for full flush
40
41
  pixel_sim_thread.stop()
@@ -57,14 +58,14 @@ def run(test):
57
58
 
58
59
  cert_common.display_data(df, nfpkt=True, name_prefix=f"num_of_tags_{param.name}_", dir=test.dir)
59
60
 
60
- # compare the numbers of tags that come from the brg, success in 95% from number of tags (value) or more.
61
- if num_of_tags < (param.value*0.95):
61
+ # compare the numbers of tags that come from the brg, success in 95% from number of tags (value) or more.
62
+ if num_of_tags < (param.value * 0.95):
62
63
  test.rc = TEST_FAILED
63
64
  test.add_reason(f"Found {num_of_tags} pixels instead of {param.name} pixels!")
64
65
  test.add_reason(f"Note - HB was {num_of_tags_HB}")
65
-
66
- # compare the counter tags in the HB packet
67
- if num_of_tags_HB < param.value or num_of_tags_HB > (param.value + 100):
66
+
67
+ # compare the counter tags in the HB packet
68
+ if num_of_tags_HB < param.value or num_of_tags_HB > (param.value + 100):
68
69
  test.rc = TEST_FAILED
69
70
  test.add_reason(f"pixels counter in HB packet is {num_of_tags_HB} instead of {param.name} pixels!")
70
71
  test.add_reason(f"Note - tag counter field = {num_of_tags}")
@@ -1,13 +1,16 @@
1
1
  {
2
- "name": "output_power_test",
3
- "module": "datapath",
2
+ "name": "Output Power",
3
+ "module": "Datapath",
4
4
  "purpose": "Test configuration for all supported datapath output power values",
5
- "documentaion": "<TEST_DOCUMENTATION_LINK>",
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", "Configurations", "Test epilog and revert to defaults"],
7
+ "procedure": ["Test prolog",
8
+ "For each supported value - configure the BRG and verify the value",
9
+ "Test epilog and revert to defaults"],
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": [-12, -8, -4, 0, 2, 3]
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_OUTPUT_POWER]
@@ -24,4 +25,4 @@ def run(test):
24
25
  else:
25
26
  test.reset_result()
26
27
 
27
- return cert_common.test_epilog(test, revert_brgs=True, modules=[datapath_module])
28
+ return cert_common.test_epilog(test, revert_brgs=True, modules=[datapath_module])
@@ -1,13 +1,16 @@
1
1
  {
2
- "name": "pacer_interval_ble5_test",
3
- "module": "datapath",
4
- "purpose": "Test pacer interval feature configuration and functionality in the bridge with BLE5 packets for different pacer interval values",
5
- "documentaion": "<TEST_DOCUMENTATION_LINK>",
2
+ "name": "Pacer Interval BLE5",
3
+ "module": "Datapath",
4
+ "purpose": "Test pacer interval feature configuration and functionality in the bridge with BLE_5.0 packets for different pacer interval values",
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", "Pacer interval configuration", "Generate GEN3 pixels packets & scan for packets in the bridge", "Compare pacer interval mean per pixel to the configured value", "Repeat for all given pacer interval values", "Test epilog and revert to defaults"],
7
+ "procedure": ["Test prolog",
8
+ "For each supported value - Configure the pacer interval, Generate GEN3 pixels packets & scan for packets in the bridge, Compare pacer interval mean per pixel to the configured value",
9
+ "Test epilog and revert to defaults"],
8
10
  "expectedOutcome": "All values configured successfully and actual pacing found matching to the configured values",
9
11
  "mandatory": 1,
10
12
  "multiBridgeTest": 0,
11
13
  "gwOnlyTest": 0,
14
+ "internalBridge": 1,
12
15
  "allSupportedValues": [5, 15, 30, 60]
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_PACER_INTERVAL, BRG_RX_CHANNEL, BRG_PKT_FILTER]
@@ -14,16 +15,18 @@ 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_ble5(test, fields=fields, values=[param.value, ag.RX_CHANNEL_10_250K, ag.PKT_FILTER_TEMP_PKT], module=datapath_module)[0]
18
+ test = cert_config.brg_configure_ble5(test, fields=fields, values=[param.value, ag.RX_CHANNEL_10_250K, ag.PKT_FILTER_TEMP_PKT],
19
+ module=datapath_module)[0]
18
20
  if test.rc == TEST_FAILED and test.exit_on_param_failure:
19
21
  break
20
22
  num_of_pixels = 0
21
23
  if test.data == DATA_SIMULATION:
22
24
  # start generating pkts and send them using data simulator
23
25
  num_of_pixels = 10
24
- pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=num_of_pixels, duplicates=2, delay=0, pkt_types=[2], pixels_type=GEN3_EXTENDED)
26
+ pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=num_of_pixels, duplicates=2, delay=0,
27
+ pkt_types=[2], pixels_type=GEN3_EXTENDED)
25
28
  pixel_sim_thread.start()
26
- df = cert_common.data_scan(test, scan_time=param.value*4, brg_data=(not test.internal_brg), gw_data=test.internal_brg)
29
+ df = cert_common.data_scan(test, scan_time=param.value * 4, brg_data=(not test.internal_brg), gw_data=test.internal_brg)
27
30
  if test.data == DATA_SIMULATION:
28
31
  # stop generating pkts with data simulator and wait a few seconds for full flush
29
32
  pixel_sim_thread.stop()
@@ -1,13 +1,16 @@
1
1
  {
2
- "name": "pacer_interval_test",
3
- "module": "datapath",
2
+ "name": "Pacer Interval Pixels Count",
3
+ "module": "Datapath",
4
4
  "purpose": "Test pixels handling in the bridge for different pacer interval values",
5
- "documentaion": "<TEST_DOCUMENTATION_LINK>",
5
+ "documentation": ["https://community.wiliot.com/customers/s/article/Wiliot-Network-Data-Path-Module-Pacing"],
6
6
  "initialCondition": "Bridge configured to defaults",
7
- "procedure": ["Test prolog", "Pacer interval configuration", "Scan for pixel packets in the bridge", "Compare maximal amount of received pixels to the amount received with different pacer interval value", "Repeat for all given pacer interval values", "Test epilog and revert to defaults"],
7
+ "procedure": ["Test prolog",
8
+ "For each supported value - Pacer interval configuration, Scan for pixel packets in the bridge & Compare maximal amount of received pixels to the amount received with different pacer interval value",
9
+ "Test epilog and revert to defaults"],
8
10
  "expectedOutcome": "All values configured successfully and no significant gaps between received amounts of pixels were found",
9
11
  "mandatory": 1,
10
12
  "multiBridgeTest": 0,
11
13
  "gwOnlyTest": 0,
14
+ "internalBridge": 1,
12
15
  "allSupportedValues": [1, 10, 15, 30]
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
  pacer_threshold = PACER_INTERVAL_THRESHOLD_HIGH if test.private_setup else PACER_INTERVAL_THRESHOLD
9
10
 
@@ -52,12 +53,14 @@ def run(test):
52
53
  max_count = max([tags_count_per_pacer[pacer] for pacer in tags_count_per_pacer])
53
54
  for param in test.params:
54
55
  if test.data == DATA_SIMULATION:
55
- if tags_count_per_pacer[param.value] != num_of_pixels:
56
+ if tags_count_per_pacer[param.value] < num_of_pixels * 0.99 or tags_count_per_pacer[param.value] > num_of_pixels * 1.01:
56
57
  test.set_phase_rc(param.name, TEST_FAILED)
57
58
  test.add_phase_reason(param.name, f"received_tags={tags_count_per_pacer[param.value]} num_of_pixels={num_of_pixels}")
58
- # make sure minimal received tags number is more than minimal threshold (precentile from max) (diff of less than 3 tags will be accepted anyway)
59
+ # make sure minimal received tags number is more than minimal threshold (precentile from max)
60
+ # diff of less than 3 tags will be accepted anyway
59
61
  elif tags_count_per_pacer[param.value] < (pacer_threshold * max_count) and (max_count - tags_count_per_pacer[param.value]) > 3:
60
62
  test.set_phase_rc(param.name, TEST_FAILED)
61
- test.add_phase_reason(param.name, f"received_tags={tags_count_per_pacer[param.value]} max_tags={max_count} less than {int(pacer_threshold * 100)}%")
63
+ test.add_phase_reason(param.name, f"received_tags={tags_count_per_pacer[param.value]} "
64
+ f"max_tags={max_count} less than {int(pacer_threshold * 100)}%")
62
65
 
63
66
  return cert_common.test_epilog(test, revert_brgs=True, revert_gws=test.internal_brg, modules=[datapath_module])
@@ -1,13 +1,16 @@
1
1
  {
2
- "name": "pacer_interval_test",
3
- "module": "datapath",
2
+ "name": "Pacer Interval",
3
+ "module": "Datapath",
4
4
  "purpose": "Test pacer interval feature configuration and functionality in the bridge for different pacer interval values",
5
- "documentaion": "<TEST_DOCUMENTATION_LINK>",
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", "Pacer interval configuration", "Generate pixels packets & scan for packets in the bridge", "Compare pacer interval mean per pixel to the configured value", "Repeat for all given pacer interval values", "Test epilog and revert to defaults"],
7
+ "procedure": ["Test prolog",
8
+ "for each supported value - Pacer interval configuration, Generate pixels packets & scan for packets in the bridge & Compare pacer interval mean per pixel to the configured value",
9
+ "Test epilog and revert to defaults"],
8
10
  "expectedOutcome": "All values configured successfully and actual pacing found matching to the configured values",
9
11
  "mandatory": 1,
10
12
  "multiBridgeTest": 0,
11
13
  "gwOnlyTest": 0,
14
+ "internalBridge": 1,
12
15
  "allSupportedValues": [5, 10, 15, 30, 60]
13
16
  }