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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) 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. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/brg2brg_ota.json +69 -0
  4. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/brg2gw_hb.json +109 -0
  5. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/brg2gw_hb_sleep.json +45 -0
  6. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/calibration.json +96 -0
  7. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/custom.json +99 -0
  8. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/datapath.json +241 -13
  9. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/energy2400.json +120 -0
  10. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/energySub1g.json +96 -0
  11. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/externalSensor.json +135 -6
  12. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/interface.json +157 -0
  13. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/powerManagement.json +205 -0
  14. brg_certificate/ag/wlt_types_ag_jsons/unified_echo_pkt.json → certificate/ag/wlt_types_ag_jsons/unified_echo_ext_pkt.json +27 -11
  15. certificate/ag/wlt_types_ag_jsons/unified_echo_pkt.json +175 -0
  16. certificate/ag/wlt_types_ag_jsons/unified_sensor_pkt.json +65 -0
  17. certificate/cert_common.py +1459 -0
  18. certificate/cert_config.py +455 -0
  19. {brg_certificate → certificate}/cert_data_sim.py +131 -46
  20. {brg_certificate → certificate}/cert_defines.py +120 -128
  21. {brg_certificate → certificate}/cert_gw_sim.py +151 -49
  22. {brg_certificate → certificate}/cert_mqtt.py +164 -59
  23. {brg_certificate → certificate}/cert_prints.py +34 -33
  24. {brg_certificate → certificate}/cert_protobuf.py +15 -6
  25. {brg_certificate → certificate}/cert_results.py +205 -48
  26. certificate/cert_utils.py +622 -0
  27. certificate/certificate.py +198 -0
  28. certificate/certificate_cli.py +79 -0
  29. certificate/certificate_eth_test_list.txt +74 -0
  30. certificate/certificate_sanity_test_list.txt +65 -0
  31. certificate/certificate_test_list.txt +75 -0
  32. {brg_certificate → certificate}/tests/calibration/interval_test/interval_test.json +2 -2
  33. {brg_certificate → certificate}/tests/calibration/interval_test/interval_test.py +7 -6
  34. certificate/tests/calibration/output_power_test/output_power_test.json +22 -0
  35. certificate/tests/calibration/output_power_test/output_power_test.py +39 -0
  36. {brg_certificate → certificate}/tests/calibration/pattern_test/pattern_test.json +1 -1
  37. {brg_certificate → certificate}/tests/calibration/pattern_test/pattern_test.py +20 -15
  38. certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.json +14 -0
  39. certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.py +140 -0
  40. certificate/tests/cloud_connectivity/acl_test/acl_test.json +14 -0
  41. certificate/tests/cloud_connectivity/acl_test/acl_test.py +98 -0
  42. certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.json +18 -0
  43. certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.py +39 -0
  44. certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.json +18 -0
  45. certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.py +215 -0
  46. certificate/tests/cloud_connectivity/connection_test/connection_test.json +17 -0
  47. certificate/tests/cloud_connectivity/connection_test/connection_test.py +74 -0
  48. certificate/tests/cloud_connectivity/downlink_test/downlink_test.json +20 -0
  49. certificate/tests/cloud_connectivity/downlink_test/downlink_test.py +204 -0
  50. certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.json +16 -0
  51. certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.py +98 -0
  52. certificate/tests/cloud_connectivity/reboot_test/reboot_test.json +17 -0
  53. certificate/tests/cloud_connectivity/reboot_test/reboot_test.py +57 -0
  54. certificate/tests/cloud_connectivity/registration_test/registration_test.json +19 -0
  55. certificate/tests/cloud_connectivity/registration_test/registration_test.py +384 -0
  56. certificate/tests/cloud_connectivity/registration_test/registration_test_cli.py +90 -0
  57. certificate/tests/cloud_connectivity/stress_test/stress_test.json +16 -0
  58. certificate/tests/cloud_connectivity/stress_test/stress_test.py +97 -0
  59. certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.json +24 -0
  60. certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.py +93 -0
  61. certificate/tests/cloud_connectivity/uplink_test/uplink_test.json +19 -0
  62. certificate/tests/cloud_connectivity/uplink_test/uplink_test.py +161 -0
  63. {brg_certificate → certificate}/tests/datapath/aging_test/aging_test.json +1 -1
  64. certificate/tests/datapath/aging_test/aging_test.py +138 -0
  65. certificate/tests/datapath/event_ble5_test/event_ble5_test.json +16 -0
  66. certificate/tests/datapath/event_ble5_test/event_ble5_test.py +95 -0
  67. certificate/tests/datapath/event_test/event_test.json +16 -0
  68. certificate/tests/datapath/event_test/event_test.py +85 -0
  69. {brg_certificate → certificate}/tests/datapath/num_of_tags_test/num_of_tags_test.json +1 -1
  70. {brg_certificate → certificate}/tests/datapath/num_of_tags_test/num_of_tags_test.py +10 -8
  71. certificate/tests/datapath/output_power_test/output_power_test.json +22 -0
  72. {brg_certificate → certificate}/tests/datapath/output_power_test/output_power_test.py +17 -6
  73. {brg_certificate → certificate}/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.json +1 -1
  74. {brg_certificate → certificate}/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.py +10 -8
  75. {brg_certificate → certificate}/tests/datapath/pacer_interval_test/pacer_interval_test.json +1 -1
  76. {brg_certificate → certificate}/tests/datapath/pacer_interval_test/pacer_interval_test.py +9 -7
  77. {brg_certificate → certificate}/tests/datapath/pattern_test/pattern_test.json +2 -2
  78. {brg_certificate → certificate}/tests/datapath/pattern_test/pattern_test.py +18 -6
  79. certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.json +19 -0
  80. certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.py +61 -0
  81. {brg_certificate → certificate}/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.json +1 -1
  82. {brg_certificate → certificate}/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.py +11 -10
  83. certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.json +18 -0
  84. certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.py +83 -0
  85. {brg_certificate → certificate}/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.json +1 -1
  86. {brg_certificate → certificate}/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.py +10 -9
  87. {brg_certificate → certificate}/tests/datapath/pkt_filter_test/pkt_filter_test.json +1 -1
  88. {brg_certificate → certificate}/tests/datapath/pkt_filter_test/pkt_filter_test.py +10 -9
  89. {brg_certificate → certificate}/tests/datapath/rssi_threshold_test/rssi_threshold_test.json +1 -1
  90. {brg_certificate → certificate}/tests/datapath/rssi_threshold_test/rssi_threshold_test.py +9 -8
  91. brg_certificate/tests/datapath/output_power_test/output_power_test.json → certificate/tests/datapath/rx_channel_hopping_test/rx_channel_hopping_test.json +5 -4
  92. certificate/tests/datapath/rx_channel_hopping_test/rx_channel_hopping_test.py +77 -0
  93. {brg_certificate → certificate}/tests/datapath/rx_channel_test/rx_channel_test.json +2 -2
  94. {brg_certificate → certificate}/tests/datapath/rx_channel_test/rx_channel_test.py +7 -6
  95. {brg_certificate → certificate}/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.json +7 -7
  96. {brg_certificate → certificate}/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.py +112 -72
  97. {brg_certificate → certificate}/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.json +7 -7
  98. {brg_certificate → certificate}/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.py +112 -72
  99. {brg_certificate → certificate}/tests/datapath/stress_gen3_test/stress_gen3_test.json +3 -3
  100. {brg_certificate → certificate}/tests/datapath/stress_gen3_test/stress_gen3_test.py +12 -11
  101. {brg_certificate → certificate}/tests/datapath/stress_test/stress_test.json +3 -3
  102. {brg_certificate → certificate}/tests/datapath/stress_test/stress_test.py +12 -11
  103. {brg_certificate → certificate}/tests/datapath/tx_repetition_test/tx_repetition_test.json +2 -1
  104. {brg_certificate → certificate}/tests/datapath/tx_repetition_test/tx_repetition_test.py +14 -13
  105. certificate/tests/edge_mgmt/action_blink_test/action_blink_test.json +14 -0
  106. certificate/tests/edge_mgmt/action_blink_test/action_blink_test.py +24 -0
  107. certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.json +14 -0
  108. certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.py +43 -0
  109. certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.json +14 -0
  110. certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.py +42 -0
  111. certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.json +14 -0
  112. certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.py +44 -0
  113. certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.json +15 -0
  114. certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.py +42 -0
  115. certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.json +14 -0
  116. certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.py +49 -0
  117. certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.json +14 -0
  118. certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.py +102 -0
  119. certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.json +14 -0
  120. certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.py +41 -0
  121. {brg_certificate → certificate}/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.json +2 -2
  122. {brg_certificate → certificate}/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.py +22 -11
  123. {brg_certificate → certificate}/tests/energy2400/duty_cycle_test/duty_cycle_test.json +1 -1
  124. {brg_certificate → certificate}/tests/energy2400/duty_cycle_test/duty_cycle_test.py +7 -6
  125. certificate/tests/energy2400/output_power_test/output_power_test.json +22 -0
  126. {brg_certificate → certificate}/tests/energy2400/output_power_test/output_power_test.py +17 -6
  127. {brg_certificate → certificate}/tests/energy2400/pattern_test/pattern_test.json +1 -1
  128. {brg_certificate → certificate}/tests/energy2400/pattern_test/pattern_test.py +7 -6
  129. certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.json +25 -0
  130. certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.py +378 -0
  131. brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.json → certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.json +3 -3
  132. brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.py → certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.py +97 -87
  133. certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +23 -0
  134. certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +350 -0
  135. {brg_certificate → certificate}/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.json +1 -1
  136. {brg_certificate → certificate}/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.py +7 -6
  137. {brg_certificate → certificate}/tests/energy_sub1g/pattern_test/pattern_test.json +1 -1
  138. {brg_certificate → certificate}/tests/energy_sub1g/pattern_test/pattern_test.py +7 -6
  139. {brg_certificate → certificate}/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.json +1 -1
  140. {brg_certificate → certificate}/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.py +10 -10
  141. {brg_certificate → certificate}/tests/sensors/ext_sensor_test/ext_sensor_test.json +4 -4
  142. certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +455 -0
  143. certificate/wlt_types.py +122 -0
  144. {gw_certificate → common}/api_if/202/status.json +6 -0
  145. {gw_certificate → common}/api_if/203/status.json +6 -0
  146. {gw_certificate → common}/api_if/204/status.json +6 -0
  147. common/api_if/206/data.json +85 -0
  148. common/api_if/206/status.json +69 -0
  149. common/api_if/api_validation.py +85 -0
  150. common/web/templates/generator.html +148 -0
  151. common/web/templates/index.html +20 -0
  152. common/web/templates/menu.html +54 -0
  153. common/web/templates/parser.html +53 -0
  154. {brg_certificate/ag → common/web/templates}/wlt_types.html +1216 -191
  155. common/web/web_utils.py +377 -0
  156. {brg_certificate → common}/wltPb_pb2.py +14 -12
  157. {gw_certificate/common → common}/wltPb_pb2.pyi +16 -2
  158. gui_certificate/gui_certificate_cli.py +14 -0
  159. gui_certificate/server.py +1062 -0
  160. gui_certificate/templates/cert_run.html +1207 -0
  161. wiliot_certificate-4.5.0a1.dist-info/METADATA +110 -0
  162. wiliot_certificate-4.5.0a1.dist-info/RECORD +182 -0
  163. {wiliot_certificate-4.4.3.dist-info → wiliot_certificate-4.5.0a1.dist-info}/WHEEL +1 -1
  164. wiliot_certificate-4.5.0a1.dist-info/entry_points.txt +5 -0
  165. wiliot_certificate-4.5.0a1.dist-info/top_level.txt +3 -0
  166. brg_certificate/ag/energous_v0_defines.py +0 -925
  167. brg_certificate/ag/energous_v1_defines.py +0 -931
  168. brg_certificate/ag/energous_v2_defines.py +0 -925
  169. brg_certificate/ag/energous_v3_defines.py +0 -925
  170. brg_certificate/ag/energous_v4_defines.py +0 -925
  171. brg_certificate/ag/fanstel_lan_v0_defines.py +0 -925
  172. brg_certificate/ag/fanstel_lte_v0_defines.py +0 -925
  173. brg_certificate/ag/fanstel_wifi_v0_defines.py +0 -925
  174. brg_certificate/ag/minew_lte_v0_defines.py +0 -925
  175. brg_certificate/ag/wlt_types_ag_jsons/unified_echo_ext_pkt.json +0 -61
  176. brg_certificate/brg_certificate.py +0 -225
  177. brg_certificate/brg_certificate_cli.py +0 -63
  178. brg_certificate/cert_common.py +0 -923
  179. brg_certificate/cert_config.py +0 -402
  180. brg_certificate/cert_utils.py +0 -362
  181. brg_certificate/certificate_bcc_sanity_test_list.txt +0 -40
  182. brg_certificate/certificate_bcc_test_list.txt +0 -48
  183. brg_certificate/certificate_sanity_test_list.txt +0 -43
  184. brg_certificate/certificate_test_list.txt +0 -53
  185. brg_certificate/config/eclipse.json +0 -10
  186. brg_certificate/config/hivemq.json +0 -10
  187. brg_certificate/config/mosquitto.json +0 -10
  188. brg_certificate/config/mosquitto.md +0 -95
  189. brg_certificate/config/wiliot-dev.json +0 -10
  190. brg_certificate/restore_brg.py +0 -61
  191. brg_certificate/tests/calibration/output_power_test/output_power_test.json +0 -16
  192. brg_certificate/tests/calibration/output_power_test/output_power_test.py +0 -28
  193. brg_certificate/tests/datapath/aging_test/aging_test.py +0 -143
  194. brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.json +0 -16
  195. brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.py +0 -73
  196. brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.json +0 -17
  197. brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.py +0 -118
  198. brg_certificate/tests/edge_mgmt/actions_test/actions_test.json +0 -14
  199. brg_certificate/tests/edge_mgmt/actions_test/actions_test.py +0 -396
  200. brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.json +0 -20
  201. brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.py +0 -94
  202. brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.json +0 -19
  203. brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.py +0 -87
  204. brg_certificate/tests/edge_mgmt/leds_test/leds_test.json +0 -17
  205. brg_certificate/tests/edge_mgmt/leds_test/leds_test.py +0 -223
  206. brg_certificate/tests/edge_mgmt/ota_test/ota_test.json +0 -17
  207. brg_certificate/tests/edge_mgmt/ota_test/ota_test.py +0 -128
  208. brg_certificate/tests/energy2400/output_power_test/output_power_test.json +0 -16
  209. brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.json +0 -20
  210. brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.py +0 -321
  211. brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.json +0 -20
  212. brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.py +0 -141
  213. brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +0 -20
  214. brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +0 -276
  215. brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.json +0 -20
  216. brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.py +0 -390
  217. brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.json +0 -16
  218. brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.py +0 -28
  219. brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +0 -305
  220. brg_certificate/wltPb_pb2.pyi +0 -234
  221. brg_certificate/wlt_types.py +0 -113
  222. gw_certificate/ag/ut_defines.py +0 -364
  223. gw_certificate/ag/wlt_types.py +0 -85
  224. gw_certificate/ag/wlt_types_ag.py +0 -5310
  225. gw_certificate/ag/wlt_types_data.py +0 -64
  226. gw_certificate/api/extended_api.py +0 -23
  227. gw_certificate/api_if/200/data.json +0 -106
  228. gw_certificate/api_if/200/status.json +0 -47
  229. gw_certificate/api_if/201/data.json +0 -98
  230. gw_certificate/api_if/201/status.json +0 -53
  231. gw_certificate/api_if/205/logs.json +0 -12
  232. gw_certificate/api_if/api_validation.py +0 -38
  233. gw_certificate/api_if/gw_capabilities.py +0 -54
  234. gw_certificate/cert_results.py +0 -145
  235. gw_certificate/common/analysis_data_bricks.py +0 -60
  236. gw_certificate/common/debug.py +0 -42
  237. gw_certificate/common/serialization_formatter.py +0 -93
  238. gw_certificate/common/utils.py +0 -8
  239. gw_certificate/common/utils_defines.py +0 -15
  240. gw_certificate/common/wltPb_pb2.py +0 -84
  241. gw_certificate/gw_certificate.py +0 -154
  242. gw_certificate/gw_certificate_cli.py +0 -87
  243. gw_certificate/interface/4.4.93_app.zip +0 -0
  244. gw_certificate/interface/4.4.93_sd_bl_app.zip +0 -0
  245. gw_certificate/interface/ble_simulator.py +0 -61
  246. gw_certificate/interface/ble_sniffer.py +0 -189
  247. gw_certificate/interface/flash_fw.py +0 -90
  248. gw_certificate/interface/if_defines.py +0 -36
  249. gw_certificate/interface/mqtt.py +0 -563
  250. gw_certificate/interface/nrfutil-linux +0 -0
  251. gw_certificate/interface/nrfutil-mac +0 -0
  252. gw_certificate/interface/nrfutil.exe +0 -0
  253. gw_certificate/interface/pkt_generator.py +0 -594
  254. gw_certificate/interface/uart_if.py +0 -236
  255. gw_certificate/interface/uart_ports.py +0 -20
  256. gw_certificate/templates/results.html +0 -241
  257. gw_certificate/templates/stage.html +0 -22
  258. gw_certificate/templates/table.html +0 -6
  259. gw_certificate/templates/test.html +0 -38
  260. gw_certificate/tests/__init__.py +0 -10
  261. gw_certificate/tests/actions.py +0 -289
  262. gw_certificate/tests/bad_crc_to_PER_quantization.csv +0 -51
  263. gw_certificate/tests/connection.py +0 -188
  264. gw_certificate/tests/downlink.py +0 -172
  265. gw_certificate/tests/generic.py +0 -238
  266. gw_certificate/tests/registration.py +0 -340
  267. gw_certificate/tests/static/__init__.py +0 -0
  268. gw_certificate/tests/static/connection_defines.py +0 -9
  269. gw_certificate/tests/static/downlink_defines.py +0 -9
  270. gw_certificate/tests/static/generated_packet_table.py +0 -195
  271. gw_certificate/tests/static/packet_table.csv +0 -10067
  272. gw_certificate/tests/static/references.py +0 -5
  273. gw_certificate/tests/static/uplink_defines.py +0 -14
  274. gw_certificate/tests/throughput.py +0 -240
  275. gw_certificate/tests/uplink.py +0 -853
  276. wiliot_certificate-4.4.3.dist-info/METADATA +0 -211
  277. wiliot_certificate-4.4.3.dist-info/RECORD +0 -210
  278. wiliot_certificate-4.4.3.dist-info/entry_points.txt +0 -3
  279. wiliot_certificate-4.4.3.dist-info/top_level.txt +0 -3
  280. {brg_certificate → certificate}/__init__.py +0 -0
  281. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/side_info_sensor.json +0 -0
  282. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/signal_indicator_data.json +0 -0
  283. {gw_certificate → common}/api_if/202/data.json +0 -0
  284. {gw_certificate/api_if/200 → common/api_if/202}/logs.json +0 -0
  285. {gw_certificate → common}/api_if/203/data.json +0 -0
  286. {gw_certificate/api_if/201 → common/api_if/203}/logs.json +0 -0
  287. {gw_certificate → common}/api_if/204/data.json +0 -0
  288. {gw_certificate/api_if/202 → common/api_if/204}/logs.json +0 -0
  289. {gw_certificate → common}/api_if/205/data.json +0 -0
  290. {gw_certificate/api_if/203 → common/api_if/205}/logs.json +0 -0
  291. {gw_certificate → common}/api_if/205/status.json +0 -0
  292. {gw_certificate/api_if/204 → common/api_if/206}/logs.json +0 -0
  293. {gw_certificate → common/api_if}/__init__.py +0 -0
  294. {gw_certificate/api_if → gui_certificate}/__init__.py +0 -0
  295. {wiliot_certificate-4.4.3.dist-info → wiliot_certificate-4.5.0a1.dist-info}/licenses/LICENSE +0 -0
