wiliot-certificate 4.4.3__py3-none-any.whl → 4.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. {brg_certificate → certificate}/ag/wlt_cmd_if.html +10 -4
  2. {brg_certificate → certificate}/ag/wlt_types_ag.py +1878 -519
  3. certificate/cert_common.py +1488 -0
  4. certificate/cert_config.py +480 -0
  5. {brg_certificate → certificate}/cert_data_sim.py +134 -46
  6. {brg_certificate → certificate}/cert_defines.py +129 -128
  7. {brg_certificate → certificate}/cert_gw_sim.py +183 -53
  8. {brg_certificate → certificate}/cert_mqtt.py +179 -64
  9. {brg_certificate → certificate}/cert_prints.py +35 -33
  10. {brg_certificate → certificate}/cert_protobuf.py +15 -6
  11. {brg_certificate → certificate}/cert_results.py +240 -64
  12. certificate/cert_utils.py +634 -0
  13. certificate/certificate.py +205 -0
  14. certificate/certificate_cli.py +76 -0
  15. certificate/certificate_eth_test_list.txt +76 -0
  16. certificate/certificate_sanity_test_list.txt +66 -0
  17. certificate/certificate_test_list.txt +76 -0
  18. {brg_certificate → certificate}/tests/calibration/interval_test/interval_test.json +3 -2
  19. {brg_certificate → certificate}/tests/calibration/interval_test/interval_test.py +7 -6
  20. certificate/tests/calibration/output_power_test/output_power_test.json +23 -0
  21. certificate/tests/calibration/output_power_test/output_power_test.py +39 -0
  22. {brg_certificate → certificate}/tests/calibration/pattern_test/pattern_test.json +2 -1
  23. {brg_certificate → certificate}/tests/calibration/pattern_test/pattern_test.py +20 -15
  24. certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.json +15 -0
  25. certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.py +140 -0
  26. certificate/tests/cloud_connectivity/acl_test/acl_test.json +15 -0
  27. certificate/tests/cloud_connectivity/acl_test/acl_test.py +96 -0
  28. certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.json +19 -0
  29. certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.py +41 -0
  30. certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.json +19 -0
  31. certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.py +215 -0
  32. certificate/tests/cloud_connectivity/connection_test/connection_test.json +18 -0
  33. certificate/tests/cloud_connectivity/connection_test/connection_test.py +67 -0
  34. certificate/tests/cloud_connectivity/deduplication_test/deduplication_test.json +15 -0
  35. certificate/tests/cloud_connectivity/deduplication_test/deduplication_test.py +80 -0
  36. certificate/tests/cloud_connectivity/downlink_test/downlink_test.json +21 -0
  37. certificate/tests/cloud_connectivity/downlink_test/downlink_test.py +201 -0
  38. certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.json +17 -0
  39. certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.py +104 -0
  40. certificate/tests/cloud_connectivity/reboot_test/reboot_test.json +18 -0
  41. certificate/tests/cloud_connectivity/reboot_test/reboot_test.py +59 -0
  42. certificate/tests/cloud_connectivity/registration_test/registration_test.json +20 -0
  43. certificate/tests/cloud_connectivity/registration_test/registration_test.py +384 -0
  44. certificate/tests/cloud_connectivity/registration_test/registration_test_cli.py +90 -0
  45. certificate/tests/cloud_connectivity/stress_test/stress_test.json +17 -0
  46. certificate/tests/cloud_connectivity/stress_test/stress_test.py +101 -0
  47. certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.json +25 -0
  48. certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.py +92 -0
  49. certificate/tests/cloud_connectivity/uplink_test/uplink_test.json +20 -0
  50. certificate/tests/cloud_connectivity/uplink_test/uplink_test.py +169 -0
  51. {brg_certificate → certificate}/tests/datapath/aging_test/aging_test.json +2 -1
  52. certificate/tests/datapath/aging_test/aging_test.py +142 -0
  53. certificate/tests/datapath/event_ble5_test/event_ble5_test.json +17 -0
  54. certificate/tests/datapath/event_ble5_test/event_ble5_test.py +89 -0
  55. certificate/tests/datapath/event_test/event_test.json +17 -0
  56. certificate/tests/datapath/event_test/event_test.py +80 -0
  57. {brg_certificate → certificate}/tests/datapath/num_of_tags_test/num_of_tags_test.json +4 -3
  58. {brg_certificate → certificate}/tests/datapath/num_of_tags_test/num_of_tags_test.py +19 -13
  59. certificate/tests/datapath/output_power_test/output_power_test.json +23 -0
  60. {brg_certificate → certificate}/tests/datapath/output_power_test/output_power_test.py +17 -6
  61. {brg_certificate → certificate}/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.json +2 -1
  62. {brg_certificate → certificate}/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.py +13 -11
  63. {brg_certificate → certificate}/tests/datapath/pacer_interval_test/pacer_interval_test.json +2 -1
  64. {brg_certificate → certificate}/tests/datapath/pacer_interval_test/pacer_interval_test.py +9 -7
  65. {brg_certificate → certificate}/tests/datapath/pattern_test/pattern_test.json +3 -2
  66. {brg_certificate → certificate}/tests/datapath/pattern_test/pattern_test.py +18 -6
  67. certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.json +20 -0
  68. certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.py +61 -0
  69. {brg_certificate → certificate}/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.json +2 -1
  70. {brg_certificate → certificate}/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.py +15 -14
  71. certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.json +19 -0
  72. certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.py +85 -0
  73. {brg_certificate → certificate}/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.json +2 -1
  74. {brg_certificate → certificate}/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.py +10 -9
  75. {brg_certificate → certificate}/tests/datapath/pkt_filter_test/pkt_filter_test.json +2 -1
  76. {brg_certificate → certificate}/tests/datapath/pkt_filter_test/pkt_filter_test.py +10 -9
  77. {brg_certificate → certificate}/tests/datapath/rssi_threshold_test/rssi_threshold_test.json +3 -2
  78. {brg_certificate → certificate}/tests/datapath/rssi_threshold_test/rssi_threshold_test.py +9 -8
  79. brg_certificate/tests/datapath/output_power_test/output_power_test.json → certificate/tests/datapath/rx_channel_hopping_test/rx_channel_hopping_test.json +6 -4
  80. certificate/tests/datapath/rx_channel_hopping_test/rx_channel_hopping_test.py +77 -0
  81. {brg_certificate → certificate}/tests/datapath/rx_channel_test/rx_channel_test.json +3 -2
  82. {brg_certificate → certificate}/tests/datapath/rx_channel_test/rx_channel_test.py +7 -6
  83. {brg_certificate → certificate}/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.json +8 -7
  84. {brg_certificate → certificate}/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.py +113 -73
  85. {brg_certificate → certificate}/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.json +8 -7
  86. {brg_certificate → certificate}/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.py +112 -72
  87. {brg_certificate → certificate}/tests/datapath/stress_gen3_test/stress_gen3_test.json +4 -3
  88. {brg_certificate → certificate}/tests/datapath/stress_gen3_test/stress_gen3_test.py +15 -11
  89. {brg_certificate → certificate}/tests/datapath/stress_test/stress_test.json +4 -3
  90. {brg_certificate → certificate}/tests/datapath/stress_test/stress_test.py +15 -11
  91. {brg_certificate → certificate}/tests/datapath/tx_repetition_test/tx_repetition_test.json +3 -1
  92. {brg_certificate → certificate}/tests/datapath/tx_repetition_test/tx_repetition_test.py +14 -13
  93. certificate/tests/edge_mgmt/action_blink_test/action_blink_test.json +15 -0
  94. certificate/tests/edge_mgmt/action_blink_test/action_blink_test.py +24 -0
  95. certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.json +15 -0
  96. certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.py +43 -0
  97. certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.json +15 -0
  98. certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.py +42 -0
  99. certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.json +15 -0
  100. certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.py +44 -0
  101. certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.json +16 -0
  102. certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.py +42 -0
  103. certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.json +15 -0
  104. certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.py +49 -0
  105. certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.json +15 -0
  106. certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.py +102 -0
  107. certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.json +15 -0
  108. certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.py +45 -0
  109. {brg_certificate → certificate}/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.json +3 -2
  110. {brg_certificate → certificate}/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.py +22 -11
  111. {brg_certificate → certificate}/tests/energy2400/duty_cycle_test/duty_cycle_test.json +2 -1
  112. {brg_certificate → certificate}/tests/energy2400/duty_cycle_test/duty_cycle_test.py +7 -6
  113. certificate/tests/energy2400/output_power_test/output_power_test.json +23 -0
  114. {brg_certificate → certificate}/tests/energy2400/output_power_test/output_power_test.py +17 -6
  115. {brg_certificate → certificate}/tests/energy2400/pattern_test/pattern_test.json +2 -1
  116. {brg_certificate → certificate}/tests/energy2400/pattern_test/pattern_test.py +7 -6
  117. certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.json +26 -0
  118. certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.py +379 -0
  119. certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.json +20 -0
  120. certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.py +173 -0
  121. certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +24 -0
  122. certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +350 -0
  123. {brg_certificate → certificate}/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.json +2 -1
  124. {brg_certificate → certificate}/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.py +7 -6
  125. {brg_certificate → certificate}/tests/energy_sub1g/pattern_test/pattern_test.json +2 -1
  126. {brg_certificate → certificate}/tests/energy_sub1g/pattern_test/pattern_test.py +7 -6
  127. {brg_certificate → certificate}/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.json +2 -1
  128. {brg_certificate → certificate}/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.py +10 -10
  129. {brg_certificate → certificate}/tests/sensors/ext_sensor_test/ext_sensor_test.json +5 -4
  130. certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +450 -0
  131. certificate/wlt_types.py +122 -0
  132. {gw_certificate → common}/api_if/202/status.json +6 -0
  133. {gw_certificate → common}/api_if/203/status.json +6 -0
  134. {gw_certificate → common}/api_if/204/status.json +6 -0
  135. common/api_if/206/data.json +85 -0
  136. common/api_if/206/status.json +69 -0
  137. common/api_if/api_validation.py +91 -0
  138. common/web/templates/generator.html +210 -0
  139. common/web/templates/index.html +20 -0
  140. common/web/templates/menu.html +54 -0
  141. common/web/templates/parser.html +53 -0
  142. {brg_certificate/ag → common/web/templates}/wlt_types.html +1216 -191
  143. common/web/web_utils.py +399 -0
  144. {brg_certificate → common}/wltPb_pb2.py +14 -12
  145. {gw_certificate/common → common}/wltPb_pb2.pyi +16 -2
  146. gui_certificate/gui_certificate_cli.py +14 -0
  147. gui_certificate/server.py +1267 -0
  148. gui_certificate/templates/cert_run.html +1273 -0
  149. wiliot_certificate-4.5.0.dist-info/METADATA +99 -0
  150. wiliot_certificate-4.5.0.dist-info/RECORD +168 -0
  151. {wiliot_certificate-4.4.3.dist-info → wiliot_certificate-4.5.0.dist-info}/WHEEL +1 -1
  152. wiliot_certificate-4.5.0.dist-info/entry_points.txt +5 -0
  153. wiliot_certificate-4.5.0.dist-info/top_level.txt +3 -0
  154. brg_certificate/ag/energous_v0_defines.py +0 -925
  155. brg_certificate/ag/energous_v1_defines.py +0 -931
  156. brg_certificate/ag/energous_v2_defines.py +0 -925
  157. brg_certificate/ag/energous_v3_defines.py +0 -925
  158. brg_certificate/ag/energous_v4_defines.py +0 -925
  159. brg_certificate/ag/fanstel_lan_v0_defines.py +0 -925
  160. brg_certificate/ag/fanstel_lte_v0_defines.py +0 -925
  161. brg_certificate/ag/fanstel_wifi_v0_defines.py +0 -925
  162. brg_certificate/ag/minew_lte_v0_defines.py +0 -925
  163. brg_certificate/ag/wlt_types_ag_jsons/brg2brg_ota.json +0 -142
  164. brg_certificate/ag/wlt_types_ag_jsons/brg2gw_hb.json +0 -785
  165. brg_certificate/ag/wlt_types_ag_jsons/brg2gw_hb_sleep.json +0 -139
  166. brg_certificate/ag/wlt_types_ag_jsons/calibration.json +0 -394
  167. brg_certificate/ag/wlt_types_ag_jsons/custom.json +0 -515
  168. brg_certificate/ag/wlt_types_ag_jsons/datapath.json +0 -672
  169. brg_certificate/ag/wlt_types_ag_jsons/energy2400.json +0 -550
  170. brg_certificate/ag/wlt_types_ag_jsons/energySub1g.json +0 -595
  171. brg_certificate/ag/wlt_types_ag_jsons/externalSensor.json +0 -598
  172. brg_certificate/ag/wlt_types_ag_jsons/interface.json +0 -938
  173. brg_certificate/ag/wlt_types_ag_jsons/powerManagement.json +0 -1234
  174. brg_certificate/ag/wlt_types_ag_jsons/side_info_sensor.json +0 -105
  175. brg_certificate/ag/wlt_types_ag_jsons/signal_indicator_data.json +0 -77
  176. brg_certificate/ag/wlt_types_ag_jsons/unified_echo_ext_pkt.json +0 -61
  177. brg_certificate/ag/wlt_types_ag_jsons/unified_echo_pkt.json +0 -110
  178. brg_certificate/brg_certificate.py +0 -225
  179. brg_certificate/brg_certificate_cli.py +0 -63
  180. brg_certificate/cert_common.py +0 -923
  181. brg_certificate/cert_config.py +0 -402
  182. brg_certificate/cert_utils.py +0 -362
  183. brg_certificate/certificate_bcc_sanity_test_list.txt +0 -40
  184. brg_certificate/certificate_bcc_test_list.txt +0 -48
  185. brg_certificate/certificate_sanity_test_list.txt +0 -43
  186. brg_certificate/certificate_test_list.txt +0 -53
  187. brg_certificate/config/eclipse.json +0 -10
  188. brg_certificate/config/hivemq.json +0 -10
  189. brg_certificate/config/mosquitto.json +0 -10
  190. brg_certificate/config/mosquitto.md +0 -95
  191. brg_certificate/config/wiliot-dev.json +0 -10
  192. brg_certificate/restore_brg.py +0 -61
  193. brg_certificate/tests/calibration/output_power_test/output_power_test.json +0 -16
  194. brg_certificate/tests/calibration/output_power_test/output_power_test.py +0 -28
  195. brg_certificate/tests/datapath/aging_test/aging_test.py +0 -143
  196. brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.json +0 -16
  197. brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.py +0 -73
  198. brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.json +0 -17
  199. brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.py +0 -118
  200. brg_certificate/tests/edge_mgmt/actions_test/actions_test.json +0 -14
  201. brg_certificate/tests/edge_mgmt/actions_test/actions_test.py +0 -396
  202. brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.json +0 -20
  203. brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.py +0 -94
  204. brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.json +0 -19
  205. brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.py +0 -87
  206. brg_certificate/tests/edge_mgmt/leds_test/leds_test.json +0 -17
  207. brg_certificate/tests/edge_mgmt/leds_test/leds_test.py +0 -223
  208. brg_certificate/tests/edge_mgmt/ota_test/ota_test.json +0 -17
  209. brg_certificate/tests/edge_mgmt/ota_test/ota_test.py +0 -128
  210. brg_certificate/tests/energy2400/output_power_test/output_power_test.json +0 -16
  211. brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.json +0 -20
  212. brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.py +0 -321
  213. brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.json +0 -20
  214. brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.py +0 -321
  215. brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.json +0 -20
  216. brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.py +0 -141
  217. brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +0 -20
  218. brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +0 -276
  219. brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.json +0 -20
  220. brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.py +0 -390
  221. brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.json +0 -16
  222. brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.py +0 -28
  223. brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +0 -305
  224. brg_certificate/wltPb_pb2.pyi +0 -234
  225. brg_certificate/wlt_types.py +0 -113
  226. gw_certificate/ag/ut_defines.py +0 -364
  227. gw_certificate/ag/wlt_types.py +0 -85
  228. gw_certificate/ag/wlt_types_ag.py +0 -5310
  229. gw_certificate/ag/wlt_types_data.py +0 -64
  230. gw_certificate/api/extended_api.py +0 -23
  231. gw_certificate/api_if/200/data.json +0 -106
  232. gw_certificate/api_if/200/status.json +0 -47
  233. gw_certificate/api_if/201/data.json +0 -98
  234. gw_certificate/api_if/201/status.json +0 -53
  235. gw_certificate/api_if/205/logs.json +0 -12
  236. gw_certificate/api_if/api_validation.py +0 -38
  237. gw_certificate/api_if/gw_capabilities.py +0 -54
  238. gw_certificate/cert_results.py +0 -145
  239. gw_certificate/common/analysis_data_bricks.py +0 -60
  240. gw_certificate/common/debug.py +0 -42
  241. gw_certificate/common/serialization_formatter.py +0 -93
  242. gw_certificate/common/utils.py +0 -8
  243. gw_certificate/common/utils_defines.py +0 -15
  244. gw_certificate/common/wltPb_pb2.py +0 -84
  245. gw_certificate/gw_certificate.py +0 -154
  246. gw_certificate/gw_certificate_cli.py +0 -87
  247. gw_certificate/interface/4.4.93_app.zip +0 -0
  248. gw_certificate/interface/4.4.93_sd_bl_app.zip +0 -0
  249. gw_certificate/interface/ble_simulator.py +0 -61
  250. gw_certificate/interface/ble_sniffer.py +0 -189
  251. gw_certificate/interface/flash_fw.py +0 -90
  252. gw_certificate/interface/if_defines.py +0 -36
  253. gw_certificate/interface/mqtt.py +0 -563
  254. gw_certificate/interface/nrfutil-linux +0 -0
  255. gw_certificate/interface/nrfutil-mac +0 -0
  256. gw_certificate/interface/nrfutil.exe +0 -0
  257. gw_certificate/interface/pkt_generator.py +0 -594
  258. gw_certificate/interface/uart_if.py +0 -236
  259. gw_certificate/interface/uart_ports.py +0 -20
  260. gw_certificate/templates/results.html +0 -241
  261. gw_certificate/templates/stage.html +0 -22
  262. gw_certificate/templates/table.html +0 -6
  263. gw_certificate/templates/test.html +0 -38
  264. gw_certificate/tests/__init__.py +0 -10
  265. gw_certificate/tests/actions.py +0 -289
  266. gw_certificate/tests/bad_crc_to_PER_quantization.csv +0 -51
  267. gw_certificate/tests/connection.py +0 -188
  268. gw_certificate/tests/downlink.py +0 -172
  269. gw_certificate/tests/generic.py +0 -238
  270. gw_certificate/tests/registration.py +0 -340
  271. gw_certificate/tests/static/__init__.py +0 -0
  272. gw_certificate/tests/static/connection_defines.py +0 -9
  273. gw_certificate/tests/static/downlink_defines.py +0 -9
  274. gw_certificate/tests/static/generated_packet_table.py +0 -195
  275. gw_certificate/tests/static/packet_table.csv +0 -10067
  276. gw_certificate/tests/static/references.py +0 -5
  277. gw_certificate/tests/static/uplink_defines.py +0 -14
  278. gw_certificate/tests/throughput.py +0 -240
  279. gw_certificate/tests/uplink.py +0 -853
  280. wiliot_certificate-4.4.3.dist-info/METADATA +0 -211
  281. wiliot_certificate-4.4.3.dist-info/RECORD +0 -210
  282. wiliot_certificate-4.4.3.dist-info/entry_points.txt +0 -3
  283. wiliot_certificate-4.4.3.dist-info/top_level.txt +0 -3
  284. {brg_certificate → certificate}/__init__.py +0 -0
  285. {gw_certificate → common}/api_if/202/data.json +0 -0
  286. {gw_certificate/api_if/200 → common/api_if/202}/logs.json +0 -0
  287. {gw_certificate → common}/api_if/203/data.json +0 -0
  288. {gw_certificate/api_if/201 → common/api_if/203}/logs.json +0 -0
  289. {gw_certificate → common}/api_if/204/data.json +0 -0
  290. {gw_certificate/api_if/202 → common/api_if/204}/logs.json +0 -0
  291. {gw_certificate → common}/api_if/205/data.json +0 -0
  292. {gw_certificate/api_if/203 → common/api_if/205}/logs.json +0 -0
  293. {gw_certificate → common}/api_if/205/status.json +0 -0
  294. {gw_certificate/api_if/204 → common/api_if/206}/logs.json +0 -0
  295. {gw_certificate → common/api_if}/__init__.py +0 -0
  296. {gw_certificate/api_if → gui_certificate}/__init__.py +0 -0
  297. {wiliot_certificate-4.4.3.dist-info → wiliot_certificate-4.5.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,205 @@
1
+
2
+ # generic
3
+ import sys
4
+ import os
5
+ sys.path.insert(0, os.path.abspath(".."))
6
+ import webbrowser
7
+ import glob
8
+ import datetime
9
+ import tabulate
10
+ import threading
11
+ import traceback
12
+ import shutil
13
+ # Local imports
14
+ from certificate.wlt_types import *
15
+ from certificate.cert_defines import *
16
+ from certificate.cert_prints import *
17
+ import certificate.cert_utils as cert_utils
18
+ import certificate.cert_results as cert_results
19
+ import certificate.cert_gw_sim as cert_gw_sim
20
+ import certificate.cert_mqtt as cert_mqtt
21
+ import certificate.cert_common as cert_common
22
+
23
+ TEST_LIST_FW_UPDATE_FILE = "ut/fw_update_test_list.txt"
24
+
25
+ os.system('')
26
+
27
+ def filter_tests(test_list, run, drun):
28
+ test_lines = [l.strip() for l in open(os.path.join(BASE_DIR, test_list)).readlines() if l.strip() and not l.strip().startswith("#")]
29
+ if run:
30
+ test_lines = [tl for tl in test_lines if re.search(run, tl.strip().split()[0])]
31
+ if drun:
32
+ test_lines = [tl for tl in test_lines if not re.search(drun, tl.strip().split()[0])]
33
+ return test_lines
34
+
35
+
36
+ def skip_test_check(test, validation_schema):
37
+ skip_string = ""
38
+ if test.multi_brg and (not cert_utils.brg_flag(validation_schema) or not test.active_brg):
39
+ skip_string = f"Skipped {test.module_name} multi brg test because device under test isn't a bridge"
40
+ elif test.multi_brg and not test.brg1:
41
+ skip_string = f"Skipped {test.module_name} multi brg test because brg1 wasn't given"
42
+ # TODO - check if module is supported by the bridge in the validation schema
43
+ elif test.active_brg and not test.active_brg.is_sup_cap(test):
44
+ skip_string = f"Skipped {test.module_name} because {cert_utils.module2name(test.test_module)} module is not supported"
45
+ # TODO - check if module is supported by the bridge in the validation schema
46
+ elif test.active_brg and ag.MODULE_EXT_SENSORS not in test.active_brg.sup_caps and "signal_indicator" in test.name:
47
+ skip_string = f"Skipped signal indicator tests because they are not supported when external sensors module not supported"
48
+ elif test.data != DATA_SIMULATION and test.test_json[DATA_SIMULATION_ONLY_TEST]:
49
+ skip_string = f"Skipped {test.module_name} because it can run only with data simulation mode"
50
+ elif GW_ONLY_TEST in test.test_json and test.test_json[GW_ONLY_TEST] and test.dut_is_bridge():
51
+ skip_string = f"Skipped {test.module_name} because it can run only with Gateway or Combo devices"
52
+ elif BRIDGE_ONLY_TEST in test.test_json and test.test_json[BRIDGE_ONLY_TEST] and not test.dut_is_bridge():
53
+ skip_string = f"Skipped {test.module_name} because it can run only with Bridge devices without Gateway functionality"
54
+ elif SUPPORTED_FROM_API_VERSION in test.test_json:
55
+ if test.test_json[MODULE] == "Cloud Connectivity" and test.dut_is_gateway() and int(test.dut.gw_api_version) < test.test_json[SUPPORTED_FROM_API_VERSION]:
56
+ skip_string = f"Skipped {test.module_name} because it is supported from api version {test.test_json[SUPPORTED_FROM_API_VERSION]} and dut api version is {test.dut.gw_api_version}"
57
+ elif test.test_json[MODULE] != "Cloud Connectivity" and test.active_brg.api_version < test.test_json[SUPPORTED_FROM_API_VERSION]:
58
+ skip_string = f"Skipped {test.module_name} because it is supported from api version {test.test_json[SUPPORTED_FROM_API_VERSION]} and dut api version is {test.active_brg.api_version}"
59
+ if skip_string:
60
+ utPrint(f"{SEP}{skip_string}{SEP}", "WARNING")
61
+ test.reason = skip_string
62
+ test.rc = TEST_SKIPPED
63
+ return test
64
+
65
+ def load_and_validate_schema(validation_schema_path, start_time):
66
+ """
67
+ Loads and validates the validation schema JSON file.
68
+ Exits if it is invalid, missing, or missing required keys.
69
+ Also exits if neither cloud_connectivity_flag nor brg_flag is True.
70
+ Returns the loaded JSON dict.
71
+ """
72
+ try:
73
+ with open(validation_schema_path, "r", encoding="utf-8") as f:
74
+ data = json.load(f)
75
+ utPrint("The given validation schema is a valid JSON file", 'BLUE')
76
+ except json.JSONDecodeError as e:
77
+ error = f"The given validation schema is an invalid JSON file: {e}"
78
+ cert_utils.handle_error(error, start_time)
79
+ except FileNotFoundError:
80
+ error = f"The given validation schema file was not found!"
81
+ cert_utils.handle_error(error, start_time)
82
+ except Exception as e:
83
+ error = f"Unexpected error received trying to decode the given validation schema JSON file: {e}"
84
+ cert_utils.handle_error(error, start_time)
85
+ # Check for required fields
86
+ if "properties" not in data and "modules" not in data:
87
+ error = "The validation schema is missing both 'properties' and 'modules' keys!"
88
+ cert_utils.handle_error(error, start_time)
89
+ # Check for cloud_connectivity_flag or brg_flag
90
+ if not (cert_utils.cloud_connectivity_flag(data) or cert_utils.brg_flag(data)):
91
+ error = "The validation schema must support either cloud connectivity or bridge device. None found."
92
+ cert_utils.handle_error(error, start_time)
93
+ return data
94
+
95
+ def clean(args):
96
+ if args.clean:
97
+ print(os.getcwd())
98
+ for dir in glob.glob('**/cert_artifacts_*/', recursive=True):
99
+ print(f"Removing folder: {dir}")
100
+ shutil.rmtree(dir)
101
+
102
+ def main(args):
103
+ args.tester = cert_utils.get_tester_id(args.tester)
104
+ if ':' in args.dut:
105
+ args.dut, args.combo_ble_addr = args.dut.split(':')
106
+
107
+ utPrint(f"wiliot_certificate version: {CERT_VERSION}")
108
+ utPrint(str(args.__dict__))
109
+ start_time = datetime.datetime.now()
110
+
111
+ # Clean
112
+ clean(args)
113
+ # Create artifacts dir
114
+ os.makedirs(ARTIFACTS_DIR, exist_ok=True)
115
+
116
+ # Filter tests
117
+ test_list = TEST_LIST_FW_UPDATE_FILE if args.latest or args.rc else args.tl
118
+ test_lines = filter_tests(test_list=test_list, run=args.run, drun=args.drun)
119
+
120
+ # JSON validation schema basic validation
121
+ validation_schema = load_and_validate_schema(args.validation_schema, start_time)
122
+
123
+ # Init mqtt client for tester
124
+ tester_mqttc = cert_mqtt.mqttc_init(args.tester, args.custom_broker, data=args.data)
125
+
126
+ # Init mqtt client for device under test when it is cloud connectivity bridge
127
+ if cert_utils.cloud_connectivity_flag(validation_schema) and args.dut != args.tester:
128
+ dut_mqttc = cert_mqtt.mqttc_init(args.dut, args.custom_broker, data=args.data)
129
+ else:
130
+ # Use the same mqtt client of the tester if device under test is a bridge only
131
+ dut_mqttc = tester_mqttc
132
+
133
+ # Prepare tester
134
+ gw_sim_thread = None
135
+ if GW_SIM_PREFIX in args.tester:
136
+ # Run Gateway Simulator in separate thread
137
+ gw_sim_thread = threading.Thread(target=cert_gw_sim.gw_sim_run, daemon=True, kwargs={'port':args.port, 'gw_id': args.tester,
138
+ 'custom_broker':args.custom_broker,
139
+ 'disable_interference_analyzer':args.disable_interference_analyzer})
140
+ gw_sim_thread.start()
141
+ sleep_time = (len(cert_gw_sim.CHANNELS_TO_ANALYZE) * 30) + 15 if not args.disable_interference_analyzer else 10
142
+ time.sleep(sleep_time)
143
+ tester = cert_utils.prep_tester(args, tester_mqttc, start_time, gw_sim_thread)
144
+
145
+ # Prepare device under test
146
+ dut = cert_utils.prep_dut(args, tester, validation_schema, dut_mqttc, start_time, upload_wait_time=args.agg)
147
+
148
+ # Prepare second bridge (brg1) if given
149
+ brg1 = None
150
+ if args.brg1:
151
+ brg1 = cert_utils.ut_prep_brg(args, start_time, tester, args.brg1)
152
+
153
+ # Collecting the tests
154
+ tests = []
155
+ for tl in test_lines:
156
+ test = cert_utils.WltTest(tl, tester, dut, brg1=brg1, exit_on_param_failure=args.exit_on_param_failure,
157
+ latest=args.latest, release_candidate=args.rc, sterile_run=args.sterile_run, data=args.data)
158
+ tests += [test]
159
+
160
+ # Running the tests
161
+ utPrint(SEP)
162
+ utPrint("\n - ".join([f"\nRunning {len(tests)} tests:"] + [t.name if not t.internal_brg else f"{t.name} (internal brg)" for t in tests]))
163
+
164
+ failures, skipped = 0, 0
165
+ exit_on_test_failure = args.exit_on_test_failure
166
+ i = 0
167
+
168
+ for i, test in enumerate(tests):
169
+ test = skip_test_check(test, validation_schema)
170
+ if test.rc == TEST_SKIPPED:
171
+ for phase in test.phases:
172
+ phase.rc = TEST_SKIPPED
173
+ skipped += 1
174
+ else:
175
+ try:
176
+ test_module_name = cert_utils.load_module(f'{test.module_name}.py', f'{test.dir}/{test.module_name}.py')
177
+ test = test_module_name.run(test)
178
+ except Exception as e:
179
+ traceback.print_exc()
180
+ test.add_phase_reason(RESTORE_CONFIG, f"Exception occurred: {e!r}")
181
+ test.rc = TEST_FAILED
182
+ finally:
183
+ test.update_overall_rc()
184
+ if test.rc == TEST_FAILED:
185
+ failures += 1
186
+ if "versions_test" in test.module_name and f"EXITING CERTIFICATE" in test.reason:
187
+ exit_on_test_failure = True
188
+ print(f"Test Duration: {test.duration}")
189
+ print(tabulate.tabulate([[i+1, i+1-(failures+skipped), skipped, failures, len(tests)]],
190
+ headers=["FINISHED", "PASSED", "SKIPPED", "FAILED", "TOTAL"], tablefmt="pretty"))
191
+ if test.rc != TEST_SKIPPED:
192
+ wait_time_n_print(2)
193
+ if exit_on_test_failure and test.rc == TEST_FAILED:
194
+ break
195
+
196
+ # Print results
197
+ cert_results.generate_results_files(html=True, pdf=True, failures=failures, skipped=skipped, start_time=start_time, tests=tests, non_cert_run=args.non_cert_run)
198
+ if not pipeline_running():
199
+ webbrowser.open('file://' + os.path.realpath(os.path.join(ARTIFACTS_DIR, UT_RESULT_FILE_PDF)))
200
+
201
+ if failures:
202
+ sys.exit(-1)
203
+
204
+ if __name__ == '__main__':
205
+ main()
@@ -0,0 +1,76 @@
1
+ import sys
2
+ import os
3
+ sys.path.insert(0, os.path.abspath(".."))
4
+ import argparse
5
+ from certificate.cert_defines import DATA_SIMULATION, GW_SIM_PREFIX
6
+ from certificate.cert_mqtt import EMQX
7
+ import certificate.certificate as certificate
8
+ TEST_LIST_DEFAULT_FILE = "certificate_test_list.txt"
9
+
10
+ def parse_dict_arg(arg):
11
+ """Parse key=value pairs type arguments"""
12
+ d = {}
13
+ for pair in arg.split(","):
14
+ if "=" not in arg:
15
+ raise argparse.ArgumentTypeError('Use "KEY1=VALUE1,KEY2=VALUE2..." format')
16
+ k, v = pair.split("=")
17
+ d[k] = v
18
+ return d
19
+ class CertificateCLI:
20
+ """Certificate CLI."""
21
+ def __init__(self):
22
+ self.parser = argparse.ArgumentParser(
23
+ prog='wlt-certificate',
24
+ description='Certificate - CLI Tool to test Wiliot Devices',
25
+ epilog=
26
+ "run examples:\n"
27
+ " Run command example with COM PORT tester:\n"
28
+ " wlt-cert-cli --tester SIM --dut <XXXXXXXXXXXX> --port <COM_PORT>\n"
29
+ " Run command example with remote GW tester:\n"
30
+ " wlt-cert-cli --tester <YYYYYYYYYYYY> --dut <XXXXXXXXXXXX>\n"
31
+ " Run command example for running datapath module tests only:\n"
32
+ " wlt-cert-cli --tester <YYYYYYYYYYYY> --dut <XXXXXXXXXXXX> --run datapath\n"
33
+ " Run command example with sanity test list:\n"
34
+ " wlt-cert-cli --tester <YYYYYYYYYYYY> --dut <XXXXXXXXXXXX> --tl certificate_sanity_test_list.txt\n"
35
+ " Run command example with COM PORT tester for combo device:\n"
36
+ " wlt-cert-cli --tester SIM --dut <XXXXXXXXXXXX>:<YYYYYYYYYYYY> --port <COM_PORT>\n",
37
+ formatter_class=argparse.RawDescriptionHelpFormatter
38
+ )
39
+ self.parser.add_argument('--validation_schema', '-vs', required=True, help='Validation schema json file path to use for the run')
40
+ self.parser.add_argument('--dut', required=True, help="Tested device ID. When DUT is a combo device, use <Gateway_ID>:<BLE_MAC>")
41
+ self.parser.add_argument('--combo_ble_addr', default="", help="Combo device BLE MAC address" + argparse.SUPPRESS)
42
+ self.parser.add_argument('--tester', default=GW_SIM_PREFIX, help='Tester id to run on the test, SIM prefix is default and used for COM tester')
43
+ self.parser.add_argument('--port', '-p', default='', help='UART PORT connection to use for the run, if not provided tries to scan for tester port')
44
+ self.parser.add_argument('--custom_broker', '-cb', required=True, help='Choose custom MQTT broker configuration json file to use for the run,' \
45
+ ' for explanation of the format see https://community.wiliot.com/customers/s/article/Wiliot-Gateway-Certification')
46
+ self.parser.add_argument('--clean', default=False, action='store_true', help='Clean old logs before running the tests')
47
+ self.parser.add_argument('--tl', default=TEST_LIST_DEFAULT_FILE, type=str, help='Test list file to use ' + argparse.SUPPRESS)
48
+ self.parser.add_argument('--run', type=str, help='String to filter tests to run ' + argparse.SUPPRESS)
49
+ self.parser.add_argument('--drun', type=str, help='String to filter tests not to run ' + argparse.SUPPRESS)
50
+ self.parser.add_argument('--exit_on_test_failure', default=False, action='store_true', help='Stop running the tests if a test failed ' + argparse.SUPPRESS)
51
+ self.parser.add_argument('--exit_on_param_failure', default=False, action='store_true', help='Sets exit_on_param_failure mode to true in order to prevent \
52
+ tests from continuing iteration over all possibilities in case of failure ' + argparse.SUPPRESS)
53
+ self.parser.add_argument('--disable_interference_analyzer', '-dia', default=False, action='store_true', help='Disable interference analysis before tests')
54
+ self.parser.add_argument('--unsterile_run', '-ur', default=False, action='store_true',
55
+ help="Set unsterile run mode for the run if there are pixels or energizing devices nearby")
56
+ self.parser.add_argument("--overwrite_defaults", '-od', type=parse_dict_arg, help='Manually overwrite default defines for the bridge (key1=value1,key2=value2...)')
57
+ self.parser.add_argument('--agg', type=int, help='Aggregation time [seconds] the Uplink stages adds to wait before processing results', default=0)
58
+ self.parser.add_argument('--non_cert_run', default=False, action='store_true', help='Mark this as a non-certifying run ' + argparse.SUPPRESS)
59
+
60
+ def parse_args(self, args=None):
61
+ """Parse arguments and return them."""
62
+ return self.parser.parse_args(args)
63
+
64
+ def main():
65
+ cli = CertificateCLI()
66
+ args = cli.parse_args()
67
+ # Set extra args to defaults
68
+ args.data = DATA_SIMULATION
69
+ args.brg1 = None
70
+ args.latest = False
71
+ args.rc = False
72
+ args.sterile_run = not args.unsterile_run
73
+ certificate.main(args)
74
+
75
+ if __name__ == '__main__':
76
+ main()
@@ -0,0 +1,76 @@
1
+ # The certificate should run for every bridge change
2
+ # The setup will include 1 tested device + 1 tester connected with UART or remote GW
3
+ # Run command example with COM PORT connection:
4
+ # python certificate_cli.py --tester SIM --dut <XXXXXXXXXXXX> --tl certificate_eth_test_list.txt --port <COM_PORT> -vs <path_to_validation_schema_file>
5
+ # Run command example with remote GW connection:
6
+ # python certificate_cli.py --tester <GWYYYYYYYYYYYY> --dut <XXXXXXXXXXXX> --tl certificate_eth_test_list.txt -vs <path_to_validation_schema_file>
7
+
8
+ # ------------- edge_mgmt -------------
9
+ edge_mgmt/periodic_msgs_test
10
+ edge_mgmt/action_gw_hb_test
11
+ edge_mgmt/action_blink_test
12
+ edge_mgmt/action_send_hb_test
13
+ edge_mgmt/action_get_battery_sensor_test
14
+ edge_mgmt/action_get_pof_data_test
15
+ edge_mgmt/action_get_module_test
16
+ edge_mgmt/action_reboot_test
17
+ edge_mgmt/action_restore_defaults_test
18
+
19
+ # ------------- energy2400 -------------
20
+ energy2400/pattern_test 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
21
+ energy2400/output_power_test OUTPUT_POWER_2_4_MAX_MINUS_26 OUTPUT_POWER_2_4_MAX_MINUS_23 OUTPUT_POWER_2_4_MAX_MINUS_22 OUTPUT_POWER_2_4_MAX_MINUS_20 OUTPUT_POWER_2_4_MAX_MINUS_19 OUTPUT_POWER_2_4_MAX_MINUS_18 OUTPUT_POWER_2_4_MAX_MINUS_16 OUTPUT_POWER_2_4_MAX_MINUS_15 OUTPUT_POWER_2_4_MAX_MINUS_14 OUTPUT_POWER_2_4_MAX_MINUS_12 OUTPUT_POWER_2_4_MAX_MINUS_11 OUTPUT_POWER_2_4_MAX_MINUS_10 OUTPUT_POWER_2_4_MAX_MINUS_8 OUTPUT_POWER_2_4_MAX_MINUS_7 OUTPUT_POWER_2_4_MAX_MINUS_6 OUTPUT_POWER_2_4_MAX_MINUS_4 OUTPUT_POWER_2_4_MAX_MINUS_3 OUTPUT_POWER_2_4_MAX_MINUS_2 OUTPUT_POWER_2_4_MAX
22
+ energy2400/duty_cycle_test 1 25 50 75
23
+ energy2400/signal_indicator_test rssi_threshold rx tx_eu_pattern disable_rx disable_tx rx_tx
24
+ energy2400/signal_indicator_ble5_test rssi_threshold rx tx disable_rx disable_tx rx_tx
25
+ energy2400/signal_indicator_ext_adv_test ext_adv_rx37 ext_adv_rx10
26
+
27
+ # ------------- energy_sub1g -------------
28
+ 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
29
+ energy_sub1g/duty_cycle_test 15 20 40 0
30
+
31
+ # ------------- datapath -------------
32
+ datapath/aging_test low_pacer high_pacer
33
+ datapath/rssi_threshold_test -80 -65 -10
34
+ datapath/pattern_test 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
35
+ datapath/tx_repetition_test 2 4
36
+ datapath/output_power_test OUTPUT_POWER_2_4_MAX_MINUS_26 OUTPUT_POWER_2_4_MAX_MINUS_23 OUTPUT_POWER_2_4_MAX_MINUS_22 OUTPUT_POWER_2_4_MAX_MINUS_20 OUTPUT_POWER_2_4_MAX_MINUS_19 OUTPUT_POWER_2_4_MAX_MINUS_18 OUTPUT_POWER_2_4_MAX_MINUS_16 OUTPUT_POWER_2_4_MAX_MINUS_15 OUTPUT_POWER_2_4_MAX_MINUS_14 OUTPUT_POWER_2_4_MAX_MINUS_12 OUTPUT_POWER_2_4_MAX_MINUS_11 OUTPUT_POWER_2_4_MAX_MINUS_10 OUTPUT_POWER_2_4_MAX_MINUS_8 OUTPUT_POWER_2_4_MAX_MINUS_7 OUTPUT_POWER_2_4_MAX_MINUS_6 OUTPUT_POWER_2_4_MAX_MINUS_4 OUTPUT_POWER_2_4_MAX_MINUS_3 OUTPUT_POWER_2_4_MAX_MINUS_2 OUTPUT_POWER_2_4_MAX
37
+ datapath/pacer_interval_test 5 15 30 60
38
+ datapath/event_test rssi_event new_tag_event_seconds new_tag_event_minutes temp_event tx_rate_event
39
+ datapath/event_ble5_test rssi_event new_tag_event_seconds new_tag_event_minutes temp_event tx_rate_event
40
+ datapath/pacer_interval_ble5_test 5 15 30 60
41
+ datapath/pkt_filter_test PKT_FILTER_RANDOM_FIRST_ARRIVING_PKT PKT_FILTER_DISABLE_FORWARDING PKT_FILTER_TEMP_PKT PKT_FILTER_ADVANCED_PKT PKT_FILTER_TEMP_AND_ADVANCED_PKTS PKT_FILTER_TEMP_ADVANCED_AND_DEBUG_PKTS
42
+ datapath/pkt_filter_gen3_test PKT_FILTER_RANDOM_FIRST_ARRIVING_PKT PKT_FILTER_DISABLE_FORWARDING PKT_FILTER_TEMP_PKT PKT_FILTER_ADVANCED_PKT PKT_FILTER_TEMP_AND_ADVANCED_PKTS
43
+ datapath/pkt_filter_ble5_test PKT_FILTER_RANDOM_FIRST_ARRIVING_PKT PKT_FILTER_DISABLE_FORWARDING PKT_FILTER_TEMP_PKT PKT_FILTER_ADVANCED_PKT PKT_FILTER_TEMP_AND_ADVANCED_PKTS
44
+ datapath/pkt_filter_ble5_chl21_test PKT_FILTER_TEMP_AND_ADVANCED_PKTS
45
+ datapath/pkt_filter_brg2gw_ext_adv_test RX_CHANNEL_39 RX_CHANNEL_38 RX_CHANNEL_37 RX_CHANNEL_10_500K
46
+ datapath/rx_channel_test RX_CHANNEL_37 RX_CHANNEL_38 RX_CHANNEL_39 RX_CHANNEL_10_500K RX_CHANNEL_HOPPING_37_10
47
+ datapath/rx_channel_hopping_test
48
+ datapath/rx_rate_gen2_test mid_values diff_pacer min_value max_value diff_rate
49
+ datapath/rx_rate_gen3_test mid_values diff_pacer min_value max_value diff_rate
50
+ datapath/stress_test rep3 rep2 rep1
51
+ datapath/stress_gen3_test rep3 rep2 rep1
52
+ datapath/num_of_tags_test 2500
53
+
54
+ # ------------- pwr_mgmt -------------
55
+ pwr_mgmt/pwr_mgmt_test
56
+
57
+ # ------------- calibration -------------
58
+ calibration/output_power_test OUTPUT_POWER_2_4_MAX_MINUS_26 OUTPUT_POWER_2_4_MAX_MINUS_23 OUTPUT_POWER_2_4_MAX_MINUS_22 OUTPUT_POWER_2_4_MAX_MINUS_20 OUTPUT_POWER_2_4_MAX_MINUS_19 OUTPUT_POWER_2_4_MAX_MINUS_18 OUTPUT_POWER_2_4_MAX_MINUS_16 OUTPUT_POWER_2_4_MAX_MINUS_15 OUTPUT_POWER_2_4_MAX_MINUS_14 OUTPUT_POWER_2_4_MAX_MINUS_12 OUTPUT_POWER_2_4_MAX_MINUS_11 OUTPUT_POWER_2_4_MAX_MINUS_10 OUTPUT_POWER_2_4_MAX_MINUS_8 OUTPUT_POWER_2_4_MAX_MINUS_7 OUTPUT_POWER_2_4_MAX_MINUS_6 OUTPUT_POWER_2_4_MAX_MINUS_4 OUTPUT_POWER_2_4_MAX_MINUS_3 OUTPUT_POWER_2_4_MAX_MINUS_2 OUTPUT_POWER_2_4_MAX
59
+ calibration/interval_test 10, 25, 50, 100, 255
60
+ calibration/pattern_test CALIBRATION_PATTERN_38_38_39 CALIBRATION_PATTERN_STANDARD CALIBRATION_PATTERN_EU_PATTERN CALIBRATION_PATTERN_DISABLE_BEACON
61
+
62
+ # ------------- sensors -------------
63
+ sensors/ext_sensor_test tag_data_only rssi_threshold snsr2_unified snsr0_no_scrmbl snsr1_scrmbl snsr0_no_scrmbl_snsr1_scrmbl_snsr2_scrmbl snsr0_no_scrmbl_snsr1_scrmbl_snsr2_unified
64
+
65
+ # ------------- cloud_connectivity -------------
66
+ cloud_connectivity/connection_test
67
+ cloud_connectivity/uplink_test mgmt_pkt pixels_pkt sensor_pkt
68
+ cloud_connectivity/downlink_test
69
+ cloud_connectivity/uplink_ext_adv_test
70
+ cloud_connectivity/reboot_test
71
+ cloud_connectivity/stress_test
72
+ cloud_connectivity/ext_adv_stress_test
73
+ cloud_connectivity/channel_scan_behaviour_test
74
+ cloud_connectivity/acl_test deny allow
75
+ cloud_connectivity/acl_ext_adv_test deny allow
76
+ cloud_connectivity/deduplication_test
@@ -0,0 +1,66 @@
1
+ # The certificate should run for every bridge change
2
+ # The setup will include 1 tested device + 1 tester connected with UART or remote GW
3
+ # Run command example with COM PORT connection:
4
+ # python certificate_cli.py --tester SIM --dut <XXXXXXXXXXXX> --tl certificate_sanity_test_list.txt --port <COM_PORT> -vs <path_to_validation_schema_file>
5
+ # Run command example with remote GW connection:
6
+ # python certificate_cli.py --tester <GWYYYYYYYYYYYY> --dut <XXXXXXXXXXXX> --tl certificate_sanity_test_list.txt -vs <path_to_validation_schema_file>
7
+
8
+ # ------------- edge_mgmt -------------
9
+ edge_mgmt/periodic_msgs_test
10
+ edge_mgmt/action_gw_hb_test
11
+ edge_mgmt/action_blink_test
12
+ edge_mgmt/action_send_hb_test
13
+ edge_mgmt/action_get_battery_sensor_test
14
+ edge_mgmt/action_get_pof_data_test
15
+ edge_mgmt/action_get_module_test
16
+ edge_mgmt/action_reboot_test
17
+ edge_mgmt/action_restore_defaults_test
18
+
19
+ # ------------- energy2400 -------------
20
+ energy2400/pattern_test ENERGY_PATTERN_2_4_CHANNEL_37 ENERGY_PATTERN_2_4_CHANNEL_39 ENERGY_PATTERN_2_4_FREQ_2454
21
+ energy2400/output_power_test OUTPUT_POWER_2_4_MAX_MINUS_14 OUTPUT_POWER_2_4_MAX_MINUS_10 OUTPUT_POWER_2_4_MAX_MINUS_7 OUTPUT_POWER_2_4_MAX_MINUS_6 OUTPUT_POWER_2_4_MAX_MINUS_3 OUTPUT_POWER_2_4_MAX_MINUS_3 OUTPUT_POWER_2_4_MAX_MINUS_2
22
+ energy2400/duty_cycle_test 1 50 75
23
+ energy2400/signal_indicator_test rx_tx
24
+ energy2400/signal_indicator_ble5_test rx_tx
25
+ energy2400/signal_indicator_ext_adv_test ext_adv_rx37
26
+
27
+ # ------------- energy_sub1g -------------
28
+ energy_sub1g/pattern_test SUB1G_ENERGY_PATTERN_NO_ENERGIZING SUB1G_ENERGY_PATTERN_FCC_HOPPING SUB1G_ENERGY_PATTERN_SINGLE_TONE_917500 SUB1G_ENERGY_PATTERN_NZ_HOPPING
29
+ energy_sub1g/duty_cycle_test 15 20 40 0
30
+
31
+ # ------------- datapath -------------
32
+ datapath/aging_test low_pacer
33
+ datapath/rssi_threshold_test -80
34
+ datapath/pattern_test DATAPATH_PATTERN_38_38_39 DATAPATH_PATTERN_EU_PATTERN DATAPATH_PATTERN_EXTENDED_ADV DATAPATH_PATTERN_EXTENDED_ADV_38_39
35
+ datapath/tx_repetition_test 4
36
+ datapath/output_power_test OUTPUT_POWER_2_4_MAX_MINUS_14 OUTPUT_POWER_2_4_MAX_MINUS_10 OUTPUT_POWER_2_4_MAX_MINUS_7 OUTPUT_POWER_2_4_MAX_MINUS_6 OUTPUT_POWER_2_4_MAX_MINUS_3 OUTPUT_POWER_2_4_MAX_MINUS_2
37
+ datapath/event_test new_tag_event_seconds temp_event
38
+ datapath/event_ble5_test new_tag_event_seconds
39
+ datapath/pkt_filter_ble5_test PKT_FILTER_TEMP_PKT
40
+ datapath/pkt_filter_gen3_test PKT_FILTER_TEMP_PKT
41
+ datapath/pkt_filter_ble5_chl21_test PKT_FILTER_TEMP_AND_ADVANCED_PKTS
42
+ datapath/pkt_filter_brg2gw_ext_adv_test RX_CHANNEL_38
43
+ datapath/rx_channel_test RX_CHANNEL_38 RX_CHANNEL_10_500K RX_CHANNEL_HOPPING_37_10
44
+ datapath/rx_rate_gen2_test min_value
45
+ datapath/num_of_tags_test 500
46
+
47
+ # ------------- pwr_mgmt -------------
48
+ pwr_mgmt/pwr_mgmt_test
49
+
50
+ # ------------- calibration -------------
51
+ calibration/output_power_test OUTPUT_POWER_2_4_MAX_MINUS_14 OUTPUT_POWER_2_4_MAX_MINUS_10 OUTPUT_POWER_2_4_MAX_MINUS_7 OUTPUT_POWER_2_4_MAX_MINUS_6 OUTPUT_POWER_2_4_MAX_MINUS_3 OUTPUT_POWER_2_4_MAX_MINUS_2
52
+ calibration/interval_test 25 50
53
+ calibration/pattern_test CALIBRATION_PATTERN_38_38_39
54
+
55
+ # ------------- sensors -------------
56
+ sensors/ext_sensor_test snsr0_no_scrmbl_snsr1_scrmbl_snsr2_scrmbl
57
+
58
+ # ------------- cloud_connectivity -------------
59
+ cloud_connectivity/uplink_test mgmt_pkt pixels_pkt
60
+ cloud_connectivity/downlink_test
61
+ cloud_connectivity/uplink_ext_adv_test
62
+ cloud_connectivity/reboot_test
63
+ cloud_connectivity/stress_test
64
+ cloud_connectivity/ext_adv_stress_test
65
+ cloud_connectivity/acl_test deny
66
+ cloud_connectivity/acl_ext_adv_test allow
@@ -0,0 +1,76 @@
1
+ # The certificate should run for every bridge change
2
+ # The setup will include 1 tested device + 1 tester connected with UART or remote GW
3
+ # Run command example with COM PORT connection:
4
+ # python certificate_cli.py --tester SIM --dut <XXXXXXXXXXXX> --port <COM_PORT> -vs <path_to_validation_schema_file>
5
+ # Run command example with remote GW connection:
6
+ # python certificate_cli.py --tester <GWYYYYYYYYYYYY> --dut <XXXXXXXXXXXX> -vs <path_to_validation_schema_file>
7
+
8
+ # ------------- edge_mgmt -------------
9
+ edge_mgmt/periodic_msgs_test
10
+ edge_mgmt/action_gw_hb_test
11
+ edge_mgmt/action_blink_test
12
+ edge_mgmt/action_send_hb_test
13
+ edge_mgmt/action_get_battery_sensor_test
14
+ edge_mgmt/action_get_pof_data_test
15
+ edge_mgmt/action_get_module_test
16
+ edge_mgmt/action_reboot_test
17
+ edge_mgmt/action_restore_defaults_test
18
+
19
+ # ------------- energy2400 -------------
20
+ energy2400/pattern_test 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
21
+ energy2400/output_power_test OUTPUT_POWER_2_4_MAX_MINUS_26 OUTPUT_POWER_2_4_MAX_MINUS_23 OUTPUT_POWER_2_4_MAX_MINUS_22 OUTPUT_POWER_2_4_MAX_MINUS_20 OUTPUT_POWER_2_4_MAX_MINUS_19 OUTPUT_POWER_2_4_MAX_MINUS_18 OUTPUT_POWER_2_4_MAX_MINUS_16 OUTPUT_POWER_2_4_MAX_MINUS_15 OUTPUT_POWER_2_4_MAX_MINUS_14 OUTPUT_POWER_2_4_MAX_MINUS_12 OUTPUT_POWER_2_4_MAX_MINUS_11 OUTPUT_POWER_2_4_MAX_MINUS_10 OUTPUT_POWER_2_4_MAX_MINUS_8 OUTPUT_POWER_2_4_MAX_MINUS_7 OUTPUT_POWER_2_4_MAX_MINUS_6 OUTPUT_POWER_2_4_MAX_MINUS_4 OUTPUT_POWER_2_4_MAX_MINUS_3 OUTPUT_POWER_2_4_MAX_MINUS_2 OUTPUT_POWER_2_4_MAX
22
+ energy2400/duty_cycle_test 1 25 50 75
23
+ energy2400/signal_indicator_test rssi_threshold rx tx_eu_pattern disable_rx disable_tx rx_tx
24
+ energy2400/signal_indicator_ble5_test rssi_threshold rx tx disable_rx disable_tx rx_tx
25
+ energy2400/signal_indicator_ext_adv_test ext_adv_rx37 ext_adv_rx10
26
+
27
+ # ------------- energy_sub1g -------------
28
+ 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
29
+ energy_sub1g/duty_cycle_test 15 20 40 0
30
+
31
+ # ------------- datapath -------------
32
+ datapath/aging_test low_pacer high_pacer
33
+ datapath/rssi_threshold_test -80 -65 -10
34
+ datapath/pattern_test 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
35
+ datapath/tx_repetition_test 2 4
36
+ datapath/output_power_test OUTPUT_POWER_2_4_MAX_MINUS_26 OUTPUT_POWER_2_4_MAX_MINUS_23 OUTPUT_POWER_2_4_MAX_MINUS_22 OUTPUT_POWER_2_4_MAX_MINUS_20 OUTPUT_POWER_2_4_MAX_MINUS_19 OUTPUT_POWER_2_4_MAX_MINUS_18 OUTPUT_POWER_2_4_MAX_MINUS_16 OUTPUT_POWER_2_4_MAX_MINUS_15 OUTPUT_POWER_2_4_MAX_MINUS_14 OUTPUT_POWER_2_4_MAX_MINUS_12 OUTPUT_POWER_2_4_MAX_MINUS_11 OUTPUT_POWER_2_4_MAX_MINUS_10 OUTPUT_POWER_2_4_MAX_MINUS_8 OUTPUT_POWER_2_4_MAX_MINUS_7 OUTPUT_POWER_2_4_MAX_MINUS_6 OUTPUT_POWER_2_4_MAX_MINUS_4 OUTPUT_POWER_2_4_MAX_MINUS_3 OUTPUT_POWER_2_4_MAX_MINUS_2 OUTPUT_POWER_2_4_MAX
37
+ datapath/pacer_interval_test 5 15 30 60
38
+ datapath/event_test rssi_event new_tag_event_seconds new_tag_event_minutes temp_event tx_rate_event
39
+ datapath/event_ble5_test rssi_event new_tag_event_seconds new_tag_event_minutes temp_event tx_rate_event
40
+ datapath/pacer_interval_ble5_test 5 15 30 60
41
+ datapath/pkt_filter_test PKT_FILTER_RANDOM_FIRST_ARRIVING_PKT PKT_FILTER_DISABLE_FORWARDING PKT_FILTER_TEMP_PKT PKT_FILTER_ADVANCED_PKT PKT_FILTER_TEMP_AND_ADVANCED_PKTS PKT_FILTER_TEMP_ADVANCED_AND_DEBUG_PKTS
42
+ datapath/pkt_filter_gen3_test PKT_FILTER_RANDOM_FIRST_ARRIVING_PKT PKT_FILTER_DISABLE_FORWARDING PKT_FILTER_TEMP_PKT PKT_FILTER_ADVANCED_PKT PKT_FILTER_TEMP_AND_ADVANCED_PKTS
43
+ datapath/pkt_filter_ble5_test PKT_FILTER_RANDOM_FIRST_ARRIVING_PKT PKT_FILTER_DISABLE_FORWARDING PKT_FILTER_TEMP_PKT PKT_FILTER_ADVANCED_PKT PKT_FILTER_TEMP_AND_ADVANCED_PKTS
44
+ datapath/pkt_filter_ble5_chl21_test PKT_FILTER_TEMP_AND_ADVANCED_PKTS
45
+ datapath/pkt_filter_brg2gw_ext_adv_test RX_CHANNEL_39 RX_CHANNEL_38 RX_CHANNEL_37 RX_CHANNEL_10_500K
46
+ datapath/rx_channel_test RX_CHANNEL_37 RX_CHANNEL_38 RX_CHANNEL_39 RX_CHANNEL_10_500K RX_CHANNEL_HOPPING_37_10
47
+ datapath/rx_channel_hopping_test
48
+ datapath/rx_rate_gen2_test mid_values diff_pacer min_value max_value diff_rate
49
+ datapath/rx_rate_gen3_test mid_values diff_pacer min_value max_value diff_rate
50
+ datapath/stress_test rep3 rep2 rep1
51
+ datapath/stress_gen3_test rep3 rep2 rep1
52
+ datapath/num_of_tags_test 4500
53
+
54
+ # ------------- pwr_mgmt -------------
55
+ pwr_mgmt/pwr_mgmt_test
56
+
57
+ # ------------- calibration -------------
58
+ calibration/output_power_test OUTPUT_POWER_2_4_MAX_MINUS_26 OUTPUT_POWER_2_4_MAX_MINUS_23 OUTPUT_POWER_2_4_MAX_MINUS_22 OUTPUT_POWER_2_4_MAX_MINUS_20 OUTPUT_POWER_2_4_MAX_MINUS_19 OUTPUT_POWER_2_4_MAX_MINUS_18 OUTPUT_POWER_2_4_MAX_MINUS_16 OUTPUT_POWER_2_4_MAX_MINUS_15 OUTPUT_POWER_2_4_MAX_MINUS_14 OUTPUT_POWER_2_4_MAX_MINUS_12 OUTPUT_POWER_2_4_MAX_MINUS_11 OUTPUT_POWER_2_4_MAX_MINUS_10 OUTPUT_POWER_2_4_MAX_MINUS_8 OUTPUT_POWER_2_4_MAX_MINUS_7 OUTPUT_POWER_2_4_MAX_MINUS_6 OUTPUT_POWER_2_4_MAX_MINUS_4 OUTPUT_POWER_2_4_MAX_MINUS_3 OUTPUT_POWER_2_4_MAX_MINUS_2 OUTPUT_POWER_2_4_MAX
59
+ calibration/interval_test 10, 25, 50, 100, 255
60
+ calibration/pattern_test CALIBRATION_PATTERN_38_38_39 CALIBRATION_PATTERN_STANDARD CALIBRATION_PATTERN_EU_PATTERN CALIBRATION_PATTERN_DISABLE_BEACON
61
+
62
+ # ------------- sensors -------------
63
+ sensors/ext_sensor_test tag_data_only rssi_threshold snsr2_unified snsr0_no_scrmbl snsr1_scrmbl snsr0_no_scrmbl_snsr1_scrmbl_snsr2_scrmbl snsr0_no_scrmbl_snsr1_scrmbl_snsr2_unified
64
+
65
+ # ------------- cloud_connectivity -------------
66
+ cloud_connectivity/uplink_test mgmt_pkt pixels_pkt sensor_pkt geolocation
67
+ cloud_connectivity/downlink_test
68
+ cloud_connectivity/uplink_ext_adv_test
69
+ cloud_connectivity/reboot_test
70
+ cloud_connectivity/stress_test
71
+ cloud_connectivity/ext_adv_stress_test
72
+ cloud_connectivity/channel_scan_behaviour_test
73
+ cloud_connectivity/acl_test deny allow
74
+ cloud_connectivity/acl_ext_adv_test deny allow
75
+ cloud_connectivity/brg_ota_test
76
+ cloud_connectivity/deduplication_test
@@ -9,6 +9,7 @@
9
9
  "mandatory": 0,
10
10
  "multiBridgeTest": 0,
11
11
  "gwOnlyTest": 0,
12
- "internalBridge": 1,
13
- "allSupportedValues": [1, 25, 50, 100, 255]
12
+ "dataSimOnlyTest": 0,
13
+ "SupportedFromApiVersion": 12,
14
+ "allSupportedValues": [10, 25, 50, 100, 255]
14
15
  }
@@ -1,8 +1,9 @@
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
1
+ from certificate.cert_prints import *
2
+ from certificate.cert_defines import *
3
+ from certificate.wlt_types import *
4
+ import certificate.cert_mqtt as cert_mqtt
5
+ import certificate.cert_common as cert_common
6
+ import certificate.cert_config as cert_config
6
7
 
7
8
 
8
9
  def run(test):
@@ -16,7 +17,7 @@ def run(test):
16
17
  for param in test.params:
17
18
  test = cert_config.brg_configure(test, fields=fields, values=[param.value], module=calib_module)[0]
18
19
  # param epilog
19
- generate_log_file(test, param.name)
20
+ cert_mqtt.generate_log_file(test, param.name)
20
21
  field_functionality_pass_fail_print(test, fields[0], value=param.name)
21
22
  test.set_phase_rc(param.name, test.rc)
22
23
  test.add_phase_reason(param.name, test.reason)
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "Output Power",
3
+ "module": "Calibration",
4
+ "purpose": "Test configuration for all supported calibration output power values",
5
+ "documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Calibration-Module",
6
+ "initialCondition": "Bridge configured to defaults",
7
+ "procedure": ["Test prolog",
8
+ "For each supported value - configure the BRG and verify the value",
9
+ "Test epilog and revert to defaults"],
10
+ "expectedOutcome": "All values configured successfully",
11
+ "mandatory": 0,
12
+ "multiBridgeTest": 0,
13
+ "gwOnlyTest": 0,
14
+ "dataSimOnlyTest": 0,
15
+ "SupportedFromApiVersion": 13,
16
+ "allSupportedValues": ["OUTPUT_POWER_2_4_MAX", "OUTPUT_POWER_2_4_MAX_MINUS_2", "OUTPUT_POWER_2_4_MAX_MINUS_3",
17
+ "OUTPUT_POWER_2_4_MAX_MINUS_4", "OUTPUT_POWER_2_4_MAX_MINUS_6", "OUTPUT_POWER_2_4_MAX_MINUS_7",
18
+ "OUTPUT_POWER_2_4_MAX_MINUS_8", "OUTPUT_POWER_2_4_MAX_MINUS_10", "OUTPUT_POWER_2_4_MAX_MINUS_11",
19
+ "OUTPUT_POWER_2_4_MAX_MINUS_12", "OUTPUT_POWER_2_4_MAX_MINUS_14", "OUTPUT_POWER_2_4_MAX_MINUS_15",
20
+ "OUTPUT_POWER_2_4_MAX_MINUS_16", "OUTPUT_POWER_2_4_MAX_MINUS_18", "OUTPUT_POWER_2_4_MAX_MINUS_19",
21
+ "OUTPUT_POWER_2_4_MAX_MINUS_20", "OUTPUT_POWER_2_4_MAX_MINUS_22", "OUTPUT_POWER_2_4_MAX_MINUS_23",
22
+ "OUTPUT_POWER_2_4_MAX_MINUS_26"]
23
+ }
@@ -0,0 +1,39 @@
1
+ from certificate.cert_prints import *
2
+ from certificate.cert_defines import *
3
+ from certificate.wlt_types import *
4
+ import certificate.cert_mqtt as cert_mqtt
5
+ import certificate.cert_common as cert_common
6
+ import certificate.cert_config as cert_config
7
+
8
+
9
+ def run(test):
10
+
11
+ fields = [BRG_OUTPUT_POWER]
12
+ calib_module = test.active_brg.calibration
13
+
14
+ test = cert_common.test_prolog(test)
15
+ if test.rc == TEST_FAILED:
16
+ return cert_common.test_epilog(test)
17
+
18
+ for param in test.params:
19
+ if not cert_common.output_power_supported(test.active_brg.board_type, param.value):
20
+ # Skip this parameter if its value isn't supported by the board
21
+ test.rc = TEST_SKIPPED
22
+ cert_mqtt.generate_log_file(test, param.name)
23
+ field_functionality_pass_fail_print(test, fields[0], value=param.name)
24
+ test.set_phase_rc(param.name, test.rc)
25
+ test.add_phase_reason(param.name, test.reason)
26
+ test.reset_result() # reset result and continue to next param
27
+ continue
28
+
29
+ test = cert_config.brg_configure(test, fields=fields, values=[param.value], module=calib_module)[0]
30
+ cert_mqtt.generate_log_file(test, param.name)
31
+ field_functionality_pass_fail_print(test, fields[0], value=param.name)
32
+ test.set_phase_rc(param.name, test.rc)
33
+ test.add_phase_reason(param.name, test.reason)
34
+ if test.rc == TEST_FAILED:
35
+ if test.exit_on_param_failure:
36
+ break # break the whole for loop and keep the test as failed
37
+ test.reset_result() # reset result and continue to next param
38
+
39
+ return cert_common.test_epilog(test, revert_brgs=True, modules=[calib_module])
@@ -11,6 +11,7 @@
11
11
  "mandatory": 0,
12
12
  "multiBridgeTest": 0,
13
13
  "gwOnlyTest": 0,
14
- "internalBridge": 1,
14
+ "dataSimOnlyTest": 0,
15
+ "SupportedFromApiVersion": 12,
15
16
  "allSupportedValues": ["CALIBRATION_PATTERN_STANDARD", "CALIBRATION_PATTERN_38_38_39", "CALIBRATION_PATTERN_EU_PATTERN", "CALIBRATION_PATTERN_DISABLE_BEACON"]
16
17
  }