wiliot-certificate 1.5.1a1__py3-none-any.whl → 1.5.3a1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- brg_certificate/ag/energous_v0_defines.py +3 -3
- brg_certificate/ag/energous_v1_defines.py +3 -3
- brg_certificate/ag/energous_v2_defines.py +3 -3
- brg_certificate/ag/energous_v3_defines.py +3 -3
- brg_certificate/ag/energous_v4_defines.py +3 -3
- brg_certificate/ag/fanstel_lan_v0_defines.py +3 -3
- brg_certificate/ag/fanstel_lte_v0_defines.py +3 -3
- brg_certificate/ag/fanstel_wifi_v0_defines.py +3 -3
- brg_certificate/ag/minew_lte_v0_defines.py +3 -3
- brg_certificate/ag/wlt_cmd_if.html +3 -2
- brg_certificate/ag/wlt_types.html +3 -3
- brg_certificate/ag/wlt_types_ag.py +8 -8
- brg_certificate/brg_certificate_cli.py +18 -3
- brg_certificate/cert_common.py +134 -28
- brg_certificate/cert_config.py +12 -7
- brg_certificate/cert_data_sim.py +22 -4
- brg_certificate/cert_defines.py +10 -5
- brg_certificate/cert_gw_sim.py +4 -2
- brg_certificate/cert_mqtt.py +7 -6
- brg_certificate/cert_prints.py +14 -1
- brg_certificate/cert_protobuf.py +7 -7
- brg_certificate/cert_results.py +91 -64
- brg_certificate/cert_utils.py +12 -5
- brg_certificate/certificate_bcc_sanity_test_list.txt +10 -5
- brg_certificate/certificate_bcc_test_list.txt +16 -11
- brg_certificate/certificate_sanity_test_list.txt +10 -4
- brg_certificate/certificate_test_list.txt +14 -10
- brg_certificate/tests/calibration/interval_test/interval_test.json +2 -2
- brg_certificate/tests/calibration/interval_test/interval_test.py +1 -1
- brg_certificate/tests/calibration/output_power_test/output_power_test.json +3 -2
- brg_certificate/tests/calibration/output_power_test/output_power_test.py +1 -1
- brg_certificate/tests/calibration/pattern_test/pattern_test.json +2 -2
- brg_certificate/tests/calibration/pattern_test/pattern_test.py +27 -28
- brg_certificate/tests/datapath/aging_test/aging_test.json +4 -5
- brg_certificate/tests/datapath/aging_test/aging_test.py +40 -33
- brg_certificate/tests/datapath/num_of_tags_test/num_of_tags_test.json +2 -2
- brg_certificate/tests/datapath/num_of_tags_test/num_of_tags_test.py +13 -12
- brg_certificate/tests/datapath/output_power_test/output_power_test.json +2 -2
- brg_certificate/tests/datapath/output_power_test/output_power_test.py +3 -2
- brg_certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.json +3 -3
- brg_certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.py +7 -4
- brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.json +2 -2
- brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.py +7 -4
- brg_certificate/tests/datapath/pacer_interval_test/pacer_interval_test.json +2 -2
- brg_certificate/tests/datapath/pacer_interval_test/pacer_interval_test.py +5 -3
- brg_certificate/tests/datapath/pattern_test/pattern_test.json +2 -2
- brg_certificate/tests/datapath/pattern_test/pattern_test.py +3 -2
- brg_certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.json +3 -3
- brg_certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.py +12 -5
- brg_certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.json +2 -2
- brg_certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.py +12 -7
- brg_certificate/tests/datapath/pkt_filter_test/pkt_filter_test.json +2 -2
- brg_certificate/tests/datapath/pkt_filter_test/pkt_filter_test.py +12 -8
- brg_certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.json +3 -3
- brg_certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.py +8 -6
- brg_certificate/tests/datapath/rx_channel_test/rx_channel_test.json +2 -2
- brg_certificate/tests/datapath/rx_channel_test/rx_channel_test.py +7 -3
- brg_certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.json +3 -3
- brg_certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.py +108 -74
- brg_certificate/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.json +3 -3
- brg_certificate/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.py +129 -119
- brg_certificate/tests/datapath/stress_gen3_test/stress_gen3_test.json +8 -8
- brg_certificate/tests/datapath/stress_gen3_test/stress_gen3_test.py +103 -102
- brg_certificate/tests/datapath/stress_test/stress_test.json +14 -15
- brg_certificate/tests/datapath/stress_test/stress_test.py +103 -102
- brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.json +2 -2
- brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.py +8 -3
- brg_certificate/tests/datapath/tx_repetition_test/tx_repetition_test.json +2 -2
- brg_certificate/tests/datapath/tx_repetition_test/tx_repetition_test.py +9 -7
- brg_certificate/tests/edge_mgmt/actions_test/actions_test.json +2 -2
- brg_certificate/tests/edge_mgmt/actions_test/actions_test.py +11 -27
- brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.json +14 -8
- brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.py +1 -1
- brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.json +13 -8
- brg_certificate/tests/edge_mgmt/leds_test/leds_test.json +2 -2
- brg_certificate/tests/edge_mgmt/leds_test/leds_test.py +24 -11
- brg_certificate/tests/edge_mgmt/ota_test/ota_test.json +2 -2
- brg_certificate/tests/edge_mgmt/ota_test/ota_test.py +6 -5
- brg_certificate/tests/edge_mgmt/{stat_test/stat_test.json → periodic_msgs_test/periodic_msgs_test.json} +3 -3
- brg_certificate/tests/edge_mgmt/{stat_test/stat_test.py → periodic_msgs_test/periodic_msgs_test.py} +4 -4
- brg_certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.json +3 -3
- brg_certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.py +3 -2
- brg_certificate/tests/energy2400/output_power_test/output_power_test.json +4 -3
- brg_certificate/tests/energy2400/output_power_test/output_power_test.py +3 -2
- brg_certificate/tests/energy2400/pattern_test/pattern_test.json +3 -3
- brg_certificate/tests/energy2400/pattern_test/pattern_test.py +3 -2
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.json +7 -7
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.py +270 -295
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.json +7 -7
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.py +270 -295
- brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.json +12 -6
- brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.py +45 -57
- brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +4 -4
- brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +130 -207
- brg_certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.json +2 -2
- brg_certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.py +3 -2
- brg_certificate/tests/energy_sub1g/pattern_test/pattern_test.json +4 -3
- brg_certificate/tests/energy_sub1g/pattern_test/pattern_test.py +3 -2
- brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.json +13 -7
- brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.py +119 -126
- brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.json +2 -2
- brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.py +3 -2
- brg_certificate/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.json +18 -0
- brg_certificate/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.py +84 -0
- brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.json +21 -0
- brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +306 -0
- brg_certificate/wlt_types.py +2 -1
- gw_certificate/api_if/gw_capabilities.py +37 -1
- gw_certificate/common/serialization_formatter.py +80 -0
- gw_certificate/common/wltPb_pb2.py +50 -38
- gw_certificate/common/wltPb_pb2.pyi +40 -34
- gw_certificate/gw_certificate.py +4 -2
- gw_certificate/gw_certificate_cli.py +5 -4
- gw_certificate/interface/4.4.82_app.zip +0 -0
- gw_certificate/interface/{4.4.52_sd_bl_app.zip → 4.4.82_sd_bl_app.zip} +0 -0
- gw_certificate/interface/mqtt.py +39 -23
- gw_certificate/interface/pkt_generator.py +0 -44
- gw_certificate/interface/uart_if.py +20 -9
- gw_certificate/tests/actions.py +33 -5
- gw_certificate/tests/connection.py +3 -1
- gw_certificate/tests/generic.py +1 -1
- gw_certificate/tests/registration.py +4 -4
- gw_certificate/tests/static/generated_packet_table.py +47 -25
- gw_certificate/tests/static/packet_table.csv +10067 -10051
- gw_certificate/tests/static/uplink_defines.py +1 -0
- gw_certificate/tests/uplink.py +142 -22
- {wiliot_certificate-1.5.1a1.dist-info → wiliot_certificate-1.5.3a1.dist-info}/METADATA +40 -40
- {wiliot_certificate-1.5.1a1.dist-info → wiliot_certificate-1.5.3a1.dist-info}/RECORD +132 -127
- {wiliot_certificate-1.5.1a1.dist-info → wiliot_certificate-1.5.3a1.dist-info}/WHEEL +1 -1
- gw_certificate/interface/4.4.52_app.zip +0 -0
- {wiliot_certificate-1.5.1a1.dist-info → wiliot_certificate-1.5.3a1.dist-info}/entry_points.txt +0 -0
- {wiliot_certificate-1.5.1a1.dist-info → wiliot_certificate-1.5.3a1.dist-info}/licenses/LICENSE +0 -0
- {wiliot_certificate-1.5.1a1.dist-info → wiliot_certificate-1.5.3a1.dist-info}/top_level.txt +0 -0
brg_certificate/cert_results.py
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import tabulate
|
|
3
3
|
import subprocess
|
|
4
|
+
import datetime
|
|
4
5
|
from reportlab.lib import colors
|
|
5
6
|
from reportlab.lib.pagesizes import letter
|
|
6
7
|
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, PageBreak, KeepTogether, Image
|
|
7
8
|
from reportlab.lib.styles import ParagraphStyle
|
|
8
|
-
from reportlab.lib.enums import TA_CENTER, TA_LEFT
|
|
9
|
+
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
|
|
9
10
|
|
|
10
11
|
# Local imports
|
|
11
12
|
import brg_certificate.cert_utils as cert_utils
|
|
@@ -17,9 +18,30 @@ from brg_certificate.cert_defines import *
|
|
|
17
18
|
##################################
|
|
18
19
|
# GENERIC
|
|
19
20
|
##################################
|
|
21
|
+
# Defines
|
|
22
|
+
WLT_CERT_HEADLINE = "Wiliot Certificate Results"
|
|
23
|
+
WLT_CERT_PASS_HEADLINE = "Wiliot Certificate Passed!"
|
|
24
|
+
WLT_CERT_FAIL_HEADLINE = "Wiliot Certificate Failed!"
|
|
25
|
+
WLT_CERT_ERROR_HEADLINE = "Wiliot Certificate Error!"
|
|
26
|
+
SUMMARY_HEADLINE = "Summary"
|
|
27
|
+
RUN_INFO = "Run Information"
|
|
28
|
+
RUN_DATETIME = "Run Time & Date"
|
|
29
|
+
RUN_DUR = "Run Duration"
|
|
30
|
+
CERT_VER = "Certificate Version"
|
|
31
|
+
TESTING_DEVICE_INFO = "Testing Device Information"
|
|
32
|
+
TESTED_DEVICE_INFO = "Tested Device Information"
|
|
33
|
+
SIM = "Simulator"
|
|
34
|
+
BRG = "Bridge"
|
|
35
|
+
BLE_MAC_ADDRESS = "BLE MAC Address"
|
|
36
|
+
BOARD_TYPE = "Board Type"
|
|
37
|
+
BLE_VER = "BLE Version"
|
|
38
|
+
SUP_API_VER = "Supported API Version"
|
|
39
|
+
|
|
20
40
|
result_map = {TEST_FAILED: cert_prints.color("RED", "FAIL"), TEST_SKIPPED: cert_prints.color("WARNING", "SKIPPED"),
|
|
21
41
|
TEST_PASSED: cert_prints.color("GREEN", "PASS"), TEST_INIT: cert_prints.color("CYAN", "INIT")}
|
|
22
42
|
pass_or_fail = lambda obj : result_map[obj.rc]
|
|
43
|
+
param_name_to_title = lambda s : ' '.join(word.lower().capitalize() for word in s.split('_')).replace('2 4', '2.4') if '_' in s else s
|
|
44
|
+
|
|
23
45
|
class TestResult:
|
|
24
46
|
def __init__(self, name="", devices_to_print="", test_table=None, result=None, duration=0, purpose="", kb_link="", compliance="", test_skipped=False):
|
|
25
47
|
self.name = name
|
|
@@ -78,7 +100,7 @@ def get_update_status_from_log_file(log_file="update_log.txt"):
|
|
|
78
100
|
break
|
|
79
101
|
return update_status
|
|
80
102
|
|
|
81
|
-
def generate_results_files(html=True, pdf=True, failures=0, skipped=0, start_time=
|
|
103
|
+
def generate_results_files(html=True, pdf=True, failures=0, skipped=0, start_time=datetime.datetime.now(), duration=0, brg=None, internal_brg=None, tests=[], error=None, pipeline=False):
|
|
82
104
|
# Generate HTML file
|
|
83
105
|
if html:
|
|
84
106
|
f = open(os.path.join(BASE_DIR, UT_RESULT_FILE_HTML), "w", encoding="utf-8")
|
|
@@ -89,38 +111,38 @@ def generate_results_files(html=True, pdf=True, failures=0, skipped=0, start_tim
|
|
|
89
111
|
stdout=subprocess.PIPE, shell=True, cwd=os.environ['BITBUCKET_CLONE_DIR'])
|
|
90
112
|
output, err = p.communicate()
|
|
91
113
|
if error:
|
|
92
|
-
f.write("<br><h1 style='color:#ab0000'>
|
|
114
|
+
f.write(f"<br><h1 style='color:#ab0000'>{WLT_CERT_ERROR_HEADLINE}</h1><br>")
|
|
93
115
|
if pipeline:
|
|
94
116
|
f.write("<hr>" + output.decode("utf-8") + "<br>")
|
|
95
117
|
f.write("<p><a href='https://bitbucket.org/wiliot/wiliot-nordic-firmware/commits/{}'>Commit page on bitbucket</a><hr>".format(os.environ['BITBUCKET_COMMIT']))
|
|
96
118
|
f.write(update_status + "<br><br>")
|
|
97
119
|
f.write(error + "<br><br>")
|
|
98
|
-
f.write("
|
|
120
|
+
f.write(f"{RUN_DUR}: {str(duration).split(".")[0]} <br><br>")
|
|
99
121
|
if brg:
|
|
100
|
-
f.write("
|
|
122
|
+
f.write(f"{BRG} {BLE_VER}: {brg.version} <br><br>")
|
|
101
123
|
elif tests:
|
|
102
124
|
if not failures and ("successfully!" in update_status or "skipped!" in update_status or not pipeline):
|
|
103
|
-
f.write("<br><h1 style='color:#00AB83'>
|
|
125
|
+
f.write(f"<br><h1 style='color:#00AB83'>{WLT_CERT_PASS_HEADLINE}</h1>")
|
|
104
126
|
else:
|
|
105
|
-
f.write("<br><h1 style='color:#ab0000'>
|
|
127
|
+
f.write(f"<br><h1 style='color:#ab0000'>{WLT_CERT_FAIL_HEADLINE}</h1>")
|
|
106
128
|
if pipeline:
|
|
107
129
|
f.write("<hr>" + output.decode("utf-8") + "<br>")
|
|
108
130
|
f.write("<p><a href='https://bitbucket.org/wiliot/wiliot-nordic-firmware/commits/{}'>Commit page on bitbucket</a><hr>".format(os.environ['BITBUCKET_COMMIT']))
|
|
109
131
|
f.write(update_status + "<br><br>")
|
|
110
|
-
f.write("
|
|
111
|
-
f.write("
|
|
112
|
-
f.write("
|
|
132
|
+
f.write(f"{RUN_DATETIME}: {start_time.strftime('%d/%m/%Y, %H:%M:%S')} <br><br>")
|
|
133
|
+
f.write(f"{RUN_DUR}: {str(duration).split(".")[0]} <br><br>")
|
|
134
|
+
f.write(f"{CERT_VER}: {CERT_VERSION} <br><br>")
|
|
113
135
|
if internal_brg:
|
|
114
|
-
f.write("
|
|
115
|
-
f.write("
|
|
116
|
-
f.write("Tested bridge ID: {} <br><br>".format(brg.id_str))
|
|
136
|
+
f.write(f"{SIM} {BLE_MAC_ADDRESS}: {internal_brg.id_str} <br><br>")
|
|
137
|
+
f.write(f"{SIM} {BLE_VER}: {internal_brg.version} <br><br>")
|
|
117
138
|
if brg:
|
|
118
|
-
f.write("
|
|
139
|
+
f.write(f"{BRG} {BLE_MAC_ADDRESS}: {brg.id_str} <br><br>")
|
|
140
|
+
f.write(f"{BRG} {BLE_VER}: {brg.version} <br><br>")
|
|
119
141
|
f.write(tabulate.tabulate([[len(tests)-(failures+skipped), skipped, failures, len(tests)]], headers=["PASSED", "SKIPPED", "FAILED", "TOTAL"], tablefmt="html"))
|
|
120
142
|
f.write(generate_tests_table(tests, html=True))
|
|
121
143
|
f.write("<br><br>")
|
|
122
144
|
if pipeline:
|
|
123
|
-
f.write("<p><a href='https://bitbucket.org/wiliot/wiliot-nordic-firmware/pipelines/results/{}'>Build's page and artifacts on bitbucket</a></p><br><br>"
|
|
145
|
+
f.write(f"<p><a href='https://bitbucket.org/wiliot/wiliot-nordic-firmware/pipelines/results/{os.environ['BITBUCKET_BUILD_NUMBER']}'>Build's page and artifacts on bitbucket</a></p><br><br>")
|
|
124
146
|
f.write("<img src='https://www.wiliot.com/src/img/svg/logo.svg' width='100' height='40' alt='Wiliot logo'>")
|
|
125
147
|
f.write(HTML_END)
|
|
126
148
|
f.close()
|
|
@@ -138,40 +160,42 @@ def generate_results_files(html=True, pdf=True, failures=0, skipped=0, start_tim
|
|
|
138
160
|
|
|
139
161
|
# Title and Summary
|
|
140
162
|
red_header = STYLES_PDF.get("RED_HEADER", ParagraphStyle("Default"))
|
|
141
|
-
|
|
163
|
+
black_header = STYLES_PDF.get("BLACK_HEADER", ParagraphStyle("Default"))
|
|
142
164
|
module_header = STYLES_PDF.get("MODULE_HEADER", ParagraphStyle("Default"))
|
|
143
165
|
test_header = STYLES_PDF.get("TEST_LINK_HEADER", ParagraphStyle("Default"))
|
|
144
166
|
test_purpose = STYLES_PDF.get("TEST_HEADER", ParagraphStyle("Default"))
|
|
145
167
|
bold_text_style = STYLES_PDF.get("BLACK_BOLD", ParagraphStyle("Default"))
|
|
168
|
+
bold_right_text_style = STYLES_PDF.get("BLUE_BOLD_RIGHT", ParagraphStyle("Default"))
|
|
146
169
|
centered_text_style = STYLES_PDF.get("BLACK", ParagraphStyle("Default"))
|
|
147
170
|
if error:
|
|
148
|
-
title = Paragraph("<b>
|
|
171
|
+
title = Paragraph(f"<b>{WLT_CERT_ERROR_HEADLINE}</b>", red_header)
|
|
149
172
|
hdr_page.append(title)
|
|
150
173
|
hdr_page.append(Spacer(1, 20))
|
|
151
174
|
hdr_page.append(Paragraph(f"{error}", bold_text_style))
|
|
152
175
|
else:
|
|
153
|
-
title = Paragraph("<b>
|
|
176
|
+
title = Paragraph(f"<b>{WLT_CERT_HEADLINE}</b>", black_header)
|
|
154
177
|
hdr_page.append(title)
|
|
155
178
|
hdr_page.append(Spacer(1, 20))
|
|
156
|
-
hdr_page.append(Paragraph(f"<b>
|
|
179
|
+
hdr_page.append(Paragraph(f"<a name='{SUMMARY_HEADLINE}'/><b>{SUMMARY_HEADLINE}</b>", module_header))
|
|
157
180
|
hdr_page.append(Spacer(1, 20))
|
|
158
|
-
hdr_page.append(Paragraph("<u>
|
|
159
|
-
hdr_page.append(Paragraph(f"
|
|
160
|
-
hdr_page.append(Paragraph(f"
|
|
161
|
-
hdr_page.append(Paragraph(f"
|
|
181
|
+
hdr_page.append(Paragraph(f"<u>{RUN_INFO}:</u>", bold_text_style))
|
|
182
|
+
hdr_page.append(Paragraph(f"{RUN_DATETIME}: {start_time.strftime('%d/%m/%Y, %H:%M:%S')}", bold_text_style))
|
|
183
|
+
hdr_page.append(Paragraph(f"{RUN_DUR}: {str(duration).split('.')[0]}", bold_text_style))
|
|
184
|
+
hdr_page.append(Paragraph(f"{CERT_VER}: {CERT_VERSION}", bold_text_style))
|
|
162
185
|
hdr_page.append(Spacer(1, 10))
|
|
163
|
-
hdr_page.append(Paragraph("<u>Testing Device Info:</u>", bold_text_style))
|
|
164
|
-
if internal_brg:
|
|
165
|
-
hdr_page.append(Paragraph(f"BLE simulator mac: {internal_brg.id_str}", bold_text_style))
|
|
166
|
-
hdr_page.append(Paragraph(f"BLE simulator version: {internal_brg.version}", bold_text_style))
|
|
167
|
-
hdr_page.append(Paragraph(f"BLE simulator supported API version: {internal_brg.api_version}", bold_text_style))
|
|
168
|
-
hdr_page.append(Spacer(1, 10))
|
|
169
|
-
hdr_page.append(Paragraph("<u>Tested Device Info:</u>", bold_text_style))
|
|
170
186
|
if brg:
|
|
171
|
-
hdr_page.append(Paragraph(f"
|
|
172
|
-
hdr_page.append(Paragraph(f"
|
|
173
|
-
hdr_page.append(Paragraph(f"
|
|
174
|
-
hdr_page.append(Paragraph(f"
|
|
187
|
+
hdr_page.append(Paragraph(f"<u>{TESTED_DEVICE_INFO}:</u>", bold_text_style))
|
|
188
|
+
hdr_page.append(Paragraph(f"{BRG} {BLE_MAC_ADDRESS}: {brg.id_str}", bold_text_style))
|
|
189
|
+
hdr_page.append(Paragraph(f"{BRG} {BOARD_TYPE}: {ag.BOARD_TYPES_LIST[brg.board_type]}", bold_text_style))
|
|
190
|
+
hdr_page.append(Paragraph(f"{BRG} {BLE_VER}: {brg.version}", bold_text_style))
|
|
191
|
+
hdr_page.append(Paragraph(f"{BRG} {SUP_API_VER}: {brg.api_version}", bold_text_style))
|
|
192
|
+
hdr_page.append(Spacer(1, 10))
|
|
193
|
+
if internal_brg:
|
|
194
|
+
hdr_page.append(Paragraph(f"<u>{TESTING_DEVICE_INFO}:</u>", bold_text_style))
|
|
195
|
+
hdr_page.append(Paragraph(f"{SIM} {BLE_MAC_ADDRESS}: {internal_brg.id_str}", bold_text_style))
|
|
196
|
+
hdr_page.append(Paragraph(f"{SIM} {BOARD_TYPE}: {ag.BOARD_TYPES_LIST[internal_brg.board_type]}", bold_text_style))
|
|
197
|
+
hdr_page.append(Paragraph(f"{SIM} {BLE_VER}: {internal_brg.version}", bold_text_style))
|
|
198
|
+
hdr_page.append(Paragraph(f"{SIM} {SUP_API_VER}: {internal_brg.api_version}", bold_text_style))
|
|
175
199
|
hdr_page.append(Spacer(1, 20))
|
|
176
200
|
|
|
177
201
|
# Count Table
|
|
@@ -180,7 +204,7 @@ def generate_results_files(html=True, pdf=True, failures=0, skipped=0, start_tim
|
|
|
180
204
|
[len(tests)-(failures+skipped), skipped, failures, len(tests)]
|
|
181
205
|
]
|
|
182
206
|
count_table = Table(count_data)
|
|
183
|
-
count_table.setStyle(
|
|
207
|
+
count_table.setStyle(inner_table_style('CENTER'))
|
|
184
208
|
hdr_page.append(count_table)
|
|
185
209
|
hdr_page.append(Spacer(1, 20))
|
|
186
210
|
|
|
@@ -190,31 +214,33 @@ def generate_results_files(html=True, pdf=True, failures=0, skipped=0, start_tim
|
|
|
190
214
|
for module, test_results in results_per_module.items():
|
|
191
215
|
module_objects = []
|
|
192
216
|
module_skipped = True # Remains True if all tests are skipped
|
|
193
|
-
module_objects.append(Paragraph(f"<b>{module + ' Module' if module else
|
|
217
|
+
module_objects.append(Paragraph(f"<b>{module + ' Module' if not 'Edge' in module else module}</b>", module_header))
|
|
194
218
|
module_objects.append(Spacer(1, 20))
|
|
195
219
|
for test_result in test_results:
|
|
196
220
|
test_objects = []
|
|
197
|
-
name = Paragraph(f'<a href="#{test_result.name}">{test_result.name}</a>', centered_text_style) if not test_result.test_skipped else test_result.name
|
|
221
|
+
name = Paragraph(f'<a href="#{module}_{test_result.name}">{test_result.name}</a>', centered_text_style) if not test_result.test_skipped else test_result.name
|
|
198
222
|
summary_data += [[module, name, test_result.result, test_result.compliance]]
|
|
199
|
-
test_objects.append(Paragraph(f'<a name="{test_result.name}"/><a href="{test_result.kb_link}">{test_result.name}</a>', test_header))
|
|
200
|
-
test_objects.append(Spacer(1, 10))
|
|
201
|
-
test_objects.append(Paragraph(test_result.purpose, test_purpose))
|
|
223
|
+
test_objects.append(Paragraph(f'<a name="{module}_{test_result.name}"/><a href="{test_result.kb_link}">{test_result.name}</a>', test_header))
|
|
202
224
|
test_objects.append(Spacer(1, 10))
|
|
203
225
|
test_objects.append(test_result.result)
|
|
204
226
|
test_objects.append(Spacer(1, 10))
|
|
227
|
+
test_objects.append(Paragraph(test_result.purpose, test_purpose))
|
|
228
|
+
test_objects.append(Spacer(1, 10))
|
|
205
229
|
if not test_result.test_skipped:
|
|
206
230
|
module_skipped = False # Set to False if at least one test isn't skipped
|
|
207
231
|
test_objects.append(Paragraph(f"Tested devices: {test_result.devices}", bold_text_style))
|
|
208
232
|
test_objects.append(Paragraph(f"Test duration: {test_result.duration}", bold_text_style))
|
|
209
233
|
test_objects.append(Spacer(1, 10))
|
|
210
234
|
test_objects.append(test_result.test_table)
|
|
235
|
+
test_objects.append(Spacer(1, 10))
|
|
236
|
+
test_objects.append(Paragraph(f"<a href='#{SUMMARY_HEADLINE}'>Back to {SUMMARY_HEADLINE}</a>", bold_right_text_style))
|
|
211
237
|
test_objects.append(Spacer(1, 20))
|
|
212
238
|
module_objects.append(KeepTogether(test_objects))
|
|
213
239
|
if not module_skipped:
|
|
214
240
|
elements += module_objects
|
|
215
241
|
elements.append(PageBreak())
|
|
216
242
|
summary_table = Table([["Module", "Name", "Result", "Compliance"]] + summary_data)
|
|
217
|
-
summary_table.setStyle(
|
|
243
|
+
summary_table.setStyle(inner_table_style('LEFT'))
|
|
218
244
|
elements = hdr_page + [summary_table, PageBreak()] + elements
|
|
219
245
|
|
|
220
246
|
doc.build(elements)
|
|
@@ -297,18 +323,19 @@ HTML_END = """
|
|
|
297
323
|
# PDF
|
|
298
324
|
##################################
|
|
299
325
|
STYLES_PDF = {
|
|
300
|
-
"
|
|
326
|
+
"BLACK_HEADER": ParagraphStyle("Black Header", fontName="Helvetica-Bold", fontSize=20, textColor=colors.black, alignment=TA_CENTER),
|
|
301
327
|
"RED_HEADER": ParagraphStyle("Red Header", fontName="Helvetica-Bold", fontSize=20, textColor=colors.red, alignment=TA_CENTER),
|
|
302
328
|
"MODULE_HEADER": ParagraphStyle("Module Header", fontName="Helvetica-Bold", fontSize=16, textColor=colors.navy, alignment=TA_CENTER),
|
|
303
|
-
"TEST_HEADER": ParagraphStyle("Test Header", fontName="Helvetica-Bold", fontSize=12, textColor=colors.black, alignment=
|
|
304
|
-
"TEST_LINK_HEADER": ParagraphStyle('Test Link Header', fontName="Helvetica-Bold", fontSize=14, textColor=colors.blue,
|
|
305
|
-
"BLACK": ParagraphStyle("Black", fontName="Helvetica", fontSize=9, textColor=colors.black, splitLongWords=False, alignment=
|
|
329
|
+
"TEST_HEADER": ParagraphStyle("Test Header", fontName="Helvetica-Bold", fontSize=12, textColor=colors.black, alignment=TA_LEFT),
|
|
330
|
+
"TEST_LINK_HEADER": ParagraphStyle('Test Link Header', fontName="Helvetica-Bold", fontSize=14, textColor=colors.blue, alignment=TA_LEFT),
|
|
331
|
+
"BLACK": ParagraphStyle("Black", fontName="Helvetica", fontSize=9, textColor=colors.black, splitLongWords=False, alignment=TA_LEFT, wordWrap = 'CJK'),
|
|
306
332
|
"BLACK_BOLD": ParagraphStyle("Black Bold", fontName="Helvetica-Bold", fontSize=9, textColor=colors.black, splitLongWords=False, alignment=TA_LEFT, wordWrap = 'CJK'),
|
|
333
|
+
"BLUE_BOLD_RIGHT": ParagraphStyle("Black Bold", fontName="Helvetica-Bold", fontSize=9, textColor=colors.blue, splitLongWords=False, alignment=TA_RIGHT, wordWrap = 'CJK'),
|
|
307
334
|
"BLUE": ParagraphStyle("Blue", fontName="Helvetica-Bold", fontSize=9, textColor=colors.navy, splitLongWords=False, alignment=TA_CENTER),
|
|
308
|
-
"CYAN": ParagraphStyle("Cyan", fontName="Helvetica-Bold", fontSize=9, textColor=colors.cyan, splitLongWords=False, alignment=
|
|
309
|
-
"GREEN": ParagraphStyle("Green", fontName="Helvetica-Bold", fontSize=9, textColor=colors.green, splitLongWords=False, alignment=
|
|
310
|
-
"WARNING": ParagraphStyle("Warning", fontName="Helvetica-Bold", fontSize=9, textColor=colors.gold, splitLongWords=False, alignment=
|
|
311
|
-
"RED": ParagraphStyle("Red", fontName="Helvetica-Bold", fontSize=9, textColor=colors.red, splitLongWords=False, alignment=
|
|
335
|
+
"CYAN": ParagraphStyle("Cyan", fontName="Helvetica-Bold", fontSize=9, textColor=colors.cyan, splitLongWords=False, alignment=TA_LEFT),
|
|
336
|
+
"GREEN": ParagraphStyle("Green", fontName="Helvetica-Bold", fontSize=9, textColor=colors.green, splitLongWords=False, alignment=TA_LEFT),
|
|
337
|
+
"WARNING": ParagraphStyle("Warning", fontName="Helvetica-Bold", fontSize=9, textColor=colors.gold, splitLongWords=False, alignment=TA_LEFT),
|
|
338
|
+
"RED": ParagraphStyle("Red", fontName="Helvetica-Bold", fontSize=9, textColor=colors.red, splitLongWords=False, alignment=TA_LEFT),
|
|
312
339
|
}
|
|
313
340
|
def color_pdf(c, t):
|
|
314
341
|
style = STYLES_PDF.get(c, ParagraphStyle("Default"))
|
|
@@ -317,17 +344,17 @@ pdf_result_map = {TEST_FAILED: color_pdf("RED", "FAILED"), TEST_SKIPPED: color_p
|
|
|
317
344
|
TEST_PASSED: color_pdf("GREEN", "PASSED"), TEST_INIT: color_pdf("CYAN", "INIT")}
|
|
318
345
|
pass_or_fail_pdf = lambda obj : pdf_result_map[obj.rc]
|
|
319
346
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
347
|
+
inner_table_style = lambda align : TableStyle([
|
|
348
|
+
('BACKGROUND', (0, 0), (-1, 0), colors.grey),
|
|
349
|
+
('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
|
|
350
|
+
('ALIGN', (0, 0), (-1, -1), f'{align}'),
|
|
351
|
+
('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
|
|
352
|
+
('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
|
|
353
|
+
('FONTSIZE', (0, 0), (-1, 0), 9),
|
|
354
|
+
('BOTTOMPADDING', (0, 0), (-1, 0), 12),
|
|
355
|
+
('BACKGROUND', (0, 1), (-1, -1), colors.whitesmoke),
|
|
356
|
+
('WORDWRAP', (0, 0), (-1, -1), False),
|
|
357
|
+
])
|
|
331
358
|
|
|
332
359
|
def generate_results_per_module_for_pdf(tests=[]):
|
|
333
360
|
text_style = STYLES_PDF.get("BLACK", ParagraphStyle("Default"))
|
|
@@ -335,14 +362,14 @@ def generate_results_per_module_for_pdf(tests=[]):
|
|
|
335
362
|
for test in tests:
|
|
336
363
|
devices_to_print = (test.gw if not test.brg0 or test.gw_only else
|
|
337
364
|
(f"{test.brg0.id_str}\n{test.brg1.id_str}" if test.brg1 and test.multi_brg else test.brg0.id_str))
|
|
338
|
-
inner_table = [[Paragraph(phase.name, text_style), pass_or_fail_pdf(phase), Paragraph(phase.reason, text_style)] for phase in test.phases]
|
|
365
|
+
inner_table = [[Paragraph(param_name_to_title(phase.name), text_style), pass_or_fail_pdf(phase), Paragraph(phase.reason, text_style)] for phase in test.phases]
|
|
339
366
|
test_table = Table([["Phase", "Result", "Notes"]] + inner_table)
|
|
340
|
-
test_table.setStyle(
|
|
367
|
+
test_table.setStyle(inner_table_style('LEFT'))
|
|
341
368
|
compliance = "Mandatory" if test.test_json[MANDATORY] else "Optional"
|
|
342
|
-
test_result = TestResult(name=test.
|
|
369
|
+
test_result = TestResult(name=test.test_json[NAME], devices_to_print=devices_to_print, test_table=test_table, result=pass_or_fail_pdf(test),
|
|
343
370
|
duration=test.duration, purpose=str(test.test_json[PURPOSE]), compliance=compliance,
|
|
344
371
|
kb_link=test.test_json[DOCUMENTATION], test_skipped=(test.rc == TEST_SKIPPED))
|
|
345
|
-
module_name =
|
|
372
|
+
module_name = test.test_json[MODULE]
|
|
346
373
|
if module_name not in results_per_module:
|
|
347
374
|
results_per_module[module_name] = [test_result]
|
|
348
375
|
else:
|
brg_certificate/cert_utils.py
CHANGED
|
@@ -25,7 +25,7 @@ ORIGINAL_AG_FILE = "wlt_types_ag.py"
|
|
|
25
25
|
TEST_MODULES_MAP = {"calibration": ag.MODULE_CALIBRATION, "datapath": ag.MODULE_DATAPATH, "energy2400": ag.MODULE_ENERGY_2400, "energy_sub1g": ag.MODULE_ENERGY_SUB1G,
|
|
26
26
|
"pwr_mgmt": ag.MODULE_PWR_MGMT, "sensors": ag.MODULE_EXT_SENSORS, "custom": ag.MODULE_CUSTOM}
|
|
27
27
|
|
|
28
|
-
STATIC_RANDOM_ADDR_MASK =
|
|
28
|
+
STATIC_RANDOM_ADDR_MASK = 0xC00000000000
|
|
29
29
|
hex2alias_id_get = lambda id_str: cert_common.int2mac_get(int(id_str, 16) | STATIC_RANDOM_ADDR_MASK)
|
|
30
30
|
|
|
31
31
|
def module2name(module_id):
|
|
@@ -43,7 +43,7 @@ def load_module(module_name, module_path, rel_path="."):
|
|
|
43
43
|
def handle_error(error, start_time):
|
|
44
44
|
utPrint(error, "red")
|
|
45
45
|
duration = (datetime.datetime.now()-start_time)
|
|
46
|
-
cert_results.generate_results_files(html=True, pdf=
|
|
46
|
+
cert_results.generate_results_files(html=True, pdf=False, start_time=start_time, duration=duration, error=error, pipeline=cert_common.pipeline_running())
|
|
47
47
|
sys.exit(-1)
|
|
48
48
|
|
|
49
49
|
##################################
|
|
@@ -56,7 +56,12 @@ class WltTest:
|
|
|
56
56
|
if line:
|
|
57
57
|
test_list_line = line.strip().split()
|
|
58
58
|
self.name = test_list_line[0]
|
|
59
|
-
self.test_module =
|
|
59
|
+
self.test_module = ag.MODULE_EMPTY # Default test module
|
|
60
|
+
# Determine test's module
|
|
61
|
+
for s in self.name.split('/'):
|
|
62
|
+
if s in TEST_MODULES_MAP:
|
|
63
|
+
self.test_module = TEST_MODULES_MAP[s]
|
|
64
|
+
break
|
|
60
65
|
line_params = test_list_line[1:]
|
|
61
66
|
self.dir = os.path.join("tests", self.name)
|
|
62
67
|
self.module_name = os.path.join(os.path.basename(self.name))
|
|
@@ -80,6 +85,7 @@ class WltTest:
|
|
|
80
85
|
self.internal_brg_obj = internal_brg_obj
|
|
81
86
|
# Actual brg to cfg - can be brg0 or brg1
|
|
82
87
|
self.active_brg = brg0
|
|
88
|
+
self.ab = self.active_brg # alias name
|
|
83
89
|
self.brg0 = brg0
|
|
84
90
|
self.brg1 = brg1
|
|
85
91
|
self.rc = TEST_PASSED
|
|
@@ -227,6 +233,7 @@ class Bridge:
|
|
|
227
233
|
if module in TEST_MODULES_MAP:
|
|
228
234
|
self.sup_caps += [TEST_MODULES_MAP[module]]
|
|
229
235
|
self.modules += [eval_pkt(ag.MODULES_DICT[TEST_MODULES_MAP[module]] + str(self.api_version))]
|
|
236
|
+
setattr(self, module, eval_pkt(ag.MODULES_DICT[TEST_MODULES_MAP[module]] + str(self.api_version)))
|
|
230
237
|
|
|
231
238
|
def update_modules(self):
|
|
232
239
|
self.modules = []
|
|
@@ -269,9 +276,9 @@ def handle_prep_brg_for_latest(test, interface, start_time):
|
|
|
269
276
|
def ut_prep_brg(args, mqttc, start_time, gw, brg, gw_server, protobuf):
|
|
270
277
|
brg = Bridge(brg)
|
|
271
278
|
utPrint(SEP)
|
|
272
|
-
if not
|
|
279
|
+
if not cert_common.is_cert_running:
|
|
273
280
|
versions_mgmt = load_module('versions_mgmt.py', f'{UTILS_BASE_REL_PATH}/versions_mgmt.py')
|
|
274
|
-
brg_owner = versions_mgmt.gw_brg_owner(env=
|
|
281
|
+
brg_owner = versions_mgmt.gw_brg_owner(env=AWS, server=PROD, brg=brg.id_str)
|
|
275
282
|
if brg_owner and not brg_owner in r_codes:
|
|
276
283
|
print_warn(f"BRG {brg.id_str} owned by account {brg_owner}")
|
|
277
284
|
test = WltTest("", gw, mqttc, brg0=brg, gw_lan=args.lan, server=gw_server, exit_on_param_failure=args.exit_on_param_failure,
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# The certificate should run for every bridge change
|
|
2
|
-
# The setup will include 1 tested BRG + 1 GW connected with UART
|
|
3
|
-
#
|
|
2
|
+
# The setup will include 1 tested BRG with cloud connectivity + 1 GW connected with UART or remotely
|
|
3
|
+
# Run command example with COM PORT connection:
|
|
4
|
+
# python brg_certificate_cli.py --gw SIM --brg_cloud_connectivity <XXXXXXXXXXXX> --tl certificate_bcc_sanity_test_list.txt --data sim --port <COM_PORT>
|
|
5
|
+
# Run command example with remote GW connection:
|
|
6
|
+
# python brg_certificate_cli.py --gw <GWYYYYYYYYYYYY> --brg_cloud_connectivity <XXXXXXXXXXXX> --tl certificate_bcc_sanity_test_list.txt --data sim
|
|
4
7
|
|
|
5
8
|
# ------------- edge_mgmt -------------
|
|
6
|
-
edge_mgmt/
|
|
9
|
+
edge_mgmt/periodic_msgs_test
|
|
7
10
|
edge_mgmt/actions_test ACTION_GW_HB ACTION_BLINK ACTION_SEND_HB ACTION_GET_BATTERY_SENSOR ACTION_GET_POF_DATA ACTION_PL_STATUS ACTION_GET_MODULE ACTION_REBOOT ACTION_RESTORE_DEFAULTS
|
|
8
11
|
|
|
9
12
|
# ------------- energy2400 -------------
|
|
@@ -28,8 +31,10 @@ datapath/rx_channel_test RX_CHANNEL_37 RX_CHANNEL_38 RX_CHANNEL_10_250K RX_CHANN
|
|
|
28
31
|
datapath/aging_test low_pacer
|
|
29
32
|
datapath/num_of_tags_test 500
|
|
30
33
|
|
|
31
|
-
|
|
32
34
|
# ------------- calibration -------------
|
|
33
35
|
calibration/output_power_test -12 0 3
|
|
34
36
|
calibration/interval_test 1 25 50
|
|
35
|
-
calibration/pattern_test CALIBRATION_PATTERN_38_38_39 CALIBRATION_PATTERN_DISABLE_BEACON
|
|
37
|
+
calibration/pattern_test CALIBRATION_PATTERN_38_38_39 CALIBRATION_PATTERN_DISABLE_BEACON
|
|
38
|
+
|
|
39
|
+
# ------------- sensors -------------
|
|
40
|
+
sensors/ext_sensor_test tag_data_only rssi_threshold snsr0_scrmbl_snsr1_no_scrmbl
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
# The certificate should run for every bridge change
|
|
2
|
-
# The setup will include 1 tested BRG + 1 GW connected with UART
|
|
3
|
-
# Run command example:
|
|
4
|
-
# python
|
|
5
|
-
|
|
6
|
-
#
|
|
7
|
-
ut/pwr_mgmt/pwr_mgmt_test
|
|
2
|
+
# The setup will include 1 tested BRG with cloud connectivity + 1 GW connected with UART or remotely
|
|
3
|
+
# Run command example with COM PORT connection:
|
|
4
|
+
# python brg_certificate_cli.py --gw SIM --brg_cloud_connectivity <XXXXXXXXXXXX> --tl certificate_bcc_test_list.txt --data sim --port <COM_PORT>
|
|
5
|
+
# Run command example with remote GW connection:
|
|
6
|
+
# python brg_certificate_cli.py --gw <GWYYYYYYYYYYYY> --brg_cloud_connectivity <XXXXXXXXXXXX> --tl certificate_bcc_test_list.txt --data sim
|
|
8
7
|
|
|
9
8
|
# ------------- edge_mgmt -------------
|
|
10
|
-
edge_mgmt/
|
|
9
|
+
edge_mgmt/periodic_msgs_test
|
|
11
10
|
edge_mgmt/actions_test ACTION_GW_HB ACTION_BLINK ACTION_SEND_HB ACTION_GET_BATTERY_SENSOR ACTION_GET_POF_DATA ACTION_PL_STATUS ACTION_GET_MODULE ACTION_REBOOT ACTION_RESTORE_DEFAULTS
|
|
12
11
|
|
|
13
12
|
# ------------- energy2400 -------------
|
|
@@ -15,8 +14,8 @@ energy2400/pattern_test ENERGY_PATTERN_2_4_NO_ENERGIZING ENERGY_PATTERN_2_4_CHAN
|
|
|
15
14
|
energy2400/output_power_test -12 -8 -4 0 2 3
|
|
16
15
|
energy2400/duty_cycle_test 1 25 50 75
|
|
17
16
|
energy2400/signal_indicator_test internal_brg rssi_threshold brg0_rx_brg1_tx brg0_none_brg1_rx brg0_rxtx_brg1_rxtx brg0_tx_brg1_none
|
|
18
|
-
energy2400/signal_indicator_ble5_10_500k_test internal_brg rssi_threshold
|
|
19
|
-
energy2400/signal_indicator_ble5_10_250k_test internal_brg rssi_threshold
|
|
17
|
+
energy2400/signal_indicator_ble5_10_500k_test internal_brg rssi_threshold brg0_tx_brg1_rx brg0_none_brg1_rx brg0_rxtx_brg1_rxtx brg0_tx_brg1_none
|
|
18
|
+
energy2400/signal_indicator_ble5_10_250k_test internal_brg rssi_threshold brg0_tx_brg1_rx brg0_none_brg1_rx brg0_rxtx_brg1_rxtx brg0_tx_brg1_none
|
|
20
19
|
|
|
21
20
|
# ------------- energy_sub1g -------------
|
|
22
21
|
energy_sub1g/pattern_test SUB1G_ENERGY_PATTERN_NO_ENERGIZING SUB1G_ENERGY_PATTERN_SINGLE_TONE_915000 SUB1G_ENERGY_PATTERN_FCC_HOPPING SUB1G_ENERGY_PATTERN_SINGLE_TONE_917500 SUB1G_ENERGY_PATTERN_NZ_HOPPING
|
|
@@ -32,14 +31,20 @@ datapath/pacer_interval_ble5_test 5 15 30 60
|
|
|
32
31
|
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
|
|
33
32
|
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
|
|
34
33
|
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
|
|
35
|
-
|
|
34
|
+
datapath/rx_channel_test RX_CHANNEL_37 RX_CHANNEL_38 RX_CHANNEL_39 RX_CHANNEL_10_250K RX_CHANNEL_10_500K
|
|
36
35
|
datapath/rx_rate_gen2_test mid_values diff_pacer min_value max_value diff_rate
|
|
37
36
|
datapath/rx_rate_gen3_test mid_values diff_pacer min_value max_value diff_rate
|
|
38
|
-
datapath/aging_test low_pacer high_pacer
|
|
39
37
|
datapath/pacer_interval_tags_count_test 1 10 15 30
|
|
38
|
+
datapath/aging_test low_pacer high_pacer
|
|
40
39
|
datapath/num_of_tags_test 5000
|
|
41
40
|
|
|
41
|
+
# ------------- pwr_mgmt -------------
|
|
42
|
+
pwr_mgmt/pwr_mgmt_test
|
|
43
|
+
|
|
42
44
|
# ------------- calibration -------------
|
|
43
45
|
calibration/output_power_test -12 -8 -4 0 2 3
|
|
44
46
|
calibration/interval_test 1 25 50
|
|
45
47
|
calibration/pattern_test CALIBRATION_PATTERN_38_38_39 CALIBRATION_PATTERN_STANDARD CALIBRATION_PATTERN_EU_PATTERN CALIBRATION_PATTERN_DISABLE_BEACON
|
|
48
|
+
|
|
49
|
+
# ------------- sensors -------------
|
|
50
|
+
sensors/ext_sensor_test tag_data_only rssi_threshold snsr0_no_scrmbl snsr1_scrmbl snsr0_scrmbl_snsr1_no_scrmbl snsr0_scrmbl_snsr1_scrmbl
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# The certificate should run for every bridge change
|
|
2
|
-
# The setup will include 1 tested BRG + 1 GW connected with UART
|
|
3
|
-
#
|
|
2
|
+
# The setup will include 1 tested BRG + 1 GW connected with UART or remotely
|
|
3
|
+
# Run command example with COM PORT connection:
|
|
4
|
+
# python brg_certificate_cli.py --gw SIM --brg <XXXXXXXXXXXX> --tl certificate_sanity_test_list.txt --data sim --port <COM_PORT>
|
|
5
|
+
# Run command example with remote GW connection:
|
|
6
|
+
# python brg_certificate_cli.py --gw <GWYYYYYYYYYYYY> --brg <XXXXXXXXXXXX> --tl certificate_sanity_test_list.txt --data sim
|
|
4
7
|
|
|
5
8
|
# ------------- edge_mgmt -------------
|
|
6
|
-
edge_mgmt/
|
|
9
|
+
edge_mgmt/periodic_msgs_test
|
|
7
10
|
edge_mgmt/actions_test ACTION_GW_HB ACTION_BLINK ACTION_SEND_HB ACTION_GET_BATTERY_SENSOR ACTION_GET_POF_DATA ACTION_PL_STATUS ACTION_GET_MODULE ACTION_REBOOT ACTION_RESTORE_DEFAULTS
|
|
8
11
|
|
|
9
12
|
# ------------- energy2400 -------------
|
|
@@ -34,4 +37,7 @@ datapath/num_of_tags_test 500
|
|
|
34
37
|
# ------------- calibration -------------
|
|
35
38
|
calibration/output_power_test -12 0 3
|
|
36
39
|
calibration/interval_test 1 25 50
|
|
37
|
-
calibration/pattern_test CALIBRATION_PATTERN_38_38_39 CALIBRATION_PATTERN_DISABLE_BEACON
|
|
40
|
+
calibration/pattern_test CALIBRATION_PATTERN_38_38_39 CALIBRATION_PATTERN_DISABLE_BEACON
|
|
41
|
+
|
|
42
|
+
# ------------- sensors -------------
|
|
43
|
+
sensors/ext_sensor_test tag_data_only rssi_threshold snsr0_scrmbl_snsr1_no_scrmbl
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
# The certificate should run for every bridge change
|
|
2
|
-
# The setup will include 1 tested BRG + 1 GW connected with UART
|
|
3
|
-
# Run command example:
|
|
4
|
-
# python
|
|
5
|
-
|
|
6
|
-
#
|
|
7
|
-
ut/pwr_mgmt/pwr_mgmt_test
|
|
2
|
+
# The setup will include 1 tested BRG + 1 GW connected with UART or remotely
|
|
3
|
+
# Run command example with COM PORT connection:
|
|
4
|
+
# python brg_certificate_cli.py --gw SIM --brg <XXXXXXXXXXXX> --tl certificate_test_list.txt --data sim --port <COM_PORT>
|
|
5
|
+
# Run command example with remote GW connection:
|
|
6
|
+
# python brg_certificate_cli.py --gw <GWYYYYYYYYYYYY> --brg <XXXXXXXXXXXX> --tl certificate_test_list.txt --data sim
|
|
8
7
|
|
|
9
8
|
# ------------- edge_mgmt -------------
|
|
10
|
-
edge_mgmt/
|
|
9
|
+
edge_mgmt/periodic_msgs_test
|
|
11
10
|
edge_mgmt/actions_test ACTION_GW_HB ACTION_BLINK ACTION_SEND_HB ACTION_GET_BATTERY_SENSOR ACTION_GET_POF_DATA ACTION_PL_STATUS ACTION_GET_MODULE ACTION_REBOOT ACTION_RESTORE_DEFAULTS
|
|
12
11
|
|
|
13
12
|
# ------------- energy2400 -------------
|
|
@@ -15,8 +14,8 @@ energy2400/pattern_test ENERGY_PATTERN_2_4_NO_ENERGIZING ENERGY_PATTERN_2_4_CHAN
|
|
|
15
14
|
energy2400/output_power_test -12 -8 -4 0 2 3
|
|
16
15
|
energy2400/duty_cycle_test 1 25 50 75
|
|
17
16
|
energy2400/signal_indicator_test internal_brg rssi_threshold brg0_rx_brg1_tx brg0_none_brg1_rx brg0_rxtx_brg1_rxtx brg0_tx_brg1_none
|
|
18
|
-
energy2400/signal_indicator_ble5_10_500k_test internal_brg rssi_threshold
|
|
19
|
-
energy2400/signal_indicator_ble5_10_250k_test internal_brg rssi_threshold
|
|
17
|
+
energy2400/signal_indicator_ble5_10_500k_test internal_brg rssi_threshold brg0_tx_brg1_rx brg0_none_brg1_rx brg0_tx_brg1_none
|
|
18
|
+
energy2400/signal_indicator_ble5_10_250k_test internal_brg rssi_threshold brg0_tx_brg1_rx brg0_none_brg1_rx brg0_tx_brg1_none
|
|
20
19
|
|
|
21
20
|
# ------------- energy_sub1g -------------
|
|
22
21
|
energy_sub1g/pattern_test SUB1G_ENERGY_PATTERN_NO_ENERGIZING SUB1G_ENERGY_PATTERN_SINGLE_TONE_915000 SUB1G_ENERGY_PATTERN_FCC_HOPPING SUB1G_ENERGY_PATTERN_SINGLE_TONE_917500 SUB1G_ENERGY_PATTERN_NZ_HOPPING
|
|
@@ -33,7 +32,7 @@ datapath/pacer_interval_ble5_test 5 15 30 60
|
|
|
33
32
|
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
|
|
34
33
|
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
|
|
35
34
|
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
|
|
36
|
-
|
|
35
|
+
datapath/rx_channel_test RX_CHANNEL_37 RX_CHANNEL_38 RX_CHANNEL_39 RX_CHANNEL_10_250K RX_CHANNEL_10_500K
|
|
37
36
|
datapath/rx_rate_gen2_test mid_values diff_pacer min_value max_value diff_rate
|
|
38
37
|
datapath/rx_rate_gen3_test mid_values diff_pacer min_value max_value diff_rate
|
|
39
38
|
datapath/pacer_interval_tags_count_test 1 10 15 30
|
|
@@ -42,8 +41,13 @@ datapath/stress_gen3_test rep3 rep2 rep1 rep1_adaptive_pacer pixel_burst
|
|
|
42
41
|
datapath/aging_test low_pacer high_pacer
|
|
43
42
|
datapath/num_of_tags_test 5000
|
|
44
43
|
|
|
44
|
+
# ------------- pwr_mgmt -------------
|
|
45
|
+
pwr_mgmt/pwr_mgmt_test
|
|
45
46
|
|
|
46
47
|
# ------------- calibration -------------
|
|
47
48
|
calibration/output_power_test -12 -8 -4 0 2 3
|
|
48
49
|
calibration/interval_test 1 25 50
|
|
49
50
|
calibration/pattern_test CALIBRATION_PATTERN_38_38_39 CALIBRATION_PATTERN_STANDARD CALIBRATION_PATTERN_EU_PATTERN CALIBRATION_PATTERN_DISABLE_BEACON
|
|
51
|
+
|
|
52
|
+
# ------------- sensors -------------
|
|
53
|
+
sensors/ext_sensor_test tag_data_only rssi_threshold snsr0_no_scrmbl snsr1_scrmbl snsr0_scrmbl_snsr1_no_scrmbl snsr0_scrmbl_snsr1_scrmbl
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"module": "
|
|
2
|
+
"name": "Interval",
|
|
3
|
+
"module": "Calibration",
|
|
4
4
|
"purpose": "Test configuration for all supported calibration interval values",
|
|
5
5
|
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Calibration-Module",
|
|
6
6
|
"initialCondition": "Bridge configured to defaults",
|
|
@@ -8,7 +8,7 @@ import brg_certificate.cert_config as cert_config
|
|
|
8
8
|
def run(test):
|
|
9
9
|
|
|
10
10
|
fields = [BRG_CALIB_INTERVAL]
|
|
11
|
-
calib_module =
|
|
11
|
+
calib_module = test.active_brg.calibration
|
|
12
12
|
|
|
13
13
|
test = cert_common.test_prolog(test)
|
|
14
14
|
if test.rc == TEST_FAILED:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"module": "
|
|
2
|
+
"name": "Output Power",
|
|
3
|
+
"module": "Calibration",
|
|
4
4
|
"purpose": "Test configuration for all supported calibration output power values",
|
|
5
5
|
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Calibration-Module",
|
|
6
6
|
"initialCondition": "Bridge configured to defaults",
|
|
@@ -11,5 +11,6 @@
|
|
|
11
11
|
"mandatory": 1,
|
|
12
12
|
"multiBridgeTest": 0,
|
|
13
13
|
"gwOnlyTest": 0,
|
|
14
|
+
"internalBridge": 1,
|
|
14
15
|
"allSupportedValues": [-12, -8, -4, 0, 2, 3]
|
|
15
16
|
}
|
|
@@ -8,7 +8,7 @@ import brg_certificate.cert_config as cert_config
|
|
|
8
8
|
def run(test):
|
|
9
9
|
|
|
10
10
|
fields = [BRG_OUTPUT_POWER]
|
|
11
|
-
calib_module =
|
|
11
|
+
calib_module = test.active_brg.calibration
|
|
12
12
|
|
|
13
13
|
test = cert_common.test_prolog(test)
|
|
14
14
|
if test.rc == TEST_FAILED:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"module": "
|
|
2
|
+
"name": "Pattern",
|
|
3
|
+
"module": "Calibration",
|
|
4
4
|
"purpose": "Test configuration for all supported calibration pattern values",
|
|
5
5
|
"documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Calibration-Module",
|
|
6
6
|
"initialCondition": "Bridge configured to defaults",
|