@@ -1,236 +0,0 @@
1
- import datetime
2
- import subprocess
3
- import serial
4
- import serial.tools.list_ports
5
- import time
6
- import os
7
- import stat
8
- import platform
9
- from packaging import version
10
- import pkg_resources
11
-
12
- from gw_certificate.common.debug import debug_print
13
- from gw_certificate.interface.if_defines import *
14
-
15
- LATEST_VERSION = '4.4.93'
16
- LATEST_VERSION_FILE = f'{LATEST_VERSION}_sd_bl_app.zip'
17
- LATEST_VERSION_PATH = pkg_resources.resource_filename(__name__, LATEST_VERSION_FILE)
18
- LATEST_VERSION_FILE_APP = f'{LATEST_VERSION}_app.zip'
19
- LATEST_VERSION_PATH_APP = pkg_resources.resource_filename(__name__, LATEST_VERSION_FILE_APP)
20
-
21
- FIRST_UNIFIED_BL_VERSION = version.parse('4.4.44')
22
-
23
- NRFUTIL_FW_TOO_LOW_ERROR = 'Error 0x05: The firmware version is too low'
24
-
25
- class UARTError(Exception):
26
- pass
27
-
28
- class UARTInterface:
29
- def __init__(self, comport, update_fw=True):
30
- self.comport = comport
31
- self.serial = serial.Serial(port=comport, baudrate=921600, timeout=SERIAL_TIMEOUT)
32
- self.serial.flushInput()
33
- self.gw_app_rx = None
34
- self.fw_version, self.mac = self.get_version_mac()
35
-
36
- if self.fw_version is None:
37
- raise UARTError("Cannot initialize board! Please try disconnecting and connecting USB cable")
38
- self.fw_version = version.parse(self.fw_version)
39
-
40
- version_supported = self.check_fw_supported()
41
- if not version_supported and update_fw:
42
- update_status = self.update_firmware()
43
- if not update_status:
44
- raise UARTError('Update Failed! Update FW manually using NRF Tools')
45
- if self.fw_version >= version.Version('3.17.0'):
46
- if self.fw_version < version.Version('4.4.0'):
47
- self.write_ble_command(GATEWAY_APP)
48
- self.flush()
49
- debug_print(f'Serial Connection {comport} Initialized')
50
-
51
- @staticmethod
52
- def get_comports():
53
- ports = serial.tools.list_ports.comports()
54
- debug_print(SEP + "\nAvailable ports:")
55
- for port, desc, hwid in sorted(ports):
56
- debug_print("{}: {} [{}]".format(port, desc, hwid))
57
- debug_print(SEP + "\n")
58
- return ports
59
-
60
- def read_line(self):
61
- # This reads a line from the ble device (from the serial connection using ble_ser),
62
- # strips it from white spaces and then decodes to string from bytes using the "utf-8" protocol.
63
- answer = self.serial.readline().strip().decode("utf-8", "ignore")
64
- if len(answer) == 0:
65
- return None
66
- return answer
67
-
68
- def write_ble_command(self, cmd, read=False, print_for_debug=True):
69
- # This function writes a command (cmd) to the ble using a serial connection (ble_ser) that are provided to it beforehand.. and returns the answer from the device as string
70
- if print_for_debug:
71
- debug_print("Write to BLE: {}".format(cmd))
72
- # Shows on terminal what command is about to be printed to the BLE device
73
- bytes_to_write = bytes(cmd.encode("utf-8")) + b'\r\n'
74
- self.serial.write(bytes_to_write)
75
- answer = None
76
- if read:
77
- # The "bytes" function converts the command from string to bytes by the specified "utf-8" protocol then we use .write to send the byte sequence to the ble device using the serial connection that we have for this port (ble_ser)
78
- # Pauses the program for execution for 0.01sec. This is done to allow the device to process the command and provide a response before reading the response.
79
- time.sleep(1)
80
- answer = self.read_line()
81
- if print_for_debug:
82
- debug_print(answer)
83
- return answer
84
-
85
- def flush(self, request_power_cycle=False):
86
- self.serial.close()
87
- if request_power_cycle:
88
- input('Please power cycle (unplug and replug from your pc) the certificate kit. Press enter when plugged')
89
- time.sleep(2)
90
- self.serial.open()
91
- self.serial.flushInput()
92
- self.serial.flush()
93
- self.serial.reset_output_buffer()
94
-
95
- def reset_gw(self, stop_advertising=True):
96
- self.flush()
97
- self.write_ble_command(RESET_GW)
98
- self.gw_app_rx = None
99
- time.sleep(3)
100
- if stop_advertising:
101
- self.write_ble_command(STOP_ADVERTISING)
102
- time.sleep(3)
103
-
104
- def cancel(self):
105
- self.write_ble_command(CANCEL)
106
-
107
- def set_rx(self, rx_channel):
108
- assert rx_channel in RX_CHANNELS
109
- if self.gw_app_rx is None:
110
- self.reset_gw()
111
-
112
- if self.fw_version >= version.Version('4.4.0'):
113
- # full_cfg isn't supported anymore. RX channels are configured by set_sniffer.
114
- pass
115
- elif self.fw_version >= version.Version('3.17.0'):
116
- # from 3.17.0, only full_cfg can be used to configure channels. sending it with:
117
- # Data coupling(DC) off, wifi(NW) and mqtt(MQ) on.
118
- rx_ch_to_fw_enums = {37: 2, 38: 3, 39: 4}
119
- cmd = f'!full_cfg DM {rx_ch_to_fw_enums[rx_channel]} DC 0 NW 1 MQ 1 CH {rx_channel}'
120
- # cmd = '!gateway_app'
121
- self.write_ble_command(cmd)
122
- else:
123
- cmd = f'!gateway_app {rx_channel} 30 0 17'
124
- self.write_ble_command(cmd)
125
-
126
- self.gw_app_rx = rx_channel
127
-
128
- def set_sniffer(self, rx_channel):
129
- self.set_rx(rx_channel)
130
- self.flush()
131
- time.sleep(1)
132
- if self.fw_version >= version.Version('4.1.0'):
133
- self.write_ble_command(f'{SET_SNIFFER} {rx_channel}')
134
- else:
135
- self.write_ble_command(SET_SNIFFER)
136
- self.flush()
137
- time.sleep(1)
138
-
139
- def cancel_sniffer(self):
140
- if self.fw_version >= version.Version('4.4.0'):
141
- # Set_logger_mode must have 2 args, even when disabled.
142
- self.write_ble_command(f'{CANCEL_SNIFFER} 37')
143
- else:
144
- self.write_ble_command(CANCEL_SNIFFER)
145
- self.flush()
146
-
147
- def get_version_mac(self):
148
- self.reset_gw()
149
- self.flush()
150
- timeout = datetime.datetime.now() + datetime.timedelta(seconds=15)
151
- while datetime.datetime.now() < timeout:
152
- raw_version = self.write_ble_command(VERSION, read=True)
153
- if raw_version is not None:
154
- if GW_APP_VERSION_HEADER in raw_version:
155
- return (raw_version.split(' ')[0].split('=')[1], raw_version.split(' ')[1].split('=')[1])
156
- return None, None
157
-
158
- def get_version(self):
159
- self.reset_gw()
160
- self.flush()
161
- timeout = datetime.datetime.now() + datetime.timedelta(seconds=15)
162
- while datetime.datetime.now() < timeout:
163
- raw_version = self.write_ble_command(VERSION, read=True)
164
- if raw_version is not None:
165
- if GW_APP_VERSION_HEADER in raw_version:
166
- return raw_version.split(' ')[0].split('=')[1]
167
- return None
168
-
169
- def get_mac(self):
170
- self.reset_gw()
171
- self.flush()
172
- timeout = datetime.datetime.now() + datetime.timedelta(seconds=15)
173
- while datetime.datetime.now() < timeout:
174
- reply = self.write_ble_command(VERSION, read=True)
175
- if reply is not None:
176
- if GW_MAC_ADDRESS_HEADER in reply:
177
- return reply.split(' ')[1].split('=')[1]
178
- return None
179
-
180
- def check_fw_supported(self):
181
- hex_version = version.parse(os.path.splitext(os.path.basename(LATEST_VERSION_PATH))[0].split('_')[0])
182
- if self.fw_version >= hex_version:
183
- debug_print(f'Certification kit version {self.fw_version}')
184
- return True
185
- return False
186
-
187
- def make_executable(self, file_path):
188
- """Set execute permissions for a file (chmod +x).
189
- For windows, having the file suffix as .exe is enough. """
190
- # Get current file permissions
191
- current_permissions = os.stat(file_path).st_mode
192
- # Add execute permissions for the user, group, and others
193
- os.chmod(file_path, current_permissions | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH)
194
-
195
- def update_firmware(self):
196
- NRFUTIL_MAP = {"Linux": "nrfutil-linux", "Darwin": "nrfutil-mac", "Windows": "nrfutil.exe"}
197
- nrfutil_file = pkg_resources.resource_filename(__name__, NRFUTIL_MAP[platform.system()])
198
- if platform.system() != "Windows":
199
- self.make_executable(nrfutil_file)
200
- # In order to support NRF UART FW update with protobuf > 3.20.0
201
- os.environ['PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION'] = 'python'
202
-
203
- self.reset_gw()
204
- self.write_ble_command('!move_to_bootloader', read=True)
205
- self.serial.close()
206
- p = None
207
- dfu_full_process = subprocess.Popen(f'{nrfutil_file} dfu serial --package "{LATEST_VERSION_PATH}" -p {self.comport} -fc 0 -b 115200 -t 10',
208
- stderr=subprocess.PIPE, shell=True, text=True)
209
- dfu_full_process.wait()
210
- return_code = dfu_full_process.returncode
211
- for line in dfu_full_process.stderr:
212
- if NRFUTIL_FW_TOO_LOW_ERROR in line:
213
- debug_print(f"DFU failed because the current bootloader version is too high.")
214
- debug_print(f"Attempting to upgrade application only..")
215
- dfu_app_process = subprocess.Popen(f'{nrfutil_file} dfu serial --package "{LATEST_VERSION_PATH_APP}" -p {self.comport} -fc 0 -b 115200 -t 10',
216
- stderr=subprocess.PIPE, shell=True, text=True)
217
- dfu_app_process.wait()
218
- return_code = dfu_app_process.returncode
219
- debug_print('Waiting for the certificate kit to apply the update and boot...')
220
- timeout = datetime.datetime.now() + datetime.timedelta(minutes=2)
221
- current_ver = ''
222
- time.sleep(15)
223
- self.serial.open()
224
- self.flush()
225
- while GW_APP_VERSION_HEADER not in current_ver and datetime.datetime.now() < timeout:
226
- current_ver = self.write_ble_command(VERSION, read=True)
227
- if current_ver is None:
228
- current_ver = ''
229
- time.sleep(1)
230
- if current_ver.split(' ')[0].split('=')[1] != LATEST_VERSION:
231
- return False
232
- if return_code == 0:
233
- self.fw_version = version.parse(current_ver.split(' ')[0].split('=')[1])
234
- debug_print(f"Certification kit upgraded to {LATEST_VERSION} successfully")
235
- return True
236
- return False
@@ -1,20 +0,0 @@
1
- import sys
2
- import serial.tools.list_ports
3
-
4
- def get_uart_ports(silent=True):
5
- ports = serial.tools.list_ports.comports()
6
- uart_ports = []
7
- if not silent:
8
- sys.stdout.write('[')
9
- for port, desc, hwid in sorted(ports):
10
- if 'USB to UART' not in desc:
11
- continue
12
- if not silent:
13
- sys.stdout.write(f'("{port}", "{desc}", "{hwid}"),')
14
- uart_ports.append(port)
15
- if not silent:
16
- sys.stdout.write(']')
17
- return uart_ports
18
-
19
- if __name__ == '__main__':
20
- get_uart_ports(silent=False)
@@ -1,241 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <!-- Required meta tags -->
5
- <meta charset="utf-8">
6
- <meta name="viewport" content="width=device-width, initial-scale=1">
7
- <title>{{ page_title }}</title>
8
- <link rel="icon" href="https://www.wiliot.com/favicon.ico" type="image/x-icon" />
9
- <!-- JQuery -->
10
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
11
- <!-- Bootstrap CSS -->
12
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@latest/dist/css/bootstrap.min.css" rel="stylesheet">
13
- <!-- DataTables -->
14
- <link rel="stylesheet" href="https://cdn.datatables.net/1.13.7/css/jquery.dataTables.css" />
15
- <script src="https://cdn.datatables.net/1.13.7/js/jquery.dataTables.js"></script>
16
-
17
- <style>
18
- #card-body {
19
- height: auto;
20
- overflow:auto;
21
- }
22
- .pass {
23
- color: green;
24
- }
25
- .inconclusive {
26
- color: rgb(160, 160, 2);
27
- }
28
- .fail {
29
- color: red;
30
- }
31
-
32
- </style>
33
- <title>{{ title }}</title>
34
- </head>
35
- <body>
36
- <br>
37
- <div class="text-center">
38
- <img src="https://www.wiliot.com/src/img/svg/logo.svg" class="img-fluid" alt="">
39
- </div>
40
- <br>
41
- <div class="container">
42
- <h1> GW Certificate | Version {{version}} | {{ gw_id }} | {{ datetime }}</h1>
43
- <div class="card">
44
- <div class="card-header">
45
- Tests Summary
46
- </div>
47
- <div class="card-body" id="card-body">
48
- <div class="test-list">
49
- {% for test in tests %}
50
- <div class="test">
51
- <span class="d-inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-placement="right" title="{{ test.test_tooltip }}">
52
- {% if test.result_indication == 'info' %}
53
- <h5>{{ test.test_name }}: {% if test.test_pass >= test.pass_min %}<span class="badge bg-info text-dark">Info</span>{% else %}<span class="badge bg-warning text-dark">Warning</span>{% endif %}</h5>
54
- {% elif test.result_indication == 'optional' %}
55
- <h5>{{ test.test_name }}: <span class="badge bg-secondary">Optional</span></h5>
56
- {% else %}
57
- <h5>{{ test.test_name }}: {% if test.test_pass >= test.pass_min %}<span class="badge bg-success">Pass</span>{% elif test.test_pass >= test.inconclusive_min %}<span class="badge bg-warning text-dark">Inconclusive</span>{% else %}<span class="badge bg-danger">Fail</span>{% endif %}</h5>
58
- {% endif %}
59
- </span>
60
- <br>
61
- {% for stage in test.stages %}
62
- <span class="d-inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-placement="right" title="{{ stage.stage_tooltip }}" >
63
- {% if stage.result_indication == 'info' %}
64
- <h6> - {{ stage.stage_name }}: {% if stage.stage_pass >= stage.pass_min %}<span class="badge bg-info text-dark">Info</span>{% else %}<span class="badge bg-warning text-dark">Warning</span>{% endif %} </h6>
65
- {% else %}
66
- <h6> - {{ stage.stage_name }}: {% if stage.stage_pass >= stage.pass_min %}<span class="badge bg-success">Pass</span>{% elif stage.stage_pass >= stage.inconclusive_min %}<span class="badge bg-warning text-dark">Inconclusive</span>{% else %}<span class="badge bg-danger">Fail</span>{% endif %} </h6>
67
- {% endif %}
68
- </span>
69
- <br>
70
- {% endfor %}
71
- </div>
72
- {% endfor %}
73
- </div>
74
- <i> <sub>Hover over each line for a brief explainer </sub> </i>
75
- </div>
76
- </div>
77
- </div>
78
- <br>
79
- <div class="container">
80
- {% for test in tests %}
81
- <div class="accordion" id="accordion{{ loop.index }}">
82
- <div class="accordion-item">
83
- <h2 class="accordion-header" id="heading{{ loop.index }}">
84
- <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse{{ loop.index }}" aria-expanded="false" aria-controls="collapse{{ loop.index }}">
85
- {% if test.result_indication == 'info' %}
86
- {{ test.test_name }}:&nbsp; {% if test.test_pass >= test.pass_min %}<span class="badge bg-info text-dark">Info</span>{% else %}<span class="badge bg-warning text-dark">Warning</span>{% endif %}
87
- {% elif test.result_indication == 'optional' %}
88
- {{ test.test_name }}:&nbsp; <span class="badge bg-secondary">Optional</span>
89
- {% else %}
90
- {{ test.test_name }}:&nbsp; {% if test.test_pass >= test.pass_min %}<span class="badge bg-success">Pass</span>{% elif test.test_pass >= test.inconclusive_min %}<span class="badge bg-warning text-dark">Inconclusive</span>{% else %}<span class="badge bg-danger">Fail</span>{% endif %}
91
- {% endif %}
92
- </button>
93
- </h2>
94
- <div id="collapse{{ loop.index }}" class="accordion-collapse collapse" aria-labelledby="heading{{ loop.index }}" data-bs-parent="#accordion{{ loop.index }}">
95
- <div class="accordion-body">
96
- {{ test.report_html }}
97
- </div>
98
- </div>
99
- </div>
100
- </div>
101
- {% endfor %}
102
- <div class="accordion" id="accordion_log">
103
- <div class="accordion-item">
104
- <h2 class="accordion-header" id="heading_log">
105
- <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse_log" aria-expanded="false" aria-controls="collapse_log">
106
- GW Certificate Log
107
- </button>
108
- </h2>
109
- <div id="collapse_log" class="accordion-collapse collapse" aria-labelledby="heading_log" data-bs-parent="#accordion_log">
110
- <div class="accordion-body">
111
- <div class="container">
112
- <div class="card">
113
- <div class="card-header">
114
- GW Certificate Log
115
- </div>
116
- <div class="card-body" id="card-body" style="height: 500px; overflow: auto">
117
- <samp>
118
- {% for line in log %}
119
- {{ line | safe}}<br />
120
- {% endfor %}
121
- </samp>
122
- </div>
123
- </div>
124
- </div>
125
- <br>
126
- </div>
127
- </div>
128
- </div>
129
- </div>
130
- <div class="accordion" id="accordion_mqtt_log">
131
- <div class="accordion-item">
132
- <h2 class="accordion-header" id="heading_mqtt_log">
133
- <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse_mqtt_log" aria-expanded="false" aria-controls="collapse_mqtt_log">
134
- MQTT Log
135
- </button>
136
- </h2>
137
- <div id="collapse_mqtt_log" class="accordion-collapse collapse" aria-labelledby="heading_mqtt_log" data-bs-parent="#accordion_log">
138
- <div class="accordion-body">
139
- <div class="container">
140
- <div class="card">
141
- <div class="card-header">
142
- MQTT Log
143
- </div>
144
- <div class="card-body" id="card-body" style="height: 500px; overflow: auto">
145
- <samp>
146
- {% for line in mqtt_log %}
147
- {{ line | safe}}<br />
148
- {% endfor %}
149
- </samp>
150
- </div>
151
- </div>
152
- </div>
153
- <br>
154
- </div>
155
- </div>
156
- </div>
157
- </div>
158
- <div class="accordion" id="accordion_sniffer_log">
159
- <div class="accordion-item">
160
- <h2 class="accordion-header" id="heading_sniffer_log">
161
- <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse_sniffer_log" aria-expanded="false" aria-controls="collapse_sniffer_log">
162
- Sniffer Log
163
- </button>
164
- </h2>
165
- <div id="collapse_sniffer_log" class="accordion-collapse collapse" aria-labelledby="heading_sniffer_log" data-bs-parent="#accordion_log">
166
- <div class="accordion-body">
167
- <div class="container">
168
- <div class="card">
169
- <div class="card-header">
170
- Sniffer Log
171
- </div>
172
- <div class="card-body" id="card-body" style="height: 500px; overflow: auto">
173
- <samp>
174
- {% for line in sniffer_log %}
175
- {{ line | safe}}<br />
176
- {% endfor %}
177
- </samp>
178
- </div>
179
- </div>
180
- </div>
181
- <br>
182
- </div>
183
- </div>
184
- </div>
185
- </div>
186
-
187
- <!-- <br>
188
- <div class="text-center">
189
- <br>
190
- <h6>Certified Partners</h6>
191
- </div>
192
- <div id="certifiedPartnersCarousel" class="carousel slide" data-bs-ride="carousel" data-bs-pause="false" data-bs-interval="10000">
193
- <div class="carousel-inner">
194
- <div class="carousel-item active">
195
- <div class="row d-flex flex-wrap align-items-center" style="height: 50px;">
196
- <img src="https://www.wiliot.com/src/uploads/_partnersListingLogo/Screenshot-2024-07-08-at-9.36.37-AM.png" class="d-block mx-auto" style="width: 120px;" alt="Image missing">
197
- </div>
198
- </div>
199
- <div class="carousel-item">
200
- <div class="row d-flex flex-wrap align-items-center" style="height: 50px;">
201
- <img src="https://www.wiliot.com/src/uploads/_partnersListingLogo/rigado.png" class="d-block mx-auto" style="width: 120px;" alt="Image missing">
202
- </div>
203
- </div>
204
- <div class="carousel-item">
205
- <div class="row d-flex flex-wrap align-items-center" style="height: 50px;">
206
- <img src="https://www.minew.com/wp-content/uploads/2024/06/mine-logo-black.png" class="d-block mx-auto" style="width: 120px;" alt="Image missing">
207
- </div>
208
- </div>
209
- </div>
210
- </div>
211
- <br> -->
212
-
213
- <!-- Accordion listener to adjust table -->
214
- <script defer type="text/javascript">
215
- var accordions = document.getElementsByClassName('accordion')
216
- Array.prototype.forEach.call(accordions, (el) => {
217
- el.addEventListener('shown.bs.collapse', function () {
218
- DataTable.tables({ visible: true, api: true }).columns.adjust();
219
- });
220
- });
221
- </script>
222
-
223
-
224
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
225
- integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
226
- crossorigin="anonymous"></script>
227
- <script>
228
- var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
229
- var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
230
- return new bootstrap.Tooltip(tooltipTriggerEl)
231
- })
232
- </script>
233
- <style>
234
- .tooltip-inner {
235
- max-width: 1000px;
236
- /* width: 570px; */
237
- font-size:larger;
238
- }
239
- </style>
240
- </body>
241
- </html>
@@ -1,22 +0,0 @@
1
- <div class="card">
2
- <div class="card-header" id="{{ stage.stage_name }}">
3
- {% if stage.result_indication == 'info' %}
4
- {{ stage.stage_name }}: {% if stage.stage_pass >= stage.pass_min %}<span class="badge bg-info text-dark">Info</span>{% else %}<span class="badge bg-warning text-dark">Warning</span>{% endif %}
5
- {% else %}
6
- {{ stage.stage_name }}: {% if stage.stage_pass >= stage.pass_min %}<span class="badge bg-success">Pass</span>{% elif stage.stage_pass >= stage.inconclusive_min %}<span class="badge bg-warning text-dark">Inconclusive</span>{% else %}<span class="badge bg-danger">Fail</span>{% endif %}
7
- {% endif %}
8
-
9
- </div>
10
- <div class="card-body" id="card-body">
11
- <samp>
12
- {% for line in stage_report %}
13
- {{ line | safe}}<br />
14
- {% endfor %}
15
- </samp>
16
- </div>
17
- <!-- Insert table here if available-->
18
- {{ table|safe }}
19
- <!-- Insert graph here if available-->
20
- {{ graph|safe }}
21
- </div>
22
- <br>
@@ -1,6 +0,0 @@
1
- {{ dataframe }}
2
-
3
- {% set let_line = 'let ' + table_id + ' = new DataTable("#' + table_id + '", {scrollY: "300px", scrollX: true});' %}
4
- <script defer type="text/javascript">
5
- {{ let_line }}
6
- </script>
@@ -1,38 +0,0 @@
1
- <div class="container">
2
- {% if test.result_indication == 'info' %}
3
- <h3>{{ test.test_name }}: {% if test.test_pass >= test.pass_min %}<span class="badge bg-info text-dark">Info</span>{% else %}<span class="badge bg-warning text-dark">Warning</span>{% endif %}</h3>
4
- {% elif test.result_indication == 'optional' %}
5
- <h3>{{ test.test_name }}: <span class="badge bg-secondary">Optional</span></h3>
6
- {% else %}
7
- <h3>{{ test.test_name }}: {% if test.test_pass >= test.pass_min %}<span class="badge bg-success">Pass</span>{% elif test.test_pass >= test.inconclusive_min %}<span class="badge bg-warning text-dark">Inconclusive</span>{% else %}<span class="badge bg-danger">Fail</span>{% endif %}</h3>
8
- {% endif %}
9
- <h4>Running Time: {{ running_time }}</h4>
10
-
11
- {% if test.test_pass < test.pass_min %}
12
- <h5>Error summary:</h5>
13
- {% for stage in test.stages %}
14
- {% if stage.result_indication == 'info' %}
15
- {% if stage.stage_pass < stage.pass_min %}
16
- <div class="alert alert-warning" role="alert">
17
- <a href="#{{ stage.stage_name }}" class="alert-link">{{ stage.stage_name }}</a>: {{ stage.error_summary }}
18
- </div>
19
- {% endif %}
20
- {% else %}
21
- {% if stage.stage_pass < stage.inconclusive_min %}
22
- <div class="alert alert-danger" role="alert">
23
- <a href="#{{ stage.stage_name }}" class="alert-link">{{ stage.stage_name }}</a>: {{ stage.error_summary }}
24
- </div>
25
- {% elif stage.stage_pass < stage.pass_min %}
26
- <div class="alert alert-warning" role="alert">
27
- <a href="#{{ stage.stage_name }}" class="alert-link">{{ stage.stage_name }}</a>: {{ stage.error_summary }}
28
- </div>
29
- {% endif %}
30
- {% endif %}
31
- {% endfor %}
32
- {% endif %}
33
- <hr>
34
- {% for stage in test.stages %}
35
- {{ stage.report_html }}
36
- {% endfor %}
37
- </div>
38
- <br>
@@ -1,10 +0,0 @@
1
- from gw_certificate.tests.registration import RegistrationTest
2
- from gw_certificate.tests.connection import ConnectionTest
3
- from gw_certificate.tests.uplink import UplinkTest
4
- from gw_certificate.tests.downlink import DownlinkTest
5
- from gw_certificate.tests.actions import ActionsTest
6
- from gw_certificate.tests.throughput import StressTest
7
-
8
- TESTS = [RegistrationTest, ConnectionTest, UplinkTest, DownlinkTest, ActionsTest, StressTest]
9
-
10
- TESTS_NO_UART = [RegistrationTest]