diff --git a/.gitignore b/.gitignore index dee43f70b..9cc9c2668 100644 --- a/.gitignore +++ b/.gitignore @@ -105,3 +105,146 @@ venv.bak/ # doc generation doc/source/_static/logos +adjacent_loopback_by_channel.png +combined_loopback_by_channel.png +install_libiio.sh +install_libiio.sh.1 +progress.html +progress2.html +report_007.pdf +report.html +SN7 Test Report 2.html +SN7 Test Report 2.pdf +SN7 Test Report 3.pdf +SN7 Test Report.pdf +test_triton_cal.json +test_triton.json +test.html +testfig.png +testfig2.png +testfig3.png +testfig4.png +testfig5.png +triton_cal_plots.py +tritonsn7_2.html +tritonsn7.html +assets/style.css +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_0_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_1_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_2_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_3_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_4_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_5_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_6_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_7_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_8_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_9_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_10_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_11_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_12_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_13_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_14_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set0_50000000_0.9__25_5_15_channel_15_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_0_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_1_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_2_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_3_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_4_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_5_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_6_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_7_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_8_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_9_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_10_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_11_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_12_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_13_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_14_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set1_50000000_0.9__25_5_15_channel_15_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_0_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_1_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_2_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_3_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_4_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_5_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_6_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_7_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_8_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_9_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_10_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_11_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_12_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_13_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_14_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set2_50000000_0.9__25_5_15_channel_15_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_0_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_1_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_2_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_3_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_4_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_5_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_6_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_7_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_8_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_9_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_10_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_11_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_12_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_13_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_14_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set3_50000000_0.9__20_5_15_channel_15_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_0_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_1_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_2_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_3_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_4_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_5_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_6_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_7_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_8_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_9_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_10_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_11_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_12_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_13_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_14_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set4_50000000_0.9__30_11_9_channel_15_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_0_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_1_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_2_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_3_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_4_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_5_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_6_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_7_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_8_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_9_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_10_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_11_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_12_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_13_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_14_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_dds_loopback_param_set5_50000000_0.9__50_5_15_channel_15_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_0_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_1_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_2_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_3_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_4_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_5_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_6_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_7_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_8_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_9_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_10_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_11_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_12_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_13_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_14_adi.Triton__0_0.png +assets/test_test_triton.py__test_Triton_sfdr_50_param_set0_5_15_channel_15_adi.Triton__0_0.png +test/html_to_pdf.py +testResults/SN10/testResultsSN10.html +testResults/SN10/SFDR_Test_SN10.png +testResults/SN10/Loopback_Sweep_SN10.png +testResults/SN10/Filter_Test_2_SN10.png +testResults/SN10/Filter_Test_1_SN10.png +testResults/SN10/DSA_Test_SN10.png diff --git a/=0.0.18 b/=0.0.18 new file mode 100644 index 000000000..92b2d21d7 --- /dev/null +++ b/=0.0.18 @@ -0,0 +1,11 @@ +Requirement already satisfied: pytest-libiio in ./venv/lib/python3.10/site-packages (0.0.18) +Requirement already satisfied: click in ./venv/lib/python3.10/site-packages (from pytest-libiio) (8.1.7) +Requirement already satisfied: lxml in ./venv/lib/python3.10/site-packages (from pytest-libiio) (5.2.2) +Requirement already satisfied: pylibiio>=0.23.1 in ./venv/lib/python3.10/site-packages (from pytest-libiio) (0.23.1) +Requirement already satisfied: pytest>=3.5.0 in ./venv/lib/python3.10/site-packages (from pytest-libiio) (8.2.2) +Requirement already satisfied: pyyaml in ./venv/lib/python3.10/site-packages (from pytest-libiio) (6.0.1) +Requirement already satisfied: exceptiongroup>=1.0.0rc8 in ./venv/lib/python3.10/site-packages (from pytest>=3.5.0->pytest-libiio) (1.2.1) +Requirement already satisfied: tomli>=1 in ./venv/lib/python3.10/site-packages (from pytest>=3.5.0->pytest-libiio) (2.0.1) +Requirement already satisfied: iniconfig in ./venv/lib/python3.10/site-packages (from pytest>=3.5.0->pytest-libiio) (2.0.0) +Requirement already satisfied: pluggy<2.0,>=1.5 in ./venv/lib/python3.10/site-packages (from pytest>=3.5.0->pytest-libiio) (1.5.0) +Requirement already satisfied: packaging in ./venv/lib/python3.10/site-packages (from pytest>=3.5.0->pytest-libiio) (24.1) diff --git a/=1.20 b/=1.20 new file mode 100644 index 000000000..78a1cc5ba --- /dev/null +++ b/=1.20 @@ -0,0 +1 @@ +Requirement already satisfied: numpy in ./venv/lib/python3.10/site-packages (2.0.0) diff --git a/=4.6 b/=4.6 new file mode 100644 index 000000000..350e76ab1 --- /dev/null +++ b/=4.6 @@ -0,0 +1,6 @@ +Requirement already satisfied: pytest in ./venv/lib/python3.10/site-packages (8.2.2) +Requirement already satisfied: exceptiongroup>=1.0.0rc8 in ./venv/lib/python3.10/site-packages (from pytest) (1.2.1) +Requirement already satisfied: packaging in ./venv/lib/python3.10/site-packages (from pytest) (24.1) +Requirement already satisfied: iniconfig in ./venv/lib/python3.10/site-packages (from pytest) (2.0.0) +Requirement already satisfied: tomli>=1 in ./venv/lib/python3.10/site-packages (from pytest) (2.0.1) +Requirement already satisfied: pluggy<2.0,>=1.5 in ./venv/lib/python3.10/site-packages (from pytest) (1.5.0) diff --git a/assets/style.css b/assets/style.css index 3edac88ee..561524c69 100644 --- a/assets/style.css +++ b/assets/style.css @@ -33,11 +33,16 @@ table { ******************************/ #environment td { padding: 5px; - border: 1px solid #E6E6E6; + border: 1px solid #e6e6e6; + vertical-align: top; } #environment tr:nth-child(odd) { background-color: #f6f6f6; } +#environment ul { + margin: 0; + padding: 0 20px; +} /****************************** * TEST RESULT COLORS @@ -65,6 +70,10 @@ span.xpassed, color: red; } +.col-links__extra { + margin-right: 3px; +} + /****************************** * RESULTS TABLE * @@ -85,7 +94,7 @@ span.xpassed, #results-table th, #results-table td { padding: 5px; - border: 1px solid #E6E6E6; + border: 1px solid #e6e6e6; text-align: left; } #results-table th { @@ -95,63 +104,133 @@ span.xpassed, /*------------------ * 2. Extra *------------------*/ -.log { +.logwrapper { + max-height: 230px; + overflow-y: scroll; background-color: #e6e6e6; +} +.logwrapper.expanded { + max-height: none; +} +.logwrapper.expanded .logexpander:after { + content: "collapse [-]"; +} +.logwrapper .logexpander { + z-index: 1; + position: sticky; + top: 10px; + width: max-content; + border: 1px solid; + border-radius: 3px; + padding: 5px 7px; + margin: 10px 0 10px calc(100% - 80px); + cursor: pointer; + background-color: #e6e6e6; +} +.logwrapper .logexpander:after { + content: "expand [+]"; +} +.logwrapper .logexpander:hover { + color: #000; + border-color: #000; +} +.logwrapper .log { + min-height: 40px; + position: relative; + top: -50px; + height: calc(100% + 50px); border: 1px solid #e6e6e6; color: black; display: block; font-family: "Courier New", Courier, monospace; - height: 230px; - overflow-y: scroll; padding: 5px; + padding-right: 80px; white-space: pre-wrap; } -.log:only-child { - height: inherit; -} -div.image { +div.media { border: 1px solid #e6e6e6; float: right; height: 240px; - margin-left: 5px; + margin: 0 5px; overflow: hidden; width: 320px; } -div.image img { - width: 320px; -} -div.video { - border: 1px solid #e6e6e6; - float: right; - height: 240px; - margin-left: 5px; +.media-container { + display: grid; + grid-template-columns: 25px auto 25px; + align-items: center; + flex: 1 1; overflow: hidden; - width: 320px; + height: 200px; } -div.video video { - overflow: hidden; - width: 320px; - height: 240px; + +.media-container--fullscreen { + grid-template-columns: 0px auto 0px; } -.collapsed { - display: none; +.media-container__nav--right, +.media-container__nav--left { + text-align: center; + cursor: pointer; } -.expander::after { - content: " (show details)"; - color: #BBB; +.media-container__viewport { + cursor: pointer; + text-align: center; + height: inherit; +} +.media-container__viewport img, +.media-container__viewport video { + object-fit: cover; + width: 100%; + max-height: 100%; +} + +.media__name, +.media__counter { + display: flex; + flex-direction: row; + justify-content: space-around; + flex: 0 0 25px; + align-items: center; +} + +.collapsible td:not(.col-links) { + cursor: pointer; +} +.collapsible td:not(.col-links):hover::after { + color: #bbb; font-style: italic; cursor: pointer; } -.collapser::after { +.col-result { + width: 130px; +} +.col-result:hover::after { + content: " (hide details)"; +} + +.col-result.collapsed:hover::after { + content: " (show details)"; +} + +#environment-header h2:hover::after { content: " (hide details)"; - color: #BBB; + color: #bbb; font-style: italic; cursor: pointer; + font-size: 12px; +} + +#environment-header.collapsed h2:hover::after { + content: " (show details)"; + color: #bbb; + font-style: italic; + cursor: pointer; + font-size: 12px; } /*------------------ @@ -160,27 +239,81 @@ div.video video { .sortable { cursor: pointer; } +.sortable.desc:after { + content: " "; + position: relative; + left: 5px; + bottom: -12.5px; + border: 10px solid #4caf50; + border-bottom: 0; + border-left-color: transparent; + border-right-color: transparent; +} +.sortable.asc:after { + content: " "; + position: relative; + left: 5px; + bottom: 12.5px; + border: 10px solid #4caf50; + border-top: 0; + border-left-color: transparent; + border-right-color: transparent; +} + +.hidden, .summary__reload__button.hidden { + display: none; +} + +.summary__data { + flex: 0 0 550px; +} +.summary__reload { + flex: 1 1; + display: flex; + justify-content: center; +} +.summary__reload__button { + flex: 0 0 300px; + display: flex; + color: white; + font-weight: bold; + background-color: #4caf50; + text-align: center; + justify-content: center; + align-items: center; + border-radius: 3px; + cursor: pointer; +} +.summary__reload__button:hover { + background-color: #46a049; +} +.summary__spacer { + flex: 0 0 550px; +} + +.controls { + display: flex; + justify-content: space-between; +} + +.filters, +.collapse { + display: flex; + align-items: center; +} +.filters button, +.collapse button { + color: #999; + border: none; + background: none; + cursor: pointer; + text-decoration: underline; +} +.filters button:hover, +.collapse button:hover { + color: #ccc; +} -.sort-icon { - font-size: 0px; - float: left; - margin-right: 5px; - margin-top: 5px; - /*triangle*/ - width: 0; - height: 0; - border-left: 8px solid transparent; - border-right: 8px solid transparent; -} -.inactive .sort-icon { - /*finish triangle*/ - border-top: 8px solid #E6E6E6; -} -.asc.active .sort-icon { - /*finish triangle*/ - border-bottom: 8px solid #999; -} -.desc.active .sort-icon { - /*finish triangle*/ - border-top: 8px solid #999; +.filter__label { + margin-right: 10px; } diff --git a/dummy_test.html b/dummy_test.html deleted file mode 100644 index 025727616..000000000 --- a/dummy_test.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - pyadi-iio Test Report - - - -

pyadi-iio Test Report

-

Report generated on 10-May-2024 at 11:56:32 by pytest-html v3.2.0

-

Summary

-

This is a custom report summary


-

2 tests ran in 0.05 seconds.

- 2 passed, 0 skipped, 0 failed, 0 errors, 0 expected failures, 0 unexpected passes<div>random_test</div> - <img src='C:/ADI/Triton/pyadi-iio/adjacent.png'> - <img src='C:/ADI/Triton/pyadi-iio/combined.png'> -

Results

- - - - - - - - - - - - - - - - - - - - - - - - -
ResultTestDurationLinks
Passedtest/test_dummy.py::test_history0.00
-
1234
-
No log output captured.
Passedtest/test_dummy.py::test_history20.00
-
[5678, 1234]
-
No log output captured.
\ No newline at end of file diff --git a/here.html b/here.html deleted file mode 100644 index 90c7f74f5..000000000 --- a/here.html +++ /dev/null @@ -1,506 +0,0 @@ - - - - - pyadi-iio Test Report - - - -

pyadi-iio Test Report

-

Report generated on 27-Feb-2024 at 14:49:16 by pytest-html v3.2.0

-

Summary

-

17 tests ran in 175.48 seconds.

- 15 passed, 0 skipped, 2 failed, 0 errors, 0 expected failures, 0 unexpected passes -

Results

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ResultTestDurationLinks
Failedtest/test_triton.py::test_current_postboot13.20
-
No log output captured.
Failedtest/test_triton.py::test_voltage_postboot12.02
-
No log output captured.
Passedtest/test_triton.py::test_iio_attr0.14
-
No log output captured.
Passedtest/test_triton.py::test_Triton_dds_loopback[param_set0-50000000-0.9--25-5-15-channel:0-adi.Triton]10.64
-
- - -
- -
-
No log output captured.
Passedtest/test_triton.py::test_Triton_dds_loopback[param_set0-50000000-0.9--25-5-15-channel:1-adi.Triton]9.67
-
- - -
- -
-
No log output captured.
Passedtest/test_triton.py::test_Triton_dds_loopback[param_set1-50000000-0.9--25-5-15-channel:0-adi.Triton]9.70
-
- - -
- -
-
No log output captured.
Passedtest/test_triton.py::test_Triton_dds_loopback[param_set1-50000000-0.9--25-5-15-channel:1-adi.Triton]9.77
-
- - -
- -
-
No log output captured.
Passedtest/test_triton.py::test_Triton_dds_loopback[param_set2-50000000-0.9--25-5-15-channel:0-adi.Triton]9.59
-
- - -
- -
-
No log output captured.
Passedtest/test_triton.py::test_Triton_dds_loopback[param_set2-50000000-0.9--25-5-15-channel:1-adi.Triton]9.72
-
- - -
- -
-
No log output captured.
Passedtest/test_triton.py::test_Triton_dds_loopback[param_set3-50000000-0.9--20-5-15-channel:0-adi.Triton]9.59
-
- - -
- -
-
No log output captured.
Passedtest/test_triton.py::test_Triton_dds_loopback[param_set3-50000000-0.9--20-5-15-channel:1-adi.Triton]9.68
-
- - -
- -
-
No log output captured.
Passedtest/test_triton.py::test_Triton_dds_loopback[param_set4-50000000-0.9--30-11-9-channel:0-adi.Triton]9.63
-
- - -
- -
-
No log output captured.
Passedtest/test_triton.py::test_Triton_dds_loopback[param_set4-50000000-0.9--30-11-9-channel:1-adi.Triton]9.63
-
- - -
- -
-
No log output captured.
Passedtest/test_triton.py::test_Triton_dds_loopback[param_set5-50000000-0.9--50-5-15-channel:0-adi.Triton]9.75
-
- - -
- -
-
No log output captured.
Passedtest/test_triton.py::test_Triton_dds_loopback[param_set5-50000000-0.9--50-5-15-channel:1-adi.Triton]9.68
-
- - -
- -
-
No log output captured.
Passedtest/test_triton.py::test_Triton_sfdr[60-param_set0-5-15-channel:0-adi.Triton]15.97
-
- - -
- -
-
No log output captured.
Passedtest/test_triton.py::test_Triton_sfdr[60-param_set0-5-15-channel:1-adi.Triton]16.04
-
- - -
- -
-
No log output captured.
\ No newline at end of file diff --git a/libiio/libiio b/libiio/libiio new file mode 160000 index 000000000..b6028fdee --- /dev/null +++ b/libiio/libiio @@ -0,0 +1 @@ +Subproject commit b6028fdeef888ab45f7c1dd6e4ed9480ae4b55e3 diff --git a/report.html b/report.html deleted file mode 100644 index 267582e19..000000000 --- a/report.html +++ /dev/null @@ -1,770 +0,0 @@ - - - - - pyadi-iio Test Report - - - -

pyadi-iio Test Report

-

Report generated on 01-Feb-2024 at 13:36:31 by pytest-html - v4.1.1

-
-

Environment

-
-
- - - - - -
-
-

Summary

-
-
-

7 tests took 00:00:60.

-

(Un)check the boxes to filter the results.

-
- -
-
-
-
- - 0 Failed, - - 7 Passed, - - 0 Skipped, - - 0 Expected failures, - - 0 Unexpected passes, - - 0 Errors, - - 0 Reruns -
-
-  /  -
-
-
-
-
-
-
-
- - - - - - - - - -
ResultTestDurationLinks
- - - \ No newline at end of file diff --git a/test/conftest.py b/test/conftest.py index caf160fd9..9e57bf92e 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -13,8 +13,8 @@ from test.dma_tests import * from test.generics import iio_attribute_single_value from test.globals import * -# from test.html import pytest_html_report_title, pytest_runtest_makereport, pytest_html_results_table_header, generate_header_with_image, image_to_base64 -from test.html import pytest_runtest_makereport, pytest_html_results_summary, pytest_html_report_title +from test.html import pytest_html_report_title, pytest_html_results_summary, pytest_runtest_makereport + import adi import numpy as np import pytest diff --git a/test/dma_tests.py b/test/dma_tests.py index 501655f08..0ae57d500 100644 --- a/test/dma_tests.py +++ b/test/dma_tests.py @@ -7,6 +7,8 @@ import pytest from numpy.fft import fft, fftfreq, fftshift from scipy import signal +# from signal import signal, SIGPIPE, SIG_DFL + try: from .plot_logger import gen_line_plot_html @@ -243,6 +245,7 @@ def dds_loopback( peak_min, use_obs=False, use_rx2=False, + tone_peak_values=None ): """dds_loopback: Test DDS loopback with connected loopback cables. This test requires a devices with TX and RX onboard where the transmit @@ -269,6 +272,10 @@ def dds_loopback( Minimum acceptable value of maximum peak in dBFS of received tone """ + + if tone_peak_values is None: + tone_peak_values = [] + # See if we can tone using DMAs sdr = eval(classname + "(uri='" + uri + "')") # Set custom device parameters @@ -314,6 +321,9 @@ def dds_loopback( s = "Peak: " + str(tone_peaks[indx]) + "@" + str(tone_freqs[indx]) print(s) + tone_peak_values.append(tone_peaks[indx]) + + if do_html_log: pytest.data_log = { "html": gen_line_plot_html( @@ -325,9 +335,12 @@ def dds_loopback( ) } + assert (frequency * 0.01) > diff assert tone_peaks[indx] > peak_min + return tone_peak_values + def dds_two_tone( uri, @@ -633,7 +646,7 @@ def cw_loopback(uri, classname, channel, param_set, use_tx2=False, use_rx2=False # self.assertGreater(fc * 0.01, diff, "Frequency offset") -def t_sfdr(uri, classname, channel, param_set, sfdr_min, use_obs=False, full_scale=0.9): +def t_sfdr(uri, classname, channel, param_set, sfdr_min, use_obs=False, full_scale=0.9, sfdr_values=None): """t_sfdr: Test SFDR loopback of tone with connected loopback cables. This test requires a devices with TX and RX onboard where the transmit signal can be recovered. Sinuoidal data is passed to DMAs which is then @@ -655,6 +668,13 @@ def t_sfdr(uri, classname, channel, param_set, sfdr_min, use_obs=False, full_sca Minimum acceptable value of SFDR in dB """ + + if sfdr_values is None: + sfdr_values = [] + + # from signal import signal, SIGPIPE, SIG_DFL + # signal(SIGPIPE, SIG_DFL) + # See if we can tone using DMAs sdr = eval(classname + "(uri='" + uri + "')") # Set custom device parameters @@ -699,6 +719,8 @@ def t_sfdr(uri, classname, channel, param_set, sfdr_min, use_obs=False, full_sca raise Exception(e) del sdr val, amp, freqs = spec.sfdr(data, plot=False) + sfdr_values.append(val) + if do_html_log: pytest.data_log = { "html": gen_line_plot_html( @@ -710,8 +732,11 @@ def t_sfdr(uri, classname, channel, param_set, sfdr_min, use_obs=False, full_sca ) } print("SFDR:", val, "dB") + assert val > sfdr_min + return sfdr_values + def gain_check(uri, classname, channel, param_set, dds_scale, min_rssi, max_rssi): """gain_check: Test DDS loopback with connected loopback cables and verify diff --git a/test/html.py b/test/html.py index a0bcfb690..f6fec76c3 100644 --- a/test/html.py +++ b/test/html.py @@ -1,35 +1,65 @@ import plotly.express as px +from test.test_triton import serial_number, all_tone_peak_values, all_sfdr_values import pytest from docutils import nodes import pytest_html from py.xml import html - +# from pytest_html import html +from pytest_metadata.plugin import metadata_key +# from pytest_html import html def pytest_html_report_title(report): - report.title = "pyadi-iio Test Report" + report.title = f'ADXBAND16EBZ Test Report, SN:{serial_number}' def pytest_html_results_summary(prefix, summary, postfix): # Add html paragraph to prefix - prefix.extend([html.p("This is a custom report summary")]) - + # prefix.extend([html.p("This is a custom report summary")]) + # Add line break to prefix prefix.extend([html.br()]) - + # Add image to prefix, must be relative to the html output (not absolute path) - image_loc = "adjacent.png" - image2_loc = "combined.png" - image = html.img(src=image_loc, style="width: 300px;") - image2 = html.img(src=image2_loc, style="width: 300px;") - prefix.extend([image]) - prefix.extend([image2]) + image_loc = f'Loopback_Sweep_SN{serial_number}.png' + image2_loc = f'Filter_Test_1_SN{serial_number}.png' + image3_loc = f'Filter_Test_2_SN{serial_number}.png' + image4_loc = f'DSA_Test_SN{serial_number}.png' + image5_loc = f'SFDR_Test_SN{serial_number}.png' + if len(all_tone_peak_values) == 96: + image = html.img(src=image_loc, style="width: 300px;") + image2 = html.img(src=image2_loc, style="width: 300px;") + image3 = html.img(src=image3_loc, style="width: 300px;") + image4 = html.img(src=image4_loc, style="width: 300px;") + prefix.extend([image]) + prefix.extend([image2]) + prefix.extend([image3]) + prefix.extend([image4]) + if len(all_sfdr_values) == 16: + image5 = html.img(src=image5_loc, style="width: 300px;") + prefix.extend([image5]) + + + + print(summary) + # summary.extend([r'
random_test
']) + # summary.append(html.html("")) + # summary.append(html.html("")) + # summary.append(html.html("")) + # summary.append(html.html("")) + # summary.append(html.html("")) + + for item in summary: + print(type(item)) +def pytest_html_results_summary(prefix, summary, postfix): + # Add html paragraph to prefix + prefix.extend([html.p("This is a custom report summary")]) + + # Add line break to prefix + prefix.extend([html.br()]) + print(summary) - print('test123') - summary.extend([r'
random_test
']) - summary.append(html.html("")) - summary.append(html.html("")) for item in summary: print(type(item)) @@ -47,7 +77,5 @@ def pytest_runtest_makereport(item, call): extra.append(pytest_html.extras.html(pytest.data_log["html"])) report.extra = extra if hasattr(pytest, "data"): - # extra.append(pytest_html.extras.html(pytest.data["html"])) extra.append(pytest_html.extras.html(f'
{pytest.data}
')) report.extra = extra - diff --git a/test/rf/spec.py b/test/rf/spec.py index c0c7c6967..31b7d07d0 100644 --- a/test/rf/spec.py +++ b/test/rf/spec.py @@ -23,7 +23,7 @@ def spec_est(x, fs, ref=2 ** 15, plot=False): N = len(x) # Apply window - window = signal.kaiser(N, beta=38) + window = signal.windows.kaiser(N, beta=38) # x = multiply(x, window) # Use FFT to get the amplitude of the spectrum diff --git a/test/test_triton.py b/test/test_triton.py index de23199c7..1ef6b8354 100644 --- a/test/test_triton.py +++ b/test/test_triton.py @@ -1,5 +1,6 @@ + import adi -import test.dma_tests +# import test.dma_tests import pytest import test import matplotlib.pyplot as plt @@ -10,13 +11,24 @@ import pyvisa import time import test.instruments as instruments -# from scpi import signal +from scipy import signal +import logging +import os + + +logging.getLogger('PIL.PngImagePlugin').setLevel(logging.WARNING) +logging.getLogger('matplotlib.font_manager').setLevel(logging.WARNING) +logging.getLogger('matplotlib').setLevel(logging.INFO) + hardware = ["Triton"] classname = "adi.Triton" +iio_uri = "ip:192.168.2.1" + + ########################################## # Dictionaries for Tests @@ -104,46 +116,62 @@ ########################################## # DC Power Test - Preboot -########################################## +######################################### -def test_current_preboot(): - rm = pyvisa.ResourceManager() - rm.list_resources() - inst = rm.open_resource('TCPIP::192.168.10.1::inst0::INSTR') +# @pytest.fixture(scope="module", autouse=True) +# def test_power_on(): +# rm = pyvisa.ResourceManager() +# x = rm.list_resources() +# inst = rm.open_resource('TCPIP::192.168.3.6::INSTR') + +# inst.write("SOUR:VOLT 12") +# inst.write("SOUR:CURR 30") # Change as needed +# inst.write('OUTPut ON') - inst.write("OUTP:PAIR PAR") - inst.write("INST CH1") - inst.write("SOUR:VOLT 12") - inst.write("SOUR:CURR 30") # Change as needed - print(inst.query("MEASure:CURR?")) +# def test_current_preboot(): +# rm = pyvisa.ResourceManager() +# x = rm.list_resources() +# inst = rm.open_resource('TCPIP::192.168.3.6::INSTR') - current_value = float(inst.query("MEASure:CURR?")) +# # inst.write("OUTP:PAIR PAR") +# # inst.write("INST CH1") +# # inst.write("SOUR:VOLT 12") +# # inst.write("SOUR:CURR 30") # Change as needed +# # inst.write('OUTPut ON') +# print(inst.query("MEASure:CURR?")) - assert current_value > 2 - assert current_value < 4.5 +# # error_message = inst.query('SYSTem:ERRor?') +# # print("Error Message:", error_message) -def test_voltage_preboot(): - rm = pyvisa.ResourceManager() - rm.list_resources() - inst = rm.open_resource('TCPIP::192.168.10.1::inst0::INSTR') +# current_value = float(inst.query("MEASure:CURR?")) - inst.write("OUTP:PAIR PAR") - inst.write("INST CH1") - inst.write("SOUR:VOLT 12") - inst.write("SOUR:CURR 30") # Change as needed - print(inst.query("MEASure:VOLT?")) +# assert current_value > 2 +# assert current_value < 4.5 - voltage_value = float(inst.query("MEASure:VOLT?")) +# def test_voltage_preboot(): +# rm = pyvisa.ResourceManager() +# rm.list_resources() +# inst = rm.open_resource('TCPIP::192.168.3.6::INSTR') - assert voltage_value > 11.8 - assert voltage_value < 12.2 +# # inst.write("OUTP:PAIR PAR") +# # inst.write("INST CH1") +# # inst.write("SOUR:VOLT 12") +# # inst.write("SOUR:CURR 30") # Change as needed +# # inst.write('OUTPut ON') +# print(inst.query("MEASure:VOLT?")) +# voltage_value = float(inst.query("MEASure:VOLT?")) -# ########################################## -# # Automated bootup -# ########################################## +# assert voltage_value > 11.8 +# assert voltage_value < 12.2 -@pytest.fixture(scope="module") + +# # ########################################## +# # # Automated bootup +# # ########################################## + +# @pytest.fixture(scope="module", autouse=True) +# # @pytest.fixture(scope="module") def test_bootup(): import os import subprocess @@ -151,11 +179,10 @@ def test_bootup(): dir_path = os.path.dirname(os.path.realpath(__file__)) print(dir_path) boot_path = os.path.join(dir_path, 'vcu118_quad_ad9084_2023-09-28') - # tcl_script_path = r"C:/Users/JChambli/Downloads/vcu118_quad_ad9084_2023-09-28/run_26p4.tcl" tcl_script_path = os.path.join(boot_path, 'run_me.tcl') # Path to Vivado Lab executable - vivado_lab_executable = r"C:\Xilinx\Vivado_Lab\2022.2\bin\xsdb.bat" + vivado_lab_executable = r"/tools/Xilinx/Vivado_Lab/2023.2/bin/xsdb" # Open Xilinx xsdb tool and # source run.tcl @@ -179,7 +206,7 @@ def test_bootup(): print(command) # Run the command - # subprocess.run(command) + subprocess.run(command) results = subprocess.run(command) time.sleep(140) ## Wait for bootup @@ -188,41 +215,49 @@ def test_bootup(): -# ######################################### -# # DC Power Test - Postboot -# ######################################### +# # ######################################### +# # # DC Power Test - Postboot +# # ######################################### + +# def test_current_postboot(): +# rm = pyvisa.ResourceManager() +# rm.list_resources() +# inst = rm.open_resource('TCPIP::192.168.3.6::INSTR') -def test_current_postboot(): - rm = pyvisa.ResourceManager() - rm.list_resources() - inst = rm.open_resource('TCPIP::192.168.10.1::inst0::INSTR') +# # inst.write("OUTP:PAIR PAR") +# # inst.write("INST CH1") +# # inst.write("SOUR:VOLT 12") +# # inst.write("SOUR:CURR 30") # Change as needed +# # inst.write('OUTPut ON') +# print(inst.query("MEASure:CURR?")) - inst.write("OUTP:PAIR PAR") - inst.write("INST CH1") - inst.write("SOUR:VOLT 12") - inst.write("SOUR:CURR 30") # Change as needed - print(inst.query("MEASure:CURR?")) +# current_value = float(inst.query("MEASure:CURR?")) - current_value = float(inst.query("MEASure:CURR?")) +# assert current_value > 14 +# assert current_value < 18\ - assert current_value > 14 - assert current_value < 18 +# def test_voltage_postboot(): +# rm = pyvisa.ResourceManager() +# rm.list_resources() +# inst = rm.open_resource('TCPIP::192.168.3.6::INSTR') -def test_voltage_postboot(): - rm = pyvisa.ResourceManager() - rm.list_resources() - inst = rm.open_resource('TCPIP::192.168.10.1::inst0::INSTR') +# # inst.write("OUTP:PAIR PAR") +# # inst.write("INST CH1") +# # inst.write("SOUR:VOLT 12") +# # inst.write("SOUR:CURR 30") # Change as needed +# # inst.write('OUTPut ON') +# print(inst.query("MEASure:VOLT?")) - inst.write("OUTP:PAIR PAR") - inst.write("INST CH1") - inst.write("SOUR:VOLT 12") - inst.write("SOUR:CURR 30") # Change as needed - print(inst.query("MEASure:VOLT?")) +# voltage_value = float(inst.query("MEASure:VOLT?")) - voltage_value = float(inst.query("MEASure:VOLT?")) +# assert voltage_value > 11.8 +# assert voltage_value < 12.2 - assert voltage_value > 11.8 - assert voltage_value < 12.2 +# inst.write("OUTP:PAIR PAR") +# inst.write("INST CH1") +# inst.write("SOUR:VOLT 12") +# inst.write("SOUR:CURR 30") # Change as needed +# inst.write('OUTPut ON') @@ -234,13 +269,24 @@ def test_voltage_postboot(): def test_iio_attr(iio_uri): print("iio_uri", iio_uri) -######################################### -# DDS Loopback Test -######################################### +# ######################################### +# # DDS Loopback Test +# ######################################### +# Prompt user to enter serial number +serial_number = input("Enter the serial number being tested: ") + +# @pytest.fixture(scope="session") +def serial_number_fixture(): + return serial_number + +directory = f'C:/ADI/Triton/pyadi-iio/testResults/SN{serial_number}' +os.makedirs(directory) + +all_tone_peak_values = [] @pytest.mark.parametrize("classname", [(classname)]) -# @pytest.mark.parametrize("channel", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], ids=lambda x: f"channel:{x}") -@pytest.mark.parametrize("channel", [0, 1], ids=lambda x: f"channel:{x}") +@pytest.mark.parametrize("channel", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], ids=lambda x: f"channel:{x}") +# @pytest.mark.parametrize("channel", [0], ids=lambda x: f"channel:{x}") @pytest.mark.parametrize( "param_set, frequency, scale, peak_min, hpf_value, lpf_value", [ @@ -252,6 +298,9 @@ def test_iio_attr(iio_uri): (params["dac_adc_loopback_30dB_attenuation"], 50000000, 0.9, -50, 5, 15), ] ) + + + def test_Triton_dds_loopback( test_dds_loopback, iio_uri, @@ -264,43 +313,137 @@ def test_Triton_dds_loopback( hpf_value, lpf_value, ): + global all_tone_peak_values dev = adi.Triton("ip:192.168.2.1", calibration_board_attached=True) + iio_uri = "ip:192.168.2.1" ## Set low pass and high pass filter values dev.hpf_ctrl = hpf_value dev.lpf_ctrl = lpf_value ## Set cal board loopback state dev.gpio_ctrl_ind = 0 - dev.gpio_5045_v1 = 1 + dev.gpio_5045_v1 = 1 dev.gpio_5045_v2 = 0 dev.gpio_ctrl_rx_combined = 0 ## Param set and DDS test param_set = scale_field(param_set, iio_uri) - test_dds_loopback( - iio_uri, classname, param_set, channel, frequency, scale, peak_min + + all_tone_peak_values = test_dds_loopback( + iio_uri, classname, param_set, channel, frequency, scale, peak_min, use_obs=False, use_rx2=False, tone_peak_values=all_tone_peak_values ) + if len(all_tone_peak_values) == 48: + freq_axis_values = [8000, 10000, 12000] + ch0_values = [all_tone_peak_values[0], all_tone_peak_values[16], all_tone_peak_values[32]] + ch1_values = [all_tone_peak_values[1], all_tone_peak_values[17], all_tone_peak_values[33]] + ch2_values = [all_tone_peak_values[2], all_tone_peak_values[18], all_tone_peak_values[34]] + ch3_values = [all_tone_peak_values[3], all_tone_peak_values[19], all_tone_peak_values[35]] + ch4_values = [all_tone_peak_values[4], all_tone_peak_values[20], all_tone_peak_values[36]] + ch5_values = [all_tone_peak_values[5], all_tone_peak_values[21], all_tone_peak_values[37]] + ch6_values = [all_tone_peak_values[6], all_tone_peak_values[22], all_tone_peak_values[38]] + ch7_values = [all_tone_peak_values[7], all_tone_peak_values[23], all_tone_peak_values[39]] + ch8_values = [all_tone_peak_values[8], all_tone_peak_values[24], all_tone_peak_values[40]] + ch9_values = [all_tone_peak_values[9], all_tone_peak_values[25], all_tone_peak_values[41]] + ch10_values = [all_tone_peak_values[10], all_tone_peak_values[26], all_tone_peak_values[42]] + ch11_values = [all_tone_peak_values[11], all_tone_peak_values[27], all_tone_peak_values[43]] + ch12_values = [all_tone_peak_values[12], all_tone_peak_values[28], all_tone_peak_values[44]] + ch13_values = [all_tone_peak_values[13], all_tone_peak_values[29], all_tone_peak_values[45]] + ch14_values = [all_tone_peak_values[14], all_tone_peak_values[30], all_tone_peak_values[46]] + ch15_values = [all_tone_peak_values[15], all_tone_peak_values[31], all_tone_peak_values[47]] + plt.figure() + plt.plot(freq_axis_values,ch0_values) + plt.plot(freq_axis_values,ch1_values) + plt.plot(freq_axis_values,ch2_values) + plt.plot(freq_axis_values,ch3_values) + plt.plot(freq_axis_values,ch4_values) + plt.plot(freq_axis_values,ch5_values) + plt.plot(freq_axis_values,ch6_values) + plt.plot(freq_axis_values,ch7_values) + plt.plot(freq_axis_values,ch8_values) + plt.plot(freq_axis_values,ch9_values) + plt.plot(freq_axis_values,ch10_values) + plt.plot(freq_axis_values,ch11_values) + plt.plot(freq_axis_values,ch12_values) + plt.plot(freq_axis_values,ch13_values) + plt.plot(freq_axis_values,ch14_values) + plt.plot(freq_axis_values,ch15_values) + plt.xlabel('Frequency (MHz)') + plt.ylabel('Magnitude(dBFS)') + plt.title('Loopback Test') + plt.savefig(f'C:/ADI/Triton/pyadi-iio/testResults/SN{serial_number}/Loopback_Sweep_SN{serial_number}.png') + + if len(all_tone_peak_values) == 64: + channels = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] + values = [all_tone_peak_values[48],all_tone_peak_values[49],all_tone_peak_values[50], all_tone_peak_values[51], all_tone_peak_values[52], all_tone_peak_values[53], all_tone_peak_values[54], all_tone_peak_values[55], all_tone_peak_values[56], all_tone_peak_values[57], all_tone_peak_values[58], all_tone_peak_values[59], all_tone_peak_values[60], all_tone_peak_values[61], all_tone_peak_values[62], all_tone_peak_values[63]] + plt.figure() + plt.plot(channels, values) + plt.xlabel('Channel') + plt.ylabel('Magnitude(dBFS)') + plt.title('Filter Test: Channel Magnitudes at 10 GHz') + plt.savefig(f'C:/ADI/Triton/pyadi-iio/testResults/SN{serial_number}/Filter_Test_1_SN{serial_number}.png') + + if len(all_tone_peak_values) == 80: + channels = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] + values = [all_tone_peak_values[64],all_tone_peak_values[65],all_tone_peak_values[66], all_tone_peak_values[67], all_tone_peak_values[68], all_tone_peak_values[69], all_tone_peak_values[70], all_tone_peak_values[71], all_tone_peak_values[72], all_tone_peak_values[73], all_tone_peak_values[74], all_tone_peak_values[75], all_tone_peak_values[76], all_tone_peak_values[77], all_tone_peak_values[78], all_tone_peak_values[79]] + plt.figure() + plt.plot(channels, values) + plt.xlabel('Channel') + plt.ylabel('Magnitude(dBFS)') + plt.title('Filter Test: Channel Magnitudes at 10 GHz') + plt.savefig(f'C:/ADI/Triton/pyadi-iio/testResults/SN{serial_number}/Filter_Test_2_SN{serial_number}.png') + + if len(all_tone_peak_values) == 96: + channels = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] + values = [all_tone_peak_values[80],all_tone_peak_values[81],all_tone_peak_values[82], all_tone_peak_values[83], all_tone_peak_values[84], all_tone_peak_values[85], all_tone_peak_values[86], all_tone_peak_values[87], all_tone_peak_values[88], all_tone_peak_values[89], all_tone_peak_values[90], all_tone_peak_values[91], all_tone_peak_values[92], all_tone_peak_values[93], all_tone_peak_values[94], all_tone_peak_values[95]] + plt.figure() + plt.plot(channels, values) + plt.xlabel('Channel') + plt.ylabel('Magnitude(dBFS)') + plt.title('DSA Test: Channel Magnitudes at 10 GHz') + plt.savefig(f'C:/ADI/Triton/pyadi-iio/testResults/SN{serial_number}/DSA_Test_SN{serial_number}.png') + + + assert all_tone_peak_values -######################################### -# SFDR Test -######################################### + + + + + + + +# ######################################### +# # SFDR Test +# ######################################### + +all_sfdr_values = [] + @pytest.mark.parametrize("classname", [(classname)]) -# @pytest.mark.parametrize("channel", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], ids=lambda x: f"channel:{x}") -@pytest.mark.parametrize("channel", [0, 1], ids=lambda x: f"channel:{x}") +@pytest.mark.parametrize("channel", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], ids=lambda x: f"channel:{x}") +# @pytest.mark.parametrize("channel", [0], ids=lambda x: f"channel:{x}") @pytest.mark.parametrize( "param_set, hpf_value, lpf_value", [ (params["sfdr_test"], 5, 15), ], ) -@pytest.mark.parametrize("sfdr_min", [60]) +@pytest.mark.parametrize("sfdr_min", [50]) def test_Triton_sfdr(test_sfdr, iio_uri, classname, channel, param_set, sfdr_min, hpf_value, lpf_value): + global all_sfdr_values dev = adi.Triton("ip:192.168.2.1", calibration_board_attached=True) ## Set low pass and high pass filter values dev.hpf_ctrl = hpf_value dev.lpf_ctrl = lpf_value ## SFDR test - test_sfdr(iio_uri, classname, channel, param_set, sfdr_min) - - - + iio_uri = "ip:192.168.2.1" + all_sfdr_values = test_sfdr(iio_uri, classname, channel, param_set, sfdr_min, sfdr_values=all_sfdr_values) + + if len(all_sfdr_values) == 16: + channels = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] + values = all_sfdr_values + plt.figure() + plt.plot(channels, values) + plt.xlabel('Channel') + plt.ylabel('SFDR (dB)') + plt.title('SFDR Test') + plt.savefig(f'C:/ADI/Triton/pyadi-iio/testResults/SN{serial_number}/SFDR_Test_SN{serial_number}.png') diff --git a/test/test_triton_cal.py b/test/test_triton_cal.py index 97f775f90..5d51bd947 100644 --- a/test/test_triton_cal.py +++ b/test/test_triton_cal.py @@ -1,6 +1,6 @@ -import adi + import pytest -import test + import numpy as np import pyvisa @@ -10,12 +10,12 @@ # # Connect to Arduino Uno ## Note: if first time installing pyfirmata, need to replace "getargspec" with "getfullargspec" in pyfirmata code -board = pyfirmata.Arduino("COM10", baudrate=57600) +# board = pyfirmata.Arduino("/dev/ttyACM0", baudrate=57600) # # Establish VISA control of spectrum analyzer and signal generator rm = pyvisa.ResourceManager() x = rm.list_resources() -HMCT2220 = rm.open_resource('ASRL11::INSTR') +HMCT2220 = rm.open_resource('ASRL/dev/ttyACM1::INSTR') FieldFox = rm.open_resource('TCPIP::192.168.100.23::INSTR') ################################### @@ -102,6 +102,7 @@ def _set_attenuation_level(attenuation, instr): @pytest.mark.parametrize("frequency", [8000, 9000, 10000, 11000, 12000], ids=lambda x: f"Frequency (MHz):{x}") @pytest.mark.parametrize("cal_board_state", ["adjacent_loopback", "combined_loopback"]) @pytest.mark.parametrize("channel", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], ids=lambda x: f"channel:{x}") +# @pytest.mark.parametrize("channel", [0]) def test_loopback(channel, cal_board_state, frequency): @@ -116,6 +117,7 @@ def test_loopback(channel, cal_board_state, frequency): _set_frequency_MHz(frequency, HMCT2220) # Set frequency of sig gen _set_power_level_dBm(15, HMCT2220) # Set sig gen power level to 10 dBm _set_output('ON', HMCT2220) # Set sig gen output on + time.sleep(1) # Buffer time of 1 second # Set up spectrum analyzer diff --git a/testResults/SN10/assets/style.css b/testResults/SN10/assets/style.css new file mode 100644 index 000000000..3edac88ee --- /dev/null +++ b/testResults/SN10/assets/style.css @@ -0,0 +1,186 @@ +body { + font-family: Helvetica, Arial, sans-serif; + font-size: 12px; + /* do not increase min-width as some may use split screens */ + min-width: 800px; + color: #999; +} + +h1 { + font-size: 24px; + color: black; +} + +h2 { + font-size: 16px; + color: black; +} + +p { + color: black; +} + +a { + color: #999; +} + +table { + border-collapse: collapse; +} + +/****************************** + * SUMMARY INFORMATION + ******************************/ +#environment td { + padding: 5px; + border: 1px solid #E6E6E6; +} +#environment tr:nth-child(odd) { + background-color: #f6f6f6; +} + +/****************************** + * TEST RESULT COLORS + ******************************/ +span.passed, +.passed .col-result { + color: green; +} + +span.skipped, +span.xfailed, +span.rerun, +.skipped .col-result, +.xfailed .col-result, +.rerun .col-result { + color: orange; +} + +span.error, +span.failed, +span.xpassed, +.error .col-result, +.failed .col-result, +.xpassed .col-result { + color: red; +} + +/****************************** + * RESULTS TABLE + * + * 1. Table Layout + * 2. Extra + * 3. Sorting items + * + ******************************/ +/*------------------ + * 1. Table Layout + *------------------*/ +#results-table { + border: 1px solid #e6e6e6; + color: #999; + font-size: 12px; + width: 100%; +} +#results-table th, +#results-table td { + padding: 5px; + border: 1px solid #E6E6E6; + text-align: left; +} +#results-table th { + font-weight: bold; +} + +/*------------------ + * 2. Extra + *------------------*/ +.log { + background-color: #e6e6e6; + border: 1px solid #e6e6e6; + color: black; + display: block; + font-family: "Courier New", Courier, monospace; + height: 230px; + overflow-y: scroll; + padding: 5px; + white-space: pre-wrap; +} +.log:only-child { + height: inherit; +} + +div.image { + border: 1px solid #e6e6e6; + float: right; + height: 240px; + margin-left: 5px; + overflow: hidden; + width: 320px; +} +div.image img { + width: 320px; +} + +div.video { + border: 1px solid #e6e6e6; + float: right; + height: 240px; + margin-left: 5px; + overflow: hidden; + width: 320px; +} +div.video video { + overflow: hidden; + width: 320px; + height: 240px; +} + +.collapsed { + display: none; +} + +.expander::after { + content: " (show details)"; + color: #BBB; + font-style: italic; + cursor: pointer; +} + +.collapser::after { + content: " (hide details)"; + color: #BBB; + font-style: italic; + cursor: pointer; +} + +/*------------------ + * 3. Sorting items + *------------------*/ +.sortable { + cursor: pointer; +} + +.sort-icon { + font-size: 0px; + float: left; + margin-right: 5px; + margin-top: 5px; + /*triangle*/ + width: 0; + height: 0; + border-left: 8px solid transparent; + border-right: 8px solid transparent; +} +.inactive .sort-icon { + /*finish triangle*/ + border-top: 8px solid #E6E6E6; +} +.asc.active .sort-icon { + /*finish triangle*/ + border-bottom: 8px solid #999; +} +.desc.active .sort-icon { + /*finish triangle*/ + border-top: 8px solid #999; +} diff --git a/testResults/SN10/testResultsSN10.json b/testResults/SN10/testResultsSN10.json new file mode 100644 index 000000000..9eb2ed332 --- /dev/null +++ b/testResults/SN10/testResultsSN10.json @@ -0,0 +1 @@ +{"report": {"environment": {"Python": "3.11.5", "Platform": "Windows-10-10.0.22631-SP0"}, "tests": [{"name": "test/test_triton.py::test_bootup", "duration": 0.007089800012181513, "run_index": 0, "setup": {"name": "setup", "duration": 0.0018676000036066398, "outcome": "passed"}, "call": {"name": "call", "duration": 0.002860400010831654, "outcome": "failed", "longrepr": "def test_bootup():\n import os\n import subprocess\n \n dir_path = os.path.dirname(os.path.realpath(__file__))\n print(dir_path)\n boot_path = os.path.join(dir_path, 'vcu118_quad_ad9084_2023-09-28')\n tcl_script_path = os.path.join(boot_path, 'run_me.tcl')\n \n # Path to Vivado Lab executable\n vivado_lab_executable = r\"/tools/Xilinx/Vivado_Lab/2023.2/bin/xsdb\"\n \n # Open Xilinx xsdb tool and\n # source run.tcl\n bitstream = os.path.join(boot_path, \"system_top_26p4.bit\")\n strip = os.path.join(boot_path, \"simpleImage_26p4.strip\" )\n script = f\"\"\"\n connect\n fpga -f \"{bitstream.replace(os.sep, '/')}\"\n after 1000\n target 3\n dow \"{strip.replace(os.sep, '/')}\"\n after 1000\n con\n disconnect\n \"\"\"\n with open(tcl_script_path, 'w') as f:\n f.write(script)\n \n # Command to run Vivado Lab with the Tcl script\n command = [vivado_lab_executable, '-eval', 'source', tcl_script_path]\n print(command)\n \n # Run the command\n> subprocess.run(command)\n\ntest\\test_triton.py:209: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nC:\\Users\\JChambli\\.pyenv\\pyenv-win\\versions\\3.11.5\\Lib\\subprocess.py:548: in run\n with Popen(*popenargs, **kwargs) as process:\nC:\\Users\\JChambli\\.pyenv\\pyenv-win\\versions\\3.11.5\\Lib\\subprocess.py:1026: in __init__\n self._execute_child(args, executable, preexec_fn, close_fds,\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = \nargs = '/tools/Xilinx/Vivado_Lab/2023.2/bin/xsdb -eval source C:\\\\ADI\\\\Triton\\\\pyadi-iio\\\\test\\\\vcu118_quad_ad9084_2023-09-28\\\\run_me.tcl', executable = None, preexec_fn = None, close_fds = True, pass_fds = ()\ncwd = None, env = None, startupinfo = , creationflags = 0, shell = False, p2cread = -1, p2cwrite = -1, c2pread = -1, c2pwrite = -1, errread = -1\nerrwrite = -1, unused_restore_signals = True, unused_gid = None, unused_gids = None, unused_uid = None, unused_umask = -1, unused_start_new_session = False, unused_process_group = -1\n\n def _execute_child(self, args, executable, preexec_fn, close_fds,\n pass_fds, cwd, env,\n startupinfo, creationflags, shell,\n p2cread, p2cwrite,\n c2pread, c2pwrite,\n errread, errwrite,\n unused_restore_signals,\n unused_gid, unused_gids, unused_uid,\n unused_umask,\n unused_start_new_session, unused_process_group):\n \"\"\"Execute program (MS Windows version)\"\"\"\n \n assert not pass_fds, \"pass_fds not supported on Windows.\"\n \n if isinstance(args, str):\n pass\n elif isinstance(args, bytes):\n if shell:\n raise TypeError('bytes args is not allowed on Windows')\n args = list2cmdline([args])\n elif isinstance(args, os.PathLike):\n if shell:\n raise TypeError('path-like args is not allowed when '\n 'shell is true')\n args = list2cmdline([args])\n else:\n args = list2cmdline(args)\n \n if executable is not None:\n executable = os.fsdecode(executable)\n \n # Process startup details\n if startupinfo is None:\n startupinfo = STARTUPINFO()\n else:\n # bpo-34044: Copy STARTUPINFO since it is modified above,\n # so the caller can reuse it multiple times.\n startupinfo = startupinfo.copy()\n \n use_std_handles = -1 not in (p2cread, c2pwrite, errwrite)\n if use_std_handles:\n startupinfo.dwFlags |= _winapi.STARTF_USESTDHANDLES\n startupinfo.hStdInput = p2cread\n startupinfo.hStdOutput = c2pwrite\n startupinfo.hStdError = errwrite\n \n attribute_list = startupinfo.lpAttributeList\n have_handle_list = bool(attribute_list and\n \"handle_list\" in attribute_list and\n attribute_list[\"handle_list\"])\n \n # If we were given an handle_list or need to create one\n if have_handle_list or (use_std_handles and close_fds):\n if attribute_list is None:\n attribute_list = startupinfo.lpAttributeList = {}\n handle_list = attribute_list[\"handle_list\"] = \\\n list(attribute_list.get(\"handle_list\", []))\n \n if use_std_handles:\n handle_list += [int(p2cread), int(c2pwrite), int(errwrite)]\n \n handle_list[:] = self._filter_handle_list(handle_list)\n \n if handle_list:\n if not close_fds:\n warnings.warn(\"startupinfo.lpAttributeList['handle_list'] \"\n \"overriding close_fds\", RuntimeWarning)\n \n # When using the handle_list we always request to inherit\n # handles but the only handles that will be inherited are\n # the ones in the handle_list\n close_fds = False\n \n if shell:\n startupinfo.dwFlags |= _winapi.STARTF_USESHOWWINDOW\n startupinfo.wShowWindow = _winapi.SW_HIDE\n if not executable:\n # gh-101283: without a fully-qualified path, before Windows\n # checks the system directories, it first looks in the\n # application directory, and also the current directory if\n # NeedCurrentDirectoryForExePathW(ExeName) is true, so try\n # to avoid executing unqualified \"cmd.exe\".\n comspec = os.environ.get('ComSpec')\n if not comspec:\n system_root = os.environ.get('SystemRoot', '')\n comspec = os.path.join(system_root, 'System32', 'cmd.exe')\n if not os.path.isabs(comspec):\n raise FileNotFoundError('shell not found: neither %ComSpec% nor %SystemRoot% is set')\n if os.path.isabs(comspec):\n executable = comspec\n else:\n comspec = executable\n \n args = '{} /c \"{}\"'.format (comspec, args)\n \n if cwd is not None:\n cwd = os.fsdecode(cwd)\n \n sys.audit(\"subprocess.Popen\", executable, args, cwd, env)\n \n # Start the process\n try:\n> hp, ht, pid, tid = _winapi.CreateProcess(executable, args,\n # no special security\n None, None,\n int(not close_fds),\n creationflags,\n env,\n cwd,\n startupinfo)\nE FileNotFoundError: [WinError 2] The system cannot find the file specified\n\nC:\\Users\\JChambli\\.pyenv\\pyenv-win\\versions\\3.11.5\\Lib\\subprocess.py:1538: FileNotFoundError"}, "teardown": {"name": "teardown", "duration": 0.0004941999941365793, "outcome": "passed"}, "outcome": "failed"}], "summary": {"failed": 1, "num_tests": 1, "duration": 0.3990015983581543}, "created_at": "2024-07-23 10:06:52.262488"}} \ No newline at end of file diff --git a/test_triton_cal.json b/test_triton_cal.json index 382743721..b8937e5a1 100644 --- a/test_triton_cal.json +++ b/test_triton_cal.json @@ -1,3756 +1 @@ -{ - "report": { - "environment": { - "Python": "3.11.5", - "Platform": "Windows-10-10.0.19045-SP0" - }, - "tests": [ - { - "name": "test/test_triton_cal.py::test_loopback[channel:0-adjacent_loopback-Frequency (MHz):8000]", - "duration": 27.5693725000001, - "run_index": 0, - "setup": { - "name": "setup", - "duration": 0.0013952999997854931, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 27.56615950000014, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 0 input and connect spectrum analyzer into channel 0 output. Press Enter when complete \n\nPower level (dBm): -2.382866E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00042240000038873404, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:0-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.0284425000008923, - "run_index": 1, - "setup": { - "name": "setup", - "duration": 0.0005172000001039123, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0270393999999214, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.662026E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00036870000076305587, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:0-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.019431099997746, - "run_index": 2, - "setup": { - "name": "setup", - "duration": 0.0005514999993465608, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.01796800000011, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.536682E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.000360099998943042, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:0-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.041431300000113, - "run_index": 3, - "setup": { - "name": "setup", - "duration": 0.00045700000009674113, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.040135100000043, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.419151E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00038219999987632036, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:0-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.0368254000004526, - "run_index": 4, - "setup": { - "name": "setup", - "duration": 0.0007628000003023772, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0349375999994663, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.877325E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00036220000038156286, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:0-combined_loopback-Frequency (MHz):8000]", - "duration": 2.0256485999998404, - "run_index": 5, - "setup": { - "name": "setup", - "duration": 0.0004515000000537839, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0243845000004512, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.947359E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00036109999928157777, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:0-combined_loopback-Frequency (MHz):9000]", - "duration": 2.019422500003202, - "run_index": 6, - "setup": { - "name": "setup", - "duration": 0.0004971000016666949, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.018092500000421, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -6.108541E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003357999994477723, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:0-combined_loopback-Frequency (MHz):10000]", - "duration": 2.017935799996849, - "run_index": 7, - "setup": { - "name": "setup", - "duration": 0.0004890999989584088, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0166052999993553, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.890023E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00035229999957664404, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:0-combined_loopback-Frequency (MHz):11000]", - "duration": 2.0256578999978956, - "run_index": 8, - "setup": { - "name": "setup", - "duration": 0.0006780999992770376, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0239340999996784, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.993606E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003675999996630708, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:0-combined_loopback-Frequency (MHz):12000]", - "duration": 2.0312381999992795, - "run_index": 9, - "setup": { - "name": "setup", - "duration": 0.0004487999995035352, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.030011099999683, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.966877E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00032950000058917794, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:1-adjacent_loopback-Frequency (MHz):8000]", - "duration": 11.754367500001536, - "run_index": 10, - "setup": { - "name": "setup", - "duration": 0.0004776999994646758, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 11.75305500000104, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 1 input and connect spectrum analyzer into channel 1 output. Press Enter when complete \n\nPower level (dBm): -2.165264E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00035710000156541355, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:1-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.0471488000002864, - "run_index": 11, - "setup": { - "name": "setup", - "duration": 0.0004492999996728031, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0457378000010067, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.426431E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0005123999999341322, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:1-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.0184143999995285, - "run_index": 12, - "setup": { - "name": "setup", - "duration": 0.00047649999942223076, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0171293999992486, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.246375E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033200000143551733, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:1-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.0333687999973336, - "run_index": 13, - "setup": { - "name": "setup", - "duration": 0.0004768999988300493, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.032086999999592, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.487059E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003280000000813743, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:1-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.0337129999988974, - "run_index": 14, - "setup": { - "name": "setup", - "duration": 0.00047110000014072284, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0324217999987013, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.120660E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00034899999991466757, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:1-combined_loopback-Frequency (MHz):8000]", - "duration": 2.035396799999944, - "run_index": 15, - "setup": { - "name": "setup", - "duration": 0.0004982999998901505, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.033733399999619, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.406171E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0006668000005447539, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:1-combined_loopback-Frequency (MHz):9000]", - "duration": 2.0427099999997154, - "run_index": 16, - "setup": { - "name": "setup", - "duration": 0.0004720999986602692, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.041222400001061, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.772047E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0005434000013337936, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:1-combined_loopback-Frequency (MHz):10000]", - "duration": 2.026191300001301, - "run_index": 17, - "setup": { - "name": "setup", - "duration": 0.0004516000008152332, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0249585999990813, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.759569E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00032950000058917794, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:1-combined_loopback-Frequency (MHz):11000]", - "duration": 2.0393550999979198, - "run_index": 18, - "setup": { - "name": "setup", - "duration": 0.00043509999886737205, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.038145299999087, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.014235E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033960000109800603, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:1-combined_loopback-Frequency (MHz):12000]", - "duration": 2.0269105000006675, - "run_index": 19, - "setup": { - "name": "setup", - "duration": 0.00047730000005685724, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0256171000000904, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.198330E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033880000046337955, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:2-adjacent_loopback-Frequency (MHz):8000]", - "duration": 9.261315200001263, - "run_index": 20, - "setup": { - "name": "setup", - "duration": 0.0005318000003171619, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 9.259907999999996, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 2 input and connect spectrum analyzer into channel 2 output. Press Enter when complete \n\nPower level (dBm): -2.158925E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00034360000063315965, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:2-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.034061299998939, - "run_index": 21, - "setup": { - "name": "setup", - "duration": 0.0005153999991307501, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0322890000006737, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.337748E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0007415000000037253, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:2-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.0224847000008594, - "run_index": 22, - "setup": { - "name": "setup", - "duration": 0.0005839999994350364, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0208317000015086, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.237141E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0004850000004807953, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:2-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.0222072999986267, - "run_index": 23, - "setup": { - "name": "setup", - "duration": 0.0004988999990018783, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.020890200001304, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.320259E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003192999993189005, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:2-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.0174108000010165, - "run_index": 24, - "setup": { - "name": "setup", - "duration": 0.0004415000003064051, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.016191599999729, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.806279E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003362000006745802, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:2-combined_loopback-Frequency (MHz):8000]", - "duration": 2.018010300002061, - "run_index": 25, - "setup": { - "name": "setup", - "duration": 0.0005438000007416122, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.016595499999312, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.519575E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00032720000126573723, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:2-combined_loopback-Frequency (MHz):9000]", - "duration": 2.01735689999623, - "run_index": 26, - "setup": { - "name": "setup", - "duration": 0.00044129999878350645, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0161123999987467, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.660887E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00036189999991620425, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:2-combined_loopback-Frequency (MHz):10000]", - "duration": 2.025028200001543, - "run_index": 27, - "setup": { - "name": "setup", - "duration": 0.0004960000005667098, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0236941000002844, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.870622E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.000342100000125356, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:2-combined_loopback-Frequency (MHz):11000]", - "duration": 2.0280501000015647, - "run_index": 28, - "setup": { - "name": "setup", - "duration": 0.00044239999988349155, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0268179000013333, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.948697E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.000347400000464404, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:2-combined_loopback-Frequency (MHz):12000]", - "duration": 2.0492822999985947, - "run_index": 29, - "setup": { - "name": "setup", - "duration": 0.00044799999886890873, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0480079999997542, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.156590E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003783000011026161, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:3-adjacent_loopback-Frequency (MHz):8000]", - "duration": 18.156763899998623, - "run_index": 30, - "setup": { - "name": "setup", - "duration": 0.00043000000005122274, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 18.15555569999924, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 3 input and connect spectrum analyzer into channel 3 output. Press Enter when complete \n\nPower level (dBm): -1.900280E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003481999992800411, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:3-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.0778590999998414, - "run_index": 31, - "setup": { - "name": "setup", - "duration": 0.000920300000871066, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0756586999996216, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.049615E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003597999984776834, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:3-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.05859319999945, - "run_index": 32, - "setup": { - "name": "setup", - "duration": 0.0004714999995485414, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0573079000005237, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.978225E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003422999998292653, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:3-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.0284250999993674, - "run_index": 33, - "setup": { - "name": "setup", - "duration": 0.0005244000003585825, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0270452000004298, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.213542E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003310999982204521, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:3-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.0311822000003303, - "run_index": 34, - "setup": { - "name": "setup", - "duration": 0.0006345000001601875, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.029561299999841, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.674493E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003519000001688255, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:3-combined_loopback-Frequency (MHz):8000]", - "duration": 2.0210093000005145, - "run_index": 35, - "setup": { - "name": "setup", - "duration": 0.0004576999999699183, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.019553800000722, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.485643E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0005400999998528278, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:3-combined_loopback-Frequency (MHz):9000]", - "duration": 2.0300639999986743, - "run_index": 36, - "setup": { - "name": "setup", - "duration": 0.0004386000000522472, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0284658999989915, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.641379E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0007208999995782506, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:3-combined_loopback-Frequency (MHz):10000]", - "duration": 2.0657274999994115, - "run_index": 37, - "setup": { - "name": "setup", - "duration": 0.0015193999988696305, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0623474000003625, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.851912E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00034130000130971894, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:3-combined_loopback-Frequency (MHz):11000]", - "duration": 2.0225537000005716, - "run_index": 38, - "setup": { - "name": "setup", - "duration": 0.0004828000000998145, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0212522000001627, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.935519E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003359000002092216, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:3-combined_loopback-Frequency (MHz):12000]", - "duration": 2.0357880999981717, - "run_index": 39, - "setup": { - "name": "setup", - "duration": 0.0006482999997388106, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.034128100000089, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.147760E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003633999986050185, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:4-adjacent_loopback-Frequency (MHz):8000]", - "duration": 9.584094800000457, - "run_index": 40, - "setup": { - "name": "setup", - "duration": 0.0007040000000415603, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 9.581972899999528, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 4 input and connect spectrum analyzer into channel 4 output. Press Enter when complete \n\nPower level (dBm): -2.018319E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0007139000008464791, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:4-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.041410099996938, - "run_index": 41, - "setup": { - "name": "setup", - "duration": 0.00047309999899880495, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.040143700000044, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.224654E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00032019999889598694, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:4-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.0251108999964345, - "run_index": 42, - "setup": { - "name": "setup", - "duration": 0.00048379999861936085, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0238133999991987, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.173595E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003298999999969965, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:4-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.0263544999979786, - "run_index": 43, - "setup": { - "name": "setup", - "duration": 0.0004745999995066086, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0248402999986865, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.373484E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0005650000002788147, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:4-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.0275535000000673, - "run_index": 44, - "setup": { - "name": "setup", - "duration": 0.0005062000000179978, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0261959999988903, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.813734E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003451000011409633, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:4-combined_loopback-Frequency (MHz):8000]", - "duration": 2.0230056999989756, - "run_index": 45, - "setup": { - "name": "setup", - "duration": 0.00048319999950763304, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0216925000004267, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.431443E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003467999995336868, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:4-combined_loopback-Frequency (MHz):9000]", - "duration": 2.022476199999801, - "run_index": 46, - "setup": { - "name": "setup", - "duration": 0.0005220999992161524, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.020986500001527, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.712474E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00044549999984155875, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:4-combined_loopback-Frequency (MHz):10000]", - "duration": 2.032922399999734, - "run_index": 47, - "setup": { - "name": "setup", - "duration": 0.0005087999998067971, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0315578000008827, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.846744E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00034699999923759606, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:4-combined_loopback-Frequency (MHz):11000]", - "duration": 2.0794759999989765, - "run_index": 48, - "setup": { - "name": "setup", - "duration": 0.00046689999908267055, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.078204999999798, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.915854E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.000337200001013116, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:4-combined_loopback-Frequency (MHz):12000]", - "duration": 2.0738197000009677, - "run_index": 49, - "setup": { - "name": "setup", - "duration": 0.0006360000006679911, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0718725999995513, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.158439E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0006751000000804197, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:5-adjacent_loopback-Frequency (MHz):8000]", - "duration": 8.556738000001133, - "run_index": 50, - "setup": { - "name": "setup", - "duration": 0.0005398000012064585, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 8.555321199999526, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 5 input and connect spectrum analyzer into channel 5 output. Press Enter when complete \n\nPower level (dBm): -1.923913E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003371999991941266, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:5-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.020006300002933, - "run_index": 51, - "setup": { - "name": "setup", - "duration": 0.00047840000115684234, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0186850000009144, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.103073E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003644999997050036, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:5-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.031331800000771, - "run_index": 52, - "setup": { - "name": "setup", - "duration": 0.0017182000010507181, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0275510999999824, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.058268E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003442999986873474, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:5-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.0571131000015157, - "run_index": 53, - "setup": { - "name": "setup", - "duration": 0.0006011000004946254, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0555674000006547, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.297559E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003434999998717103, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:5-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.071070600002713, - "run_index": 54, - "setup": { - "name": "setup", - "duration": 0.0005439000015030615, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0696446000001743, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.711453E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033819999953266233, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:5-combined_loopback-Frequency (MHz):8000]", - "duration": 2.046693899999809, - "run_index": 55, - "setup": { - "name": "setup", - "duration": 0.0005667999994329875, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0452212000000145, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.455524E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033910000092873815, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:5-combined_loopback-Frequency (MHz):9000]", - "duration": 2.0178319000006013, - "run_index": 56, - "setup": { - "name": "setup", - "duration": 0.0004924000004393747, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.016484199999468, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.671149E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00036290000025474, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:5-combined_loopback-Frequency (MHz):10000]", - "duration": 2.0404074999987643, - "run_index": 57, - "setup": { - "name": "setup", - "duration": 0.0004565999988699332, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0391362000009394, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.830944E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003581000000849599, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:5-combined_loopback-Frequency (MHz):11000]", - "duration": 2.0220827000011923, - "run_index": 58, - "setup": { - "name": "setup", - "duration": 0.0004910000006930204, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.02042849999998, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.879952E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0006721999998262618, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:5-combined_loopback-Frequency (MHz):12000]", - "duration": 2.0277313999977196, - "run_index": 59, - "setup": { - "name": "setup", - "duration": 0.0004709999993792735, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0264169000001857, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.115681E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003724999987753108, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:6-adjacent_loopback-Frequency (MHz):8000]", - "duration": 11.0697667000004, - "run_index": 60, - "setup": { - "name": "setup", - "duration": 0.0019231000005675014, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 11.065565699998842, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 6 input and connect spectrum analyzer into channel 6 output. Press Enter when complete \n\nPower level (dBm): -1.941558E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00035480000042298343, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:6-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.0279613000002428, - "run_index": 61, - "setup": { - "name": "setup", - "duration": 0.0009358999996038619, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.025686900000437, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.157139E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0004026000005978858, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:6-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.017959900000278, - "run_index": 62, - "setup": { - "name": "setup", - "duration": 0.0004840000001422595, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0166528999998263, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.032162E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003390000001672888, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:6-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.025068300001294, - "run_index": 63, - "setup": { - "name": "setup", - "duration": 0.0004797000001417473, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0234096000003774, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.354725E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0006993000006332295, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:6-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.0176986000005854, - "run_index": 64, - "setup": { - "name": "setup", - "duration": 0.0004912000003969297, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.016135399999257, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.856872E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0005808000005345093, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:6-combined_loopback-Frequency (MHz):8000]", - "duration": 2.0264212999991287, - "run_index": 65, - "setup": { - "name": "setup", - "duration": 0.0007949999999254942, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.024460499998895, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.446358E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003708000003825873, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:6-combined_loopback-Frequency (MHz):9000]", - "duration": 2.0201574999991863, - "run_index": 66, - "setup": { - "name": "setup", - "duration": 0.0006118000001151813, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0185954999997193, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.652696E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003383999992365716, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:6-combined_loopback-Frequency (MHz):10000]", - "duration": 2.030628300000899, - "run_index": 67, - "setup": { - "name": "setup", - "duration": 0.0007820999999239575, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.028722500001095, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.845677E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00034159999995608814, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:6-combined_loopback-Frequency (MHz):11000]", - "duration": 2.037244000002829, - "run_index": 68, - "setup": { - "name": "setup", - "duration": 0.0005037000009906478, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.035897499999919, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.899574E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033910000092873815, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:6-combined_loopback-Frequency (MHz):12000]", - "duration": 2.1450617000027705, - "run_index": 69, - "setup": { - "name": "setup", - "duration": 0.0004605000012816163, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.143790000000081, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.144669E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003507000001263805, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:7-adjacent_loopback-Frequency (MHz):8000]", - "duration": 9.545419300000503, - "run_index": 70, - "setup": { - "name": "setup", - "duration": 0.0007974000000103842, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 9.543473300000187, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 7 input and connect spectrum analyzer into channel 7 output. Press Enter when complete \n\nPower level (dBm): -1.945059E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00035120000029564835, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:7-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.023984199997358, - "run_index": 71, - "setup": { - "name": "setup", - "duration": 0.0005377999987103976, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0225657999999385, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.214692E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00034279999999853317, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:7-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.118193499998597, - "run_index": 72, - "setup": { - "name": "setup", - "duration": 0.00043559999903663993, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.11698559999968, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.130521E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003367000008438481, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:7-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.03069069999583, - "run_index": 73, - "setup": { - "name": "setup", - "duration": 0.000756899999032612, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0288601999982347, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.438068E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003166999995301012, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:7-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.024442399999316, - "run_index": 74, - "setup": { - "name": "setup", - "duration": 0.0004345999986981042, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.021971800000756, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.810322E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0016014000011637108, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:7-combined_loopback-Frequency (MHz):8000]", - "duration": 2.0573285999980726, - "run_index": 75, - "setup": { - "name": "setup", - "duration": 0.0004793999996763887, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0560093999993114, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.449106E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003603999994084006, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:7-combined_loopback-Frequency (MHz):9000]", - "duration": 2.0524347000009584, - "run_index": 76, - "setup": { - "name": "setup", - "duration": 0.0013347000003705034, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.049421199999415, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.685756E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00034410000080242753, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:7-combined_loopback-Frequency (MHz):10000]", - "duration": 2.0219268999971973, - "run_index": 77, - "setup": { - "name": "setup", - "duration": 0.000818799999251496, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0199593999986973, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.863996E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003298999999969965, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:7-combined_loopback-Frequency (MHz):11000]", - "duration": 2.0359057000005123, - "run_index": 78, - "setup": { - "name": "setup", - "duration": 0.00044770000022253953, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.034661199999391, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.892315E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003491000006761169, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:7-combined_loopback-Frequency (MHz):12000]", - "duration": 2.076303599998937, - "run_index": 79, - "setup": { - "name": "setup", - "duration": 0.0004888999992544996, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.074982199999795, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.198967E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00034360000063315965, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:8-adjacent_loopback-Frequency (MHz):8000]", - "duration": 10.482392300000356, - "run_index": 80, - "setup": { - "name": "setup", - "duration": 0.0004523999996308703, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 10.481149300001562, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 8 input and connect spectrum analyzer into channel 8 output. Press Enter when complete \n\nPower level (dBm): -1.984880E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033819999953266233, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:8-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.032035899999755, - "run_index": 81, - "setup": { - "name": "setup", - "duration": 0.0005959000009170268, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.030491899999106, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.277297E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003521999988151947, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:8-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.0358886000012717, - "run_index": 82, - "setup": { - "name": "setup", - "duration": 0.000487299999804236, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0345553000006475, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.215463E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003587000010156771, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:8-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.030223899999328, - "run_index": 83, - "setup": { - "name": "setup", - "duration": 0.00046610000026703347, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.028868399998828, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.355400E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00042329999996582046, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:8-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.084106199998132, - "run_index": 84, - "setup": { - "name": "setup", - "duration": 0.00044809999963035807, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.082826899999418, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.717851E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003830999994534068, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:8-combined_loopback-Frequency (MHz):8000]", - "duration": 2.0373215999970853, - "run_index": 85, - "setup": { - "name": "setup", - "duration": 0.0005674999993061647, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.035856899999999, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.449504E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003296999984740978, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:8-combined_loopback-Frequency (MHz):9000]", - "duration": 2.0266880999988643, - "run_index": 86, - "setup": { - "name": "setup", - "duration": 0.0005559999990509823, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0252467000009347, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.721465E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003293999998277286, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:8-combined_loopback-Frequency (MHz):10000]", - "duration": 2.03090069999962, - "run_index": 87, - "setup": { - "name": "setup", - "duration": 0.0004447999999683816, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0295927000006486, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.870928E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.000418399999034591, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:8-combined_loopback-Frequency (MHz):11000]", - "duration": 2.032765300000392, - "run_index": 88, - "setup": { - "name": "setup", - "duration": 0.00042940000093949493, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.031537099999696, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.884847E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003693999988172436, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:8-combined_loopback-Frequency (MHz):12000]", - "duration": 2.0221988999983296, - "run_index": 89, - "setup": { - "name": "setup", - "duration": 0.00047839999933785293, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0209083999998256, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.161604E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033369999982824083, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:9-adjacent_loopback-Frequency (MHz):8000]", - "duration": 10.23174580000159, - "run_index": 90, - "setup": { - "name": "setup", - "duration": 0.00044830000115325674, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 10.230305699999008, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 9 input and connect spectrum analyzer into channel 9 output. Press Enter when complete \n\nPower level (dBm): -1.976288E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0005435000002762536, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:9-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.06749260000106, - "run_index": 91, - "setup": { - "name": "setup", - "duration": 0.0005968000004941132, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.065940700000283, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.247581E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00035829999978886917, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:9-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.105132099999537, - "run_index": 92, - "setup": { - "name": "setup", - "duration": 0.0005006999999750406, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.1037766999997984, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.111230E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00035399999978835694, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:9-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.03346170000259, - "run_index": 93, - "setup": { - "name": "setup", - "duration": 0.0007218000009743264, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0316868999998405, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.363839E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033120000080089085, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:9-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.033457300000009, - "run_index": 94, - "setup": { - "name": "setup", - "duration": 0.0005144000006112037, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0320724999983213, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.781742E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00035600000046542846, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:9-combined_loopback-Frequency (MHz):8000]", - "duration": 2.0266546000002563, - "run_index": 95, - "setup": { - "name": "setup", - "duration": 0.0011493000001792097, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0239923000008275, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.451257E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003636999990703771, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:9-combined_loopback-Frequency (MHz):9000]", - "duration": 2.0261093999997684, - "run_index": 96, - "setup": { - "name": "setup", - "duration": 0.0007982999995874707, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0241805000005115, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.689417E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033230000008188654, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:9-combined_loopback-Frequency (MHz):10000]", - "duration": 2.037820899999133, - "run_index": 97, - "setup": { - "name": "setup", - "duration": 0.0006632999993598787, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.036102399999436, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.851461E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003919000009773299, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:9-combined_loopback-Frequency (MHz):11000]", - "duration": 2.0414782999996532, - "run_index": 98, - "setup": { - "name": "setup", - "duration": 0.00043139999979757704, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.04027700000006, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.903589E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033849999999802094, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:9-combined_loopback-Frequency (MHz):12000]", - "duration": 2.0198719999989407, - "run_index": 99, - "setup": { - "name": "setup", - "duration": 0.0004642999992938712, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0186068000002706, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.138336E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033660000008239876, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:10-adjacent_loopback-Frequency (MHz):8000]", - "duration": 16.185600499995417, - "run_index": 100, - "setup": { - "name": "setup", - "duration": 0.0005773999982920941, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 16.184084199998324, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 10 input and connect spectrum analyzer into channel 10 output. Press Enter when complete \n\nPower level (dBm): -2.022574E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003615000005083857, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:10-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.0246377999992546, - "run_index": 101, - "setup": { - "name": "setup", - "duration": 0.0004439000003912952, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.023304600001211, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.278409E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00044539999726112, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:10-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.028040499993949, - "run_index": 102, - "setup": { - "name": "setup", - "duration": 0.0014998999977251515, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0246881999992183, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.115813E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003524999992805533, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:10-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.02651970000079, - "run_index": 103, - "setup": { - "name": "setup", - "duration": 0.0005258000019239262, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0251265999977477, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.334831E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003414999991946388, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:10-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.0292815000066184, - "run_index": 104, - "setup": { - "name": "setup", - "duration": 0.0004715000031865202, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0279570999991847, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.884731E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003814000010606833, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:10-combined_loopback-Frequency (MHz):8000]", - "duration": 2.0334686000060174, - "run_index": 105, - "setup": { - "name": "setup", - "duration": 0.0004904000015812926, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.031944000002113, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.458133E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0005438000007416122, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:10-combined_loopback-Frequency (MHz):9000]", - "duration": 2.020509599995421, - "run_index": 106, - "setup": { - "name": "setup", - "duration": 0.0006562999988091178, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0188271000006353, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.677707E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003698999971675221, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:10-combined_loopback-Frequency (MHz):10000]", - "duration": 2.0317063000074995, - "run_index": 107, - "setup": { - "name": "setup", - "duration": 0.0007619000025442801, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0295580999991216, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.870263E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0006244000032893382, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:10-combined_loopback-Frequency (MHz):11000]", - "duration": 2.0527346999988367, - "run_index": 108, - "setup": { - "name": "setup", - "duration": 0.0006905000009282958, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0509888999986288, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.920901E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003647999983513728, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:10-combined_loopback-Frequency (MHz):12000]", - "duration": 2.0445010000003094, - "run_index": 109, - "setup": { - "name": "setup", - "duration": 0.0004393999988678843, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0420749000004434, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.171465E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0015473000021302141, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:11-adjacent_loopback-Frequency (MHz):8000]", - "duration": 9.4208411000036, - "run_index": 110, - "setup": { - "name": "setup", - "duration": 0.000496600001497427, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 9.419509899998957, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 11 input and connect spectrum analyzer into channel 11 output. Press Enter when complete \n\nPower level (dBm): -1.972390E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033800000164774247, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:11-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.019560899992939, - "run_index": 111, - "setup": { - "name": "setup", - "duration": 0.0004656999990402255, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0182809999969322, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.177869E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003484999979264103, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:11-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.026848700006667, - "run_index": 112, - "setup": { - "name": "setup", - "duration": 0.0005301000019244384, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0254012000004877, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.077784E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003873000023304485, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:11-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.0307040000006964, - "run_index": 113, - "setup": { - "name": "setup", - "duration": 0.0004721000004792586, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.029406600002403, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.340207E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00035319999733474106, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:11-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.0267886000001454, - "run_index": 114, - "setup": { - "name": "setup", - "duration": 0.00046640000073239207, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0254979000019375, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.959832E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003578999967430718, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:11-combined_loopback-Frequency (MHz):8000]", - "duration": 2.0258250999941083, - "run_index": 115, - "setup": { - "name": "setup", - "duration": 0.000521999998454703, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0244277999991027, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.439508E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003532999980961904, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:11-combined_loopback-Frequency (MHz):9000]", - "duration": 2.0249253000001772, - "run_index": 116, - "setup": { - "name": "setup", - "duration": 0.0006552999984705821, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0232531000001472, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.703568E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00036160000308882445, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:11-combined_loopback-Frequency (MHz):10000]", - "duration": 2.03758359999847, - "run_index": 117, - "setup": { - "name": "setup", - "duration": 0.0015692999986640643, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0336999999999534, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.860241E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0007450000011886004, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:11-combined_loopback-Frequency (MHz):11000]", - "duration": 2.0773391999937303, - "run_index": 118, - "setup": { - "name": "setup", - "duration": 0.0004993999973521568, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0759958000016923, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.919012E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003445999973337166, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:11-combined_loopback-Frequency (MHz):12000]", - "duration": 2.042669399994338, - "run_index": 119, - "setup": { - "name": "setup", - "duration": 0.0005755999991379213, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0411755999994057, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.163225E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003425999966566451, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:12-adjacent_loopback-Frequency (MHz):8000]", - "duration": 9.128201499999705, - "run_index": 120, - "setup": { - "name": "setup", - "duration": 0.0004788000005646609, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 9.126904299999296, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 12 input and connect spectrum analyzer into channel 12 output. Press Enter when complete \n\nPower level (dBm): -2.014783E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033959999927901663, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:12-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.085030400005053, - "run_index": 121, - "setup": { - "name": "setup", - "duration": 0.0004882000030193012, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.08370179999838, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.310140E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003522000006341841, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:12-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.028650399988692, - "run_index": 122, - "setup": { - "name": "setup", - "duration": 0.0004768999970110599, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0273452999972505, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.155472E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003512999974191189, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:12-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.036192099996697, - "run_index": 123, - "setup": { - "name": "setup", - "duration": 0.00046269999802461825, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.034616900000401, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.410947E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0006498000002466142, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:12-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.026592999998684, - "run_index": 124, - "setup": { - "name": "setup", - "duration": 0.0007613999987370335, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0246886999993876, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.958745E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003815000018221326, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:12-combined_loopback-Frequency (MHz):8000]", - "duration": 2.0272747999988496, - "run_index": 125, - "setup": { - "name": "setup", - "duration": 0.0008447000000160187, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0252430999971693, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.433162E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003423000016482547, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:12-combined_loopback-Frequency (MHz):9000]", - "duration": 2.031013299994811, - "run_index": 126, - "setup": { - "name": "setup", - "duration": 0.0005033999987062998, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0295659999974305, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.707146E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00044049999996786937, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:12-combined_loopback-Frequency (MHz):10000]", - "duration": 2.0189372999957413, - "run_index": 127, - "setup": { - "name": "setup", - "duration": 0.0004607999981089961, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0175767000000633, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.867657E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00043899999946006574, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:12-combined_loopback-Frequency (MHz):11000]", - "duration": 2.018265100006829, - "run_index": 128, - "setup": { - "name": "setup", - "duration": 0.0005058000024291687, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0169209000014234, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.910048E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033260000054724514, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:12-combined_loopback-Frequency (MHz):12000]", - "duration": 2.034958900003403, - "run_index": 129, - "setup": { - "name": "setup", - "duration": 0.0005052000014984515, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0335965000012948, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.178027E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00035199999911128543, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:13-adjacent_loopback-Frequency (MHz):8000]", - "duration": 11.02199240000482, - "run_index": 130, - "setup": { - "name": "setup", - "duration": 0.0009933000001183245, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 11.01967070000319, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 13 input and connect spectrum analyzer into channel 13 output. Press Enter when complete \n\nPower level (dBm): -2.183205E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033510000139358453, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:13-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.0402009999961592, - "run_index": 131, - "setup": { - "name": "setup", - "duration": 0.0011641999990388285, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.037532899998041, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.471416E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00033970000004046597, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:13-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.059398900004453, - "run_index": 132, - "setup": { - "name": "setup", - "duration": 0.0005166000009921845, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0580248000005668, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.260308E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003409000019019004, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:13-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.031918399999995, - "run_index": 133, - "setup": { - "name": "setup", - "duration": 0.0007939999995869584, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0292277000007743, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.379913E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0011027000000467524, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:13-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.0210598000085156, - "run_index": 134, - "setup": { - "name": "setup", - "duration": 0.0005513000032806303, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0196002000011504, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.046019E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003570000008039642, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:13-combined_loopback-Frequency (MHz):8000]", - "duration": 2.0224880000023404, - "run_index": 135, - "setup": { - "name": "setup", - "duration": 0.0005715000006603077, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0208701999981713, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.452149E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00047480000284849666, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:13-combined_loopback-Frequency (MHz):9000]", - "duration": 2.0206720999958634, - "run_index": 136, - "setup": { - "name": "setup", - "duration": 0.0005411999991338234, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0185798999991675, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.703831E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0010097999984282069, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:13-combined_loopback-Frequency (MHz):10000]", - "duration": 2.0347778999966977, - "run_index": 137, - "setup": { - "name": "setup", - "duration": 0.0004822999981115572, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0334728000016185, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.849106E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00034049999885610305, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:13-combined_loopback-Frequency (MHz):11000]", - "duration": 2.0643788000052155, - "run_index": 138, - "setup": { - "name": "setup", - "duration": 0.00046270000166259706, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0631063000000722, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.904001E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003471000018180348, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:13-combined_loopback-Frequency (MHz):12000]", - "duration": 2.032577099995251, - "run_index": 139, - "setup": { - "name": "setup", - "duration": 0.0008101999992504716, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.030492999998387, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.154198E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.000463699998363154, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:14-adjacent_loopback-Frequency (MHz):8000]", - "duration": 10.780710699997144, - "run_index": 140, - "setup": { - "name": "setup", - "duration": 0.00047339999946416356, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 10.779406599998765, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 14 input and connect spectrum analyzer into channel 14 output. Press Enter when complete \n\nPower level (dBm): -2.141396E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003572999994503334, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:14-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.018499799996789, - "run_index": 141, - "setup": { - "name": "setup", - "duration": 0.00048179999794228934, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.017213700000866, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.391362E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00032250000003841706, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:14-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.033005500004947, - "run_index": 142, - "setup": { - "name": "setup", - "duration": 0.0004837000014958903, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.031386900001962, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.244143E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0006511999999929685, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:14-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.0181149000018195, - "run_index": 143, - "setup": { - "name": "setup", - "duration": 0.0004937000012432691, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.016801599998871, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.533673E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00032590000046184286, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:14-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.0176618000004964, - "run_index": 144, - "setup": { - "name": "setup", - "duration": 0.0005486000009113923, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0162196999990556, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.042763E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003448999996180646, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:14-combined_loopback-Frequency (MHz):8000]", - "duration": 2.068249399999331, - "run_index": 145, - "setup": { - "name": "setup", - "duration": 0.0006893999998283107, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.065850099999807, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.456880E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0010204999998677522, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:14-combined_loopback-Frequency (MHz):9000]", - "duration": 2.0182754999987083, - "run_index": 146, - "setup": { - "name": "setup", - "duration": 0.00047389999963343143, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.016984900001262, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.679732E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00034279999817954376, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:14-combined_loopback-Frequency (MHz):10000]", - "duration": 2.080555699994875, - "run_index": 147, - "setup": { - "name": "setup", - "duration": 0.000468999998702202, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0792535999971733, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.898911E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00036410000029718503, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:14-combined_loopback-Frequency (MHz):11000]", - "duration": 2.029328100001294, - "run_index": 148, - "setup": { - "name": "setup", - "duration": 0.0008818999995128252, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.027213000001211, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.950690E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003513000010570977, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:14-combined_loopback-Frequency (MHz):12000]", - "duration": 2.026992100003554, - "run_index": 149, - "setup": { - "name": "setup", - "duration": 0.00044180000259075314, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0257700999973167, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.168207E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.000338400001055561, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:15-adjacent_loopback-Frequency (MHz):8000]", - "duration": 10.090105599996605, - "run_index": 150, - "setup": { - "name": "setup", - "duration": 0.0005161999979463872, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 10.08874360000118, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 15 input and connect spectrum analyzer into channel 15 output. Press Enter when complete \n\nPower level (dBm): -2.231021E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003295999995316379, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:15-adjacent_loopback-Frequency (MHz):9000]", - "duration": 2.055302800006757, - "run_index": 151, - "setup": { - "name": "setup", - "duration": 0.0008186000013665762, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0533208000015293, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.430204E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003448000024945941, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:15-adjacent_loopback-Frequency (MHz):10000]", - "duration": 2.023060700001224, - "run_index": 152, - "setup": { - "name": "setup", - "duration": 0.0012954000012541655, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.020099699999264, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.259252E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003701999994518701, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:15-adjacent_loopback-Frequency (MHz):11000]", - "duration": 2.0302005000048666, - "run_index": 153, - "setup": { - "name": "setup", - "duration": 0.00045590000081574544, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0289618000024348, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.610565E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003269000008003786, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:15-adjacent_loopback-Frequency (MHz):12000]", - "duration": 2.046934299993154, - "run_index": 154, - "setup": { - "name": "setup", - "duration": 0.00044919999709236436, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.045683199998166, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.114966E+00\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.000352700000803452, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:15-combined_loopback-Frequency (MHz):8000]", - "duration": 2.028437599998142, - "run_index": 155, - "setup": { - "name": "setup", - "duration": 0.00045559999853139743, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0271685000006983, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.439728E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00035790000038105063, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:15-combined_loopback-Frequency (MHz):9000]", - "duration": 2.0305951999980607, - "run_index": 156, - "setup": { - "name": "setup", - "duration": 0.00045229999886942096, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0293617000024824, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.731952E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003288999978394713, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:15-combined_loopback-Frequency (MHz):10000]", - "duration": 2.027909099997487, - "run_index": 157, - "setup": { - "name": "setup", - "duration": 0.0004670999987865798, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.026418500001455, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.901336E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0005563999984588008, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:15-combined_loopback-Frequency (MHz):11000]", - "duration": 2.0347906000024523, - "run_index": 158, - "setup": { - "name": "setup", - "duration": 0.00047249999988707714, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0319688000017777, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -4.952678E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0018768000009004027, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_loopback[channel:15-combined_loopback-Frequency (MHz):12000]", - "duration": 2.0347915000020294, - "run_index": 159, - "setup": { - "name": "setup", - "duration": 0.0005115000021760352, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.033414099998481, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -5.163340E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003543999991961755, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_tx_combined_out[Frequency (MHz):8000]", - "duration": 28.78311229999599, - "run_index": 160, - "setup": { - "name": "setup", - "duration": 0.0003935999993700534, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 28.78203829999984, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into channel 0 input. Connect spectrum analyzer to the combined Tx out SMA port on top of the board. Press enter when complete\n\nPower level (dBm): -3.174071E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00028679999741143547, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_tx_combined_out[Frequency (MHz):9000]", - "duration": 2.031966000002285, - "run_index": 161, - "setup": { - "name": "setup", - "duration": 0.0004374000018287916, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.030790699998761, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.407167E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00030049999986658804, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_tx_combined_out[Frequency (MHz):10000]", - "duration": 2.036195599997882, - "run_index": 162, - "setup": { - "name": "setup", - "duration": 0.0004895999991276767, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0349575000000186, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.492603E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00025889999960782006, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_tx_combined_out[Frequency (MHz):11000]", - "duration": 2.0184485999998287, - "run_index": 163, - "setup": { - "name": "setup", - "duration": 0.0003440000000409782, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0175023000010697, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.632546E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00025829999867710285, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_tx_combined_out[Frequency (MHz):12000]", - "duration": 2.089373800004978, - "run_index": 164, - "setup": { - "name": "setup", - "duration": 0.0003432000012253411, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.087579700000788, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -3.544490E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0011077000017394312, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_rx_combined_in[Frequency (MHz):8000]", - "duration": 58.27733509999962, - "run_index": 165, - "setup": { - "name": "setup", - "duration": 0.00034840000080293976, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 58.27634559999933, - "outcome": "passed", - "stdout": "\n\nConnect signal generator into Rx SMA input on top of the board. Connect spectrum analyzer into channel 0 output. Press enter when complete\n\nPower level (dBm): -1.851318E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00029269999868120067, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_rx_combined_in[Frequency (MHz):9000]", - "duration": 2.034290100000362, - "run_index": 166, - "setup": { - "name": "setup", - "duration": 0.000369400000636233, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.033233800000744, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -1.921726E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0003174999983457383, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_rx_combined_in[Frequency (MHz):10000]", - "duration": 2.018717499999184, - "run_index": 167, - "setup": { - "name": "setup", - "duration": 0.0003198000013071578, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0176758999987214, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.056622E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.0004019999978481792, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_rx_combined_in[Frequency (MHz):11000]", - "duration": 2.0237873999976728, - "run_index": 168, - "setup": { - "name": "setup", - "duration": 0.0003311000000394415, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.022870899996633, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.154653E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.00025430000096093863, - "outcome": "passed" - }, - "outcome": "passed" - }, - { - "name": "test/test_triton_cal.py::test_rx_combined_in[Frequency (MHz):12000]", - "duration": 2.0515951000015775, - "run_index": 169, - "setup": { - "name": "setup", - "duration": 0.00032890000147745013, - "outcome": "passed" - }, - "call": { - "name": "call", - "duration": 2.0335521000015433, - "outcome": "passed", - "stdout": "\n\nPower level (dBm): -2.317224E+01\n\n" - }, - "teardown": { - "name": "teardown", - "duration": 0.017385199997079326, - "outcome": "passed" - }, - "outcome": "passed" - } - ], - "summary": { - "passed": 170, - "num_tests": 170, - "duration": 595.9680950641632 - }, - "created_at": "2024-04-15 13:29:36.129262" - } -} \ No newline at end of file +{"report": {"environment": {"Python": "3.10.12", "Platform": "Linux-6.5.0-28-generic-x86_64-with-glibc2.35"}, "tests": [{"name": "test/test_triton_cal.py::test_loopback[channel:0-adjacent_loopback-Frequency (MHz):8000]", "duration": 3.4237830839847447, "run_index": 0, "setup": {"name": "setup", "duration": 0.0005149549979250878, "outcome": "passed"}, "call": {"name": "call", "duration": 3.422167612996418, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 0 input and connect spectrum analyzer into channel 0 output. Press Enter when complete \n\nPower level (dBm): -2.333594E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005855609924765304, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:0-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.035476531018503, "run_index": 1, "setup": {"name": "setup", "duration": 0.0008810730068944395, "outcome": "passed"}, "call": {"name": "call", "duration": 2.033272473010584, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.780156E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00044191199413035065, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:0-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.028088621009374, "run_index": 2, "setup": {"name": "setup", "duration": 0.000895819001016207, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0259451400052058, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.476712E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003518430021358654, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:0-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.031128709000768, "run_index": 3, "setup": {"name": "setup", "duration": 0.0007767369970679283, "outcome": "passed"}, "call": {"name": "call", "duration": 2.029083827001159, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.524421E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.000491408005473204, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:0-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.039271468995139, "run_index": 4, "setup": {"name": "setup", "duration": 0.0009153540013357997, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0370494259987026, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.237093E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003913349937647581, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:0-combined_loopback-Frequency (MHz):8000]", "duration": 2.0297108100057812, "run_index": 5, "setup": {"name": "setup", "duration": 0.0007349070074269548, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0278452439961256, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.457435E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003957519948016852, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:0-combined_loopback-Frequency (MHz):9000]", "duration": 2.0354769459954696, "run_index": 6, "setup": {"name": "setup", "duration": 0.0008162529993569478, "outcome": "passed"}, "call": {"name": "call", "duration": 2.03348215999722, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.742538E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003622799995355308, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:0-combined_loopback-Frequency (MHz):10000]", "duration": 2.050934398008394, "run_index": 7, "setup": {"name": "setup", "duration": 0.0007754370017210022, "outcome": "passed"}, "call": {"name": "call", "duration": 2.048983305998263, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.829165E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00040021800668910146, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:0-combined_loopback-Frequency (MHz):11000]", "duration": 2.042677482997533, "run_index": 8, "setup": {"name": "setup", "duration": 0.0007948129932628945, "outcome": "passed"}, "call": {"name": "call", "duration": 2.040635283003212, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.904467E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004525740077951923, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:0-combined_loopback-Frequency (MHz):12000]", "duration": 2.0443833800090943, "run_index": 9, "setup": {"name": "setup", "duration": 0.0009132730046985671, "outcome": "passed"}, "call": {"name": "call", "duration": 2.042161560995737, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.183840E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003952730039600283, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:1-adjacent_loopback-Frequency (MHz):8000]", "duration": 2.595618648992968, "run_index": 10, "setup": {"name": "setup", "duration": 0.0008277739980258048, "outcome": "passed"}, "call": {"name": "call", "duration": 2.5934666999964975, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 1 input and connect spectrum analyzer into channel 1 output. Press Enter when complete \n\nPower level (dBm): -2.230024E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004964010004187003, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:1-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.0390381420147605, "run_index": 11, "setup": {"name": "setup", "duration": 0.0009279310033889487, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0367857509991154, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.679692E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003965290088672191, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:1-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.0438845260359813, "run_index": 12, "setup": {"name": "setup", "duration": 0.000799826011643745, "outcome": "passed"}, "call": {"name": "call", "duration": 2.041783374006627, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.381808E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005015000060666353, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:1-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.0370416169898817, "run_index": 13, "setup": {"name": "setup", "duration": 0.0009704429976409301, "outcome": "passed"}, "call": {"name": "call", "duration": 2.034720103998552, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.432963E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003806269960477948, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:1-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.0392269080184633, "run_index": 14, "setup": {"name": "setup", "duration": 0.000764256008551456, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0373274970042985, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.176468E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003708989970618859, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:1-combined_loopback-Frequency (MHz):8000]", "duration": 2.0817219509917777, "run_index": 15, "setup": {"name": "setup", "duration": 0.0008536319946870208, "outcome": "passed"}, "call": {"name": "call", "duration": 2.079657128007966, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.456286E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003575589944375679, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:1-combined_loopback-Frequency (MHz):9000]", "duration": 2.0468090389913414, "run_index": 16, "setup": {"name": "setup", "duration": 0.0006434209935832769, "outcome": "passed"}, "call": {"name": "call", "duration": 2.04523168700689, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.722204E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0002905099972849712, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:1-combined_loopback-Frequency (MHz):10000]", "duration": 2.034910257003503, "run_index": 17, "setup": {"name": "setup", "duration": 0.0005985280004097149, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0333347109990427, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.833835E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00037849000364076346, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:1-combined_loopback-Frequency (MHz):11000]", "duration": 2.0360577319952426, "run_index": 18, "setup": {"name": "setup", "duration": 0.0007946120022097602, "outcome": "passed"}, "call": {"name": "call", "duration": 2.034012158997939, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.944946E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004563489928841591, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:1-combined_loopback-Frequency (MHz):12000]", "duration": 2.030499544023769, "run_index": 19, "setup": {"name": "setup", "duration": 0.0011158740089740604, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0277684650063748, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.174156E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004993309994461015, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:2-adjacent_loopback-Frequency (MHz):8000]", "duration": 2.6277638239698717, "run_index": 20, "setup": {"name": "setup", "duration": 0.0009535339922877029, "outcome": "passed"}, "call": {"name": "call", "duration": 2.625446669990197, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 2 input and connect spectrum analyzer into channel 2 output. Press Enter when complete \n\nPower level (dBm): -2.218463E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00041008599509950727, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:2-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.026995860011084, "run_index": 21, "setup": {"name": "setup", "duration": 0.0008173020032700151, "outcome": "passed"}, "call": {"name": "call", "duration": 2.024840772995958, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.670097E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005204830085858703, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:2-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.0279330119956285, "run_index": 22, "setup": {"name": "setup", "duration": 0.0009457790001761168, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0256023519905284, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.412889E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004391020047478378, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:2-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.0387553560140077, "run_index": 23, "setup": {"name": "setup", "duration": 0.0008965930028352886, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0365092270076275, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.487153E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.000452943000709638, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:2-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.0558796920086024, "run_index": 24, "setup": {"name": "setup", "duration": 0.0008359280036529526, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0538086330052465, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.180782E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00039920299605000764, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:2-combined_loopback-Frequency (MHz):8000]", "duration": 2.0417307519819587, "run_index": 25, "setup": {"name": "setup", "duration": 0.0007972559978952631, "outcome": "passed"}, "call": {"name": "call", "duration": 2.039687578988378, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.454370E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00044866099779028445, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:2-combined_loopback-Frequency (MHz):9000]", "duration": 2.043888601969229, "run_index": 26, "setup": {"name": "setup", "duration": 0.0009049879881786183, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0415777290036203, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.730575E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.000500896989251487, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:2-combined_loopback-Frequency (MHz):10000]", "duration": 2.0432073950069025, "run_index": 27, "setup": {"name": "setup", "duration": 0.0010024810035247356, "outcome": "passed"}, "call": {"name": "call", "duration": 2.040668788002222, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.833489E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005336449976311997, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:2-combined_loopback-Frequency (MHz):11000]", "duration": 2.050465222011553, "run_index": 28, "setup": {"name": "setup", "duration": 0.0010982170060742646, "outcome": "passed"}, "call": {"name": "call", "duration": 2.047721034992719, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.917443E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005477530066855252, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:2-combined_loopback-Frequency (MHz):12000]", "duration": 2.038369190006051, "run_index": 29, "setup": {"name": "setup", "duration": 0.0010419830068713054, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0358226459939033, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.150561E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00046257799840532243, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:3-adjacent_loopback-Frequency (MHz):8000]", "duration": 2.9321403309877496, "run_index": 30, "setup": {"name": "setup", "duration": 0.0008923669956857339, "outcome": "passed"}, "call": {"name": "call", "duration": 2.9299197340005776, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 3 input and connect spectrum analyzer into channel 3 output. Press Enter when complete \n\nPower level (dBm): -2.171998E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004358629958005622, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:3-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.032365074963309, "run_index": 31, "setup": {"name": "setup", "duration": 0.0009310789901064709, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0300485999905504, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.601655E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004543169925455004, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:3-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.0357997490355046, "run_index": 32, "setup": {"name": "setup", "duration": 0.0008512050117133185, "outcome": "passed"}, "call": {"name": "call", "duration": 2.033661766006844, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.347116E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004355730052338913, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:3-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.031417287988006, "run_index": 33, "setup": {"name": "setup", "duration": 0.0009004820021800697, "outcome": "passed"}, "call": {"name": "call", "duration": 2.029183871985879, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.395868E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00043245199776720256, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:3-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.075906489000772, "run_index": 34, "setup": {"name": "setup", "duration": 0.0008746789972065017, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0737725799990585, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.151501E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003845510073006153, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:3-combined_loopback-Frequency (MHz):8000]", "duration": 2.0436059920029948, "run_index": 35, "setup": {"name": "setup", "duration": 0.0007113879983080551, "outcome": "passed"}, "call": {"name": "call", "duration": 2.041825100008282, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.451448E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003581159980967641, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:3-combined_loopback-Frequency (MHz):9000]", "duration": 2.029049734977889, "run_index": 36, "setup": {"name": "setup", "duration": 0.0007765019981889054, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0269924539898057, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.751336E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005042769917054102, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:3-combined_loopback-Frequency (MHz):10000]", "duration": 2.0312319439981366, "run_index": 37, "setup": {"name": "setup", "duration": 0.0009009530040202662, "outcome": "passed"}, "call": {"name": "call", "duration": 2.028981190000195, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.813161E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00044884798990096897, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:3-combined_loopback-Frequency (MHz):11000]", "duration": 2.059288151009241, "run_index": 38, "setup": {"name": "setup", "duration": 0.000909384005353786, "outcome": "passed"}, "call": {"name": "call", "duration": 2.057073436008068, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.909009E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00039594699046574533, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:3-combined_loopback-Frequency (MHz):12000]", "duration": 2.090973212980316, "run_index": 39, "setup": {"name": "setup", "duration": 0.0009045149927260354, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0887620050052647, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.194501E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00040217798959929496, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:4-adjacent_loopback-Frequency (MHz):8000]", "duration": 17.68417252598738, "run_index": 40, "setup": {"name": "setup", "duration": 0.0009182139910990372, "outcome": "passed"}, "call": {"name": "call", "duration": 17.68178541700763, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 4 input and connect spectrum analyzer into channel 4 output. Press Enter when complete \n\nPower level (dBm): -2.138231E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005506809975486249, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:4-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.0788413740083342, "run_index": 41, "setup": {"name": "setup", "duration": 0.0010679810075089335, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0761381899937987, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.586224E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.000567221999517642, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:4-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.035882121010218, "run_index": 42, "setup": {"name": "setup", "duration": 0.001128596006310545, "outcome": "passed"}, "call": {"name": "call", "duration": 2.033210601002793, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.319999E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00041432799480389804, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:4-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.048480887970072, "run_index": 43, "setup": {"name": "setup", "duration": 0.0008712439885130152, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0463619229994947, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.410837E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003764769935514778, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:4-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.0297993649874115, "run_index": 44, "setup": {"name": "setup", "duration": 0.0007830190006643534, "outcome": "passed"}, "call": {"name": "call", "duration": 2.027865029987879, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.081164E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003682969982037321, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:4-combined_loopback-Frequency (MHz):8000]", "duration": 2.0434262369963108, "run_index": 45, "setup": {"name": "setup", "duration": 0.0007363339973380789, "outcome": "passed"}, "call": {"name": "call", "duration": 2.041555160001735, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.448893E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00039840899989940226, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:4-combined_loopback-Frequency (MHz):9000]", "duration": 2.0496248730050866, "run_index": 46, "setup": {"name": "setup", "duration": 0.0008716960001038387, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0474495840026066, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.749330E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00043189700227230787, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:4-combined_loopback-Frequency (MHz):10000]", "duration": 2.054875328001799, "run_index": 47, "setup": {"name": "setup", "duration": 0.0008912199991755188, "outcome": "passed"}, "call": {"name": "call", "duration": 2.052721542000654, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.819561E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00037134600279387087, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:4-combined_loopback-Frequency (MHz):11000]", "duration": 2.038730571002816, "run_index": 48, "setup": {"name": "setup", "duration": 0.000754316002712585, "outcome": "passed"}, "call": {"name": "call", "duration": 2.03686325099261, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.903098E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00035868800478056073, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:4-combined_loopback-Frequency (MHz):12000]", "duration": 2.047250421019271, "run_index": 49, "setup": {"name": "setup", "duration": 0.0008040520042413846, "outcome": "passed"}, "call": {"name": "call", "duration": 2.045259934006026, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.190147E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003823830047622323, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:5-adjacent_loopback-Frequency (MHz):8000]", "duration": 2.6454365979880095, "run_index": 50, "setup": {"name": "setup", "duration": 0.0008391960000153631, "outcome": "passed"}, "call": {"name": "call", "duration": 2.6432307959912578, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 5 input and connect spectrum analyzer into channel 5 output. Press Enter when complete \n\nPower level (dBm): -2.134590E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005274099967209622, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:5-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.0338732299715048, "run_index": 51, "setup": {"name": "setup", "duration": 0.0010435899894218892, "outcome": "passed"}, "call": {"name": "call", "duration": 2.03133089999028, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.585574E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00045515000238083303, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:5-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.083566440982395, "run_index": 52, "setup": {"name": "setup", "duration": 0.0009243649983545765, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0811438109958544, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.289994E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005738999898312613, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:5-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.088176922974526, "run_index": 53, "setup": {"name": "setup", "duration": 0.001118485990446061, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0853919479995966, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.346200E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005480029940372333, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:5-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.059839314009878, "run_index": 54, "setup": {"name": "setup", "duration": 0.0009432240040041506, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0575495420052903, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.065976E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00040332399657927454, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:5-combined_loopback-Frequency (MHz):8000]", "duration": 2.0394388960121432, "run_index": 55, "setup": {"name": "setup", "duration": 0.0008570180070819333, "outcome": "passed"}, "call": {"name": "call", "duration": 2.037260728000547, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.448481E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00046413199743255973, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:5-combined_loopback-Frequency (MHz):9000]", "duration": 2.0458541930129286, "run_index": 56, "setup": {"name": "setup", "duration": 0.0009758020023582503, "outcome": "passed"}, "call": {"name": "call", "duration": 2.043521793006221, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.728931E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00038079600199125707, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:5-combined_loopback-Frequency (MHz):10000]", "duration": 2.0275173490081215, "run_index": 57, "setup": {"name": "setup", "duration": 0.0007531400042353198, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0254948920046445, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.808509E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005161769950063899, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:5-combined_loopback-Frequency (MHz):11000]", "duration": 2.0403383640077664, "run_index": 58, "setup": {"name": "setup", "duration": 0.0009728750010253862, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0378208909969544, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.893351E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005717230087611824, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:5-combined_loopback-Frequency (MHz):12000]", "duration": 2.025403695006389, "run_index": 59, "setup": {"name": "setup", "duration": 0.0010517850023461506, "outcome": "passed"}, "call": {"name": "call", "duration": 2.022943686999497, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.169255E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003564380021998659, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:6-adjacent_loopback-Frequency (MHz):8000]", "duration": 7.9345105459942715, "run_index": 60, "setup": {"name": "setup", "duration": 0.0007723769958829507, "outcome": "passed"}, "call": {"name": "call", "duration": 7.932531429003575, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 6 input and connect spectrum analyzer into channel 6 output. Press Enter when complete \n\nPower level (dBm): -2.166410E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004343629989307374, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:6-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.03620172997762, "run_index": 61, "setup": {"name": "setup", "duration": 0.0008597409905632958, "outcome": "passed"}, "call": {"name": "call", "duration": 2.034098087999155, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.564763E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003841599973384291, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:6-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.043914455003687, "run_index": 62, "setup": {"name": "setup", "duration": 0.0008221129974117503, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0418042410019552, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.296181E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00046598800690844655, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:6-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.046430756978225, "run_index": 63, "setup": {"name": "setup", "duration": 0.0008405559929087758, "outcome": "passed"}, "call": {"name": "call", "duration": 2.044246221994399, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.339686E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005034229980083182, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:6-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.043364665005356, "run_index": 64, "setup": {"name": "setup", "duration": 0.0008891990000847727, "outcome": "passed"}, "call": {"name": "call", "duration": 2.041216480996809, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.039794E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003697860083775595, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:6-combined_loopback-Frequency (MHz):8000]", "duration": 2.0363473259931197, "run_index": 65, "setup": {"name": "setup", "duration": 0.0007700080022914335, "outcome": "passed"}, "call": {"name": "call", "duration": 2.034432458996889, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.432702E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00037485099164769053, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:6-combined_loopback-Frequency (MHz):9000]", "duration": 2.0388009779999265, "run_index": 66, "setup": {"name": "setup", "duration": 0.0007919530034996569, "outcome": "passed"}, "call": {"name": "call", "duration": 2.036760572998901, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.736061E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004564989940263331, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:6-combined_loopback-Frequency (MHz):10000]", "duration": 2.0318424699798925, "run_index": 67, "setup": {"name": "setup", "duration": 0.0008549999911338091, "outcome": "passed"}, "call": {"name": "call", "duration": 2.029765908999252, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.812300E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003665609983727336, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:6-combined_loopback-Frequency (MHz):11000]", "duration": 2.030527520022588, "run_index": 68, "setup": {"name": "setup", "duration": 0.0007468360126949847, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0285842409939505, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.898027E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00044960700324736536, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:6-combined_loopback-Frequency (MHz):12000]", "duration": 2.0416530879883794, "run_index": 69, "setup": {"name": "setup", "duration": 0.0008907099982025102, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0395012730004964, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.139090E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003703949914779514, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:7-adjacent_loopback-Frequency (MHz):8000]", "duration": 9.234801810001954, "run_index": 70, "setup": {"name": "setup", "duration": 0.00073350100137759, "outcome": "passed"}, "call": {"name": "call", "duration": 9.232965083996532, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 7 input and connect spectrum analyzer into channel 7 output. Press Enter when complete \n\nPower level (dBm): -2.130852E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003697240026667714, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:7-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.084169726993423, "run_index": 71, "setup": {"name": "setup", "duration": 0.0008331949939019978, "outcome": "passed"}, "call": {"name": "call", "duration": 2.082135112999822, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.558909E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003682240057969466, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:7-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.044606023002416, "run_index": 72, "setup": {"name": "setup", "duration": 0.0008168530039256439, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0425996580015635, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.246423E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00037265899300109595, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:7-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.0444810000044527, "run_index": 73, "setup": {"name": "setup", "duration": 0.0007908560073701665, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0425603069888894, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.358928E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003389810008229688, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:7-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.047432892024517, "run_index": 74, "setup": {"name": "setup", "duration": 0.0007365900091826916, "outcome": "passed"}, "call": {"name": "call", "duration": 2.04556199000217, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.066342E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00039772200398147106, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:7-combined_loopback-Frequency (MHz):8000]", "duration": 2.083107930026017, "run_index": 75, "setup": {"name": "setup", "duration": 0.0007995860069058836, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0810935920017073, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.432290E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004151660104980692, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:7-combined_loopback-Frequency (MHz):9000]", "duration": 2.038606937014265, "run_index": 76, "setup": {"name": "setup", "duration": 0.0008479700045427307, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0363465010013897, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.740152E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005644960037898272, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:7-combined_loopback-Frequency (MHz):10000]", "duration": 2.0455326060182415, "run_index": 77, "setup": {"name": "setup", "duration": 0.0009843300067586824, "outcome": "passed"}, "call": {"name": "call", "duration": 2.043131917002029, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.803357E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004320290026953444, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:7-combined_loopback-Frequency (MHz):11000]", "duration": 2.027963907981757, "run_index": 78, "setup": {"name": "setup", "duration": 0.0008533499931218103, "outcome": "passed"}, "call": {"name": "call", "duration": 2.025858029999654, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.909830E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003991779958596453, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:7-combined_loopback-Frequency (MHz):12000]", "duration": 2.0495096530066803, "run_index": 79, "setup": {"name": "setup", "duration": 0.0008115800010273233, "outcome": "passed"}, "call": {"name": "call", "duration": 2.047403372998815, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.165433E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004831200058106333, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:8-adjacent_loopback-Frequency (MHz):8000]", "duration": 3.08751140597451, "run_index": 80, "setup": {"name": "setup", "duration": 0.00082388699229341, "outcome": "passed"}, "call": {"name": "call", "duration": 3.085375883994857, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 8 input and connect spectrum analyzer into channel 8 output. Press Enter when complete \n\nPower level (dBm): -2.089874E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004877479950664565, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:8-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.0629628469905583, "run_index": 81, "setup": {"name": "setup", "duration": 0.0009370979969389737, "outcome": "passed"}, "call": {"name": "call", "duration": 2.060724675990059, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.541243E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.000363975006621331, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:8-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.0485594799829414, "run_index": 82, "setup": {"name": "setup", "duration": 0.001230720998137258, "outcome": "passed"}, "call": {"name": "call", "duration": 2.04565856399131, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.239611E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004394739953568205, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:8-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.029384929992375, "run_index": 83, "setup": {"name": "setup", "duration": 0.0008531739877071232, "outcome": "passed"}, "call": {"name": "call", "duration": 2.027285315009067, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.300282E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003932670078938827, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:8-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.107860622010776, "run_index": 84, "setup": {"name": "setup", "duration": 0.0008147019980242476, "outcome": "passed"}, "call": {"name": "call", "duration": 2.1056896430091, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.034652E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005415750056272373, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:8-combined_loopback-Frequency (MHz):8000]", "duration": 2.0703805049852235, "run_index": 85, "setup": {"name": "setup", "duration": 0.0009319550008513033, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0680033799872035, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.448103E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005132149963174015, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:8-combined_loopback-Frequency (MHz):9000]", "duration": 2.045440838992363, "run_index": 86, "setup": {"name": "setup", "duration": 0.0009127049997914582, "outcome": "passed"}, "call": {"name": "call", "duration": 2.043218397986493, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.713148E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00039703100628685206, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:8-combined_loopback-Frequency (MHz):10000]", "duration": 2.034533181998995, "run_index": 87, "setup": {"name": "setup", "duration": 0.0008157150004990399, "outcome": "passed"}, "call": {"name": "call", "duration": 2.032539858002565, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.811480E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00036189399543218315, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:8-combined_loopback-Frequency (MHz):11000]", "duration": 2.0630178909923416, "run_index": 88, "setup": {"name": "setup", "duration": 0.0007644239958608523, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0610266139992746, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.916929E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004624290013452992, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:8-combined_loopback-Frequency (MHz):12000]", "duration": 2.037849278000067, "run_index": 89, "setup": {"name": "setup", "duration": 0.000841676999698393, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0357237970019924, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.174973E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00044212699867784977, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:9-adjacent_loopback-Frequency (MHz):8000]", "duration": 8.95846889000677, "run_index": 90, "setup": {"name": "setup", "duration": 0.0008805480028968304, "outcome": "passed"}, "call": {"name": "call", "duration": 8.956328107000445, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 9 input and connect spectrum analyzer into channel 9 output. Press Enter when complete \n\nPower level (dBm): -2.132819E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00037968700053170323, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:9-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.026768315001391, "run_index": 91, "setup": {"name": "setup", "duration": 0.000756838999222964, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0248802620044444, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.499283E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00037437499850057065, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:9-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.0333644450001884, "run_index": 92, "setup": {"name": "setup", "duration": 0.0007400839967885986, "outcome": "passed"}, "call": {"name": "call", "duration": 2.031472369999392, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.223572E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00041190700721926987, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:9-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.0420880029996624, "run_index": 93, "setup": {"name": "setup", "duration": 0.0008328370022354648, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0400548369943863, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.339079E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00036749200080521405, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:9-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.0270997249754146, "run_index": 94, "setup": {"name": "setup", "duration": 0.0008644329936942086, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0249075049941894, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.024876E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004633539938367903, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:9-combined_loopback-Frequency (MHz):8000]", "duration": 2.035332404979272, "run_index": 95, "setup": {"name": "setup", "duration": 0.0009161509951809421, "outcome": "passed"}, "call": {"name": "call", "duration": 2.032990975989378, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.442798E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005091269995318726, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:9-combined_loopback-Frequency (MHz):9000]", "duration": 2.0363927369908197, "run_index": 96, "setup": {"name": "setup", "duration": 0.0009124179923674092, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0341615229990566, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.733546E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004063780070282519, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:9-combined_loopback-Frequency (MHz):10000]", "duration": 2.050076312982128, "run_index": 97, "setup": {"name": "setup", "duration": 0.0008383849926758558, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0479841339983977, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.819061E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004154089983785525, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:9-combined_loopback-Frequency (MHz):11000]", "duration": 2.0418431700236397, "run_index": 98, "setup": {"name": "setup", "duration": 0.0008300440094899386, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0397746180096874, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.904827E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004084639949724078, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:9-combined_loopback-Frequency (MHz):12000]", "duration": 2.0337457860150607, "run_index": 99, "setup": {"name": "setup", "duration": 0.0008616980048827827, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0315728849964216, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.155685E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00044950500887352973, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:10-adjacent_loopback-Frequency (MHz):8000]", "duration": 2.6482743129890878, "run_index": 100, "setup": {"name": "setup", "duration": 0.000865702997543849, "outcome": "passed"}, "call": {"name": "call", "duration": 2.6461278539936757, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 10 input and connect spectrum analyzer into channel 10 output. Press Enter when complete \n\nPower level (dBm): -2.112556E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00041505300032440573, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:10-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.0273147900006734, "run_index": 101, "setup": {"name": "setup", "duration": 0.0009142409980995581, "outcome": "passed"}, "call": {"name": "call", "duration": 2.025118064993876, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.513917E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00036824301059823483, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:10-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.036515618994599, "run_index": 102, "setup": {"name": "setup", "duration": 0.0007809329981682822, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0345917609956814, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.199453E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003619920025812462, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:10-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.040178162016673, "run_index": 103, "setup": {"name": "setup", "duration": 0.0008051390032051131, "outcome": "passed"}, "call": {"name": "call", "duration": 2.038146360006067, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.357694E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004215240041958168, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:10-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.0378287569910754, "run_index": 104, "setup": {"name": "setup", "duration": 0.0008311720011988655, "outcome": "passed"}, "call": {"name": "call", "duration": 2.035793642993667, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.008343E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00037276999501045793, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:10-combined_loopback-Frequency (MHz):8000]", "duration": 2.03956505098904, "run_index": 105, "setup": {"name": "setup", "duration": 0.0008111939969239756, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0374869109946303, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.442154E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00045575200056191534, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:10-combined_loopback-Frequency (MHz):9000]", "duration": 2.043152480997378, "run_index": 106, "setup": {"name": "setup", "duration": 0.0009074469999177381, "outcome": "passed"}, "call": {"name": "call", "duration": 2.04077830100141, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.727101E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005592859961325303, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:10-combined_loopback-Frequency (MHz):10000]", "duration": 2.0317914210172603, "run_index": 107, "setup": {"name": "setup", "duration": 0.0008607240015408024, "outcome": "passed"}, "call": {"name": "call", "duration": 2.029663370005437, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.812026E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004066030087415129, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:10-combined_loopback-Frequency (MHz):11000]", "duration": 2.030757344997255, "run_index": 108, "setup": {"name": "setup", "duration": 0.000931104994378984, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0284472560015274, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.906392E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004478790069697425, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:10-combined_loopback-Frequency (MHz):12000]", "duration": 2.040303118992597, "run_index": 109, "setup": {"name": "setup", "duration": 0.0009627489926060662, "outcome": "passed"}, "call": {"name": "call", "duration": 2.037871623004321, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.154108E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005059980030637234, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:11-adjacent_loopback-Frequency (MHz):8000]", "duration": 2.7789927620178787, "run_index": 110, "setup": {"name": "setup", "duration": 0.0009325520077254623, "outcome": "passed"}, "call": {"name": "call", "duration": 2.7766395560029196, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 11 input and connect spectrum analyzer into channel 11 output. Press Enter when complete \n\nPower level (dBm): -2.081146E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.000488101999508217, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:11-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.0457786450133426, "run_index": 111, "setup": {"name": "setup", "duration": 0.0009482210007263348, "outcome": "passed"}, "call": {"name": "call", "duration": 2.043487229006132, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.481223E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00039497400575783104, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:11-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.0384854230069323, "run_index": 112, "setup": {"name": "setup", "duration": 0.0008000060042832047, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0364819200040074, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.238755E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004034909943584353, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:11-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.0505669940030202, "run_index": 113, "setup": {"name": "setup", "duration": 0.0008282269991468638, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0484831979993032, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.316890E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00042734200542327017, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:11-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.029968999006087, "run_index": 114, "setup": {"name": "setup", "duration": 0.0008904349961085245, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0277450310095446, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.939113E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.000443098004325293, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:11-combined_loopback-Frequency (MHz):8000]", "duration": 2.0373710400162963, "run_index": 115, "setup": {"name": "setup", "duration": 0.0008077220118138939, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0353612619946944, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.441435E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00039433399797417223, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:11-combined_loopback-Frequency (MHz):9000]", "duration": 2.03593585199269, "run_index": 116, "setup": {"name": "setup", "duration": 0.0008720420009922236, "outcome": "passed"}, "call": {"name": "call", "duration": 2.033753618990886, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.748139E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00043814899981953204, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:11-combined_loopback-Frequency (MHz):10000]", "duration": 2.0384847550012637, "run_index": 117, "setup": {"name": "setup", "duration": 0.0008605509938206524, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0362491230043815, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.823505E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005145300092408434, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:11-combined_loopback-Frequency (MHz):11000]", "duration": 2.065440271006082, "run_index": 118, "setup": {"name": "setup", "duration": 0.0009060140000656247, "outcome": "passed"}, "call": {"name": "call", "duration": 2.063240950999898, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.904517E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003872920060530305, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:11-combined_loopback-Frequency (MHz):12000]", "duration": 2.0274819230107823, "run_index": 119, "setup": {"name": "setup", "duration": 0.0007582260004710406, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0256103340070695, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.144627E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00035513700277078897, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:12-adjacent_loopback-Frequency (MHz):8000]", "duration": 4.0225761420006165, "run_index": 120, "setup": {"name": "setup", "duration": 0.0007205209985841066, "outcome": "passed"}, "call": {"name": "call", "duration": 4.020753771008458, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 12 input and connect spectrum analyzer into channel 12 output. Press Enter when complete \n\nPower level (dBm): -2.061196E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00038132899499032646, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:12-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.026324344013119, "run_index": 121, "setup": {"name": "setup", "duration": 0.0008301740017486736, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0242086540092714, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.493923E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004553420003503561, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:12-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.0317362410278292, "run_index": 122, "setup": {"name": "setup", "duration": 0.0008997390104923397, "outcome": "passed"}, "call": {"name": "call", "duration": 2.029568272002507, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.221745E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00036849100433755666, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:12-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.0487075339915464, "run_index": 123, "setup": {"name": "setup", "duration": 0.0008074299985310063, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0466397339914693, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.299590E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00045294000301510096, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:12-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.0585190909769153, "run_index": 124, "setup": {"name": "setup", "duration": 0.0009027669875649735, "outcome": "passed"}, "call": {"name": "call", "duration": 2.056267027001013, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.984290E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004465300007723272, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:12-combined_loopback-Frequency (MHz):8000]", "duration": 2.0426973029971123, "run_index": 125, "setup": {"name": "setup", "duration": 0.0008878329972503707, "outcome": "passed"}, "call": {"name": "call", "duration": 2.040510926002753, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.436324E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00041071099985856563, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:12-combined_loopback-Frequency (MHz):9000]", "duration": 2.0589559640066, "run_index": 126, "setup": {"name": "setup", "duration": 0.000834289996419102, "outcome": "passed"}, "call": {"name": "call", "duration": 2.056796139004291, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.721407E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.000491245009470731, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:12-combined_loopback-Frequency (MHz):10000]", "duration": 2.0383624719979707, "run_index": 127, "setup": {"name": "setup", "duration": 0.0009797859966056421, "outcome": "passed"}, "call": {"name": "call", "duration": 2.03600662300596, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.823908E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00039627699879929423, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:12-combined_loopback-Frequency (MHz):11000]", "duration": 2.040129130007699, "run_index": 128, "setup": {"name": "setup", "duration": 0.0008277500019175932, "outcome": "passed"}, "call": {"name": "call", "duration": 2.038027932998375, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.903264E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004456970054889098, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:12-combined_loopback-Frequency (MHz):12000]", "duration": 2.0500316510006087, "run_index": 129, "setup": {"name": "setup", "duration": 0.0008561949944123626, "outcome": "passed"}, "call": {"name": "call", "duration": 2.047881940001389, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.149238E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004373210103949532, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:13-adjacent_loopback-Frequency (MHz):8000]", "duration": 3.6905512980010826, "run_index": 130, "setup": {"name": "setup", "duration": 0.0008734669972909614, "outcome": "passed"}, "call": {"name": "call", "duration": 3.688354223006172, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 13 input and connect spectrum analyzer into channel 13 output. Press Enter when complete \n\nPower level (dBm): -2.030713E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004501410003285855, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:13-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.0432997809984954, "run_index": 131, "setup": {"name": "setup", "duration": 0.000861120002809912, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0410749509901507, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.493927E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005025900027249008, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:13-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.0287649130041245, "run_index": 132, "setup": {"name": "setup", "duration": 0.0009094800043385476, "outcome": "passed"}, "call": {"name": "call", "duration": 2.02654722299485, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.178021E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003987300005974248, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:13-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.036331887997221, "run_index": 133, "setup": {"name": "setup", "duration": 0.0007831349939806387, "outcome": "passed"}, "call": {"name": "call", "duration": 2.034302229003515, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.265499E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004633890057448298, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:13-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.0530212669982575, "run_index": 134, "setup": {"name": "setup", "duration": 0.0009032579982886091, "outcome": "passed"}, "call": {"name": "call", "duration": 2.050759771009325, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.975998E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00045497999235522, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:13-combined_loopback-Frequency (MHz):8000]", "duration": 2.039712709010928, "run_index": 135, "setup": {"name": "setup", "duration": 0.0009253140015061945, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0373694650043035, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.439052E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004926160036120564, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:13-combined_loopback-Frequency (MHz):9000]", "duration": 2.026850308990106, "run_index": 136, "setup": {"name": "setup", "duration": 0.0009090719977393746, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0245020639995346, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.716907E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005301009950926527, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:13-combined_loopback-Frequency (MHz):10000]", "duration": 2.0580250559869455, "run_index": 137, "setup": {"name": "setup", "duration": 0.0009984939970308915, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0556046209967462, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.805051E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004234469961374998, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:13-combined_loopback-Frequency (MHz):11000]", "duration": 2.0321813360060332, "run_index": 138, "setup": {"name": "setup", "duration": 0.0008964080043369904, "outcome": "passed"}, "call": {"name": "call", "duration": 2.029977536003571, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.883886E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004109839937882498, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:13-combined_loopback-Frequency (MHz):12000]", "duration": 2.042611060998752, "run_index": 139, "setup": {"name": "setup", "duration": 0.0008622669993201271, "outcome": "passed"}, "call": {"name": "call", "duration": 2.040481739997631, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.142610E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00040478700248058885, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:14-adjacent_loopback-Frequency (MHz):8000]", "duration": 3.769758690003073, "run_index": 140, "setup": {"name": "setup", "duration": 0.000988630999927409, "outcome": "passed"}, "call": {"name": "call", "duration": 3.7673729060043115, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 14 input and connect spectrum analyzer into channel 14 output. Press Enter when complete \n\nPower level (dBm): -2.073842E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004085219989065081, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:14-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.0473800350300735, "run_index": 141, "setup": {"name": "setup", "duration": 0.0008542490104446188, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0451589970034547, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.460837E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0005125400057295337, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:14-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.0930000950029353, "run_index": 142, "setup": {"name": "setup", "duration": 0.0009297710057580844, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0907159380003577, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.178026E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.00042461499106138945, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:14-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.0450205109955277, "run_index": 143, "setup": {"name": "setup", "duration": 0.0008702589984750375, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0429147120012203, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.249483E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003652809973573312, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:14-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.027370427007554, "run_index": 144, "setup": {"name": "setup", "duration": 0.0007610460015712306, "outcome": "passed"}, "call": {"name": "call", "duration": 2.025487813996733, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.007717E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003605210076784715, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:14-combined_loopback-Frequency (MHz):8000]", "duration": 2.029808432998834, "run_index": 145, "setup": {"name": "setup", "duration": 0.0007914809975773096, "outcome": "passed"}, "call": {"name": "call", "duration": 2.027861643000506, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.441287E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.000363828003173694, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:14-combined_loopback-Frequency (MHz):9000]", "duration": 2.0454005579813384, "run_index": 146, "setup": {"name": "setup", "duration": 0.0007423389906762168, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0434970689966576, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.714533E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.000418811003328301, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:14-combined_loopback-Frequency (MHz):10000]", "duration": 2.0296606170159066, "run_index": 147, "setup": {"name": "setup", "duration": 0.0007546300039393827, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0277496030030306, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.828233E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00040175400499720126, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:14-combined_loopback-Frequency (MHz):11000]", "duration": 2.029656200989848, "run_index": 148, "setup": {"name": "setup", "duration": 0.0008077999955276027, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0275443010032177, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.890904E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004962999955751002, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:14-combined_loopback-Frequency (MHz):12000]", "duration": 2.043586382002104, "run_index": 149, "setup": {"name": "setup", "duration": 0.0009145619987975806, "outcome": "passed"}, "call": {"name": "call", "duration": 2.041319552998175, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.169797E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00043770500633399934, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:15-adjacent_loopback-Frequency (MHz):8000]", "duration": 3.108400736018666, "run_index": 150, "setup": {"name": "setup", "duration": 0.0008317190076922998, "outcome": "passed"}, "call": {"name": "call", "duration": 3.1063749020104297, "outcome": "passed", "stdout": "\n\nConnect signal generator into channel 15 input and connect spectrum analyzer into channel 15 output. Press Enter when complete \n\nPower level (dBm): -2.025265E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003623959928518161, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:15-adjacent_loopback-Frequency (MHz):9000]", "duration": 2.075078621011926, "run_index": 151, "setup": {"name": "setup", "duration": 0.0008397170022362843, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0729598960024305, "outcome": "passed", "stdout": "\n\nPower level (dBm): -2.458950E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004392910050228238, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:15-adjacent_loopback-Frequency (MHz):10000]", "duration": 2.1301583319873316, "run_index": 152, "setup": {"name": "setup", "duration": 0.0008615149999968708, "outcome": "passed"}, "call": {"name": "call", "duration": 2.1279783549980493, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.169952E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004569469892885536, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:15-adjacent_loopback-Frequency (MHz):11000]", "duration": 2.030954613990616, "run_index": 153, "setup": {"name": "setup", "duration": 0.0008939859981182963, "outcome": "passed"}, "call": {"name": "call", "duration": 2.028724578995025, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.302641E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004420629993546754, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:15-adjacent_loopback-Frequency (MHz):12000]", "duration": 2.0292795359855518, "run_index": 154, "setup": {"name": "setup", "duration": 0.0008851019956637174, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0270674799976405, "outcome": "passed", "stdout": "\n\nPower level (dBm): -3.913373E+00\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004418519965838641, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:15-combined_loopback-Frequency (MHz):8000]", "duration": 2.038808949000668, "run_index": 155, "setup": {"name": "setup", "duration": 0.0009371320047648624, "outcome": "passed"}, "call": {"name": "call", "duration": 2.036458105998463, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.435290E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00047657899267505854, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:15-combined_loopback-Frequency (MHz):9000]", "duration": 2.0323631500214105, "run_index": 156, "setup": {"name": "setup", "duration": 0.0009159330074908212, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0301749130012468, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.737288E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003563710051821545, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:15-combined_loopback-Frequency (MHz):10000]", "duration": 2.0916276650241343, "run_index": 157, "setup": {"name": "setup", "duration": 0.0007561530073871836, "outcome": "passed"}, "call": {"name": "call", "duration": 2.089724377001403, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.807356E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0003909820079570636, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:15-combined_loopback-Frequency (MHz):11000]", "duration": 2.0856251980003435, "run_index": 158, "setup": {"name": "setup", "duration": 0.0007936430047266185, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0835964629950467, "outcome": "passed", "stdout": "\n\nPower level (dBm): -4.881397E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0004414489958435297, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_loopback[channel:15-combined_loopback-Frequency (MHz):12000]", "duration": 2.0307278010004666, "run_index": 159, "setup": {"name": "setup", "duration": 0.0009181100031128153, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0284938830009196, "outcome": "passed", "stdout": "\n\nPower level (dBm): -5.157153E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00039769799332134426, "outcome": "passed"}, "outcome": "passed"}, {"name": "test/test_triton_cal.py::test_tx_combined_out[Frequency (MHz):8000]", "duration": 3.4665469129686244, "run_index": 160, "setup": {"name": "setup", "duration": 0.0006285869894782081, "outcome": "passed"}, "call": {"name": "call", "duration": 3.4651575600000797, "outcome": "failed", "longrepr": "frequency = 8000\n\n @pytest.mark.parametrize(\"frequency\", [8000, 9000, 10000, 11000, 12000], ids=lambda x: f\"Frequency (MHz):{x}\")\n def test_tx_combined_out(frequency):\n \n # Combined Tx Out test\n if (frequency == 8000):\n input('\\n\\nConnect signal generator into channel 0 input. Connect spectrum analyzer to the combined Tx out SMA port on top of the board. Press enter when complete')\n _set_SMA_inout()\n \n # Set up signal generator\n _set_frequency_MHz(frequency, HMCT2220) # Set frequency of sig gen\n _set_power_level_dBm(15, HMCT2220) # Set sig gen power level to 10 dBm\n _set_output('ON', HMCT2220) # Set sig gen output on\n time.sleep(1) # Buffer time of 1 second\n \n # Set up spectrum analyzer\n _set_mode('SA', FieldFox) # Select spectrum analyzer mode for FieldFox\n _set_attenuation_level(0, FieldFox) # Set attenuation level to 0 dB\n _set_center_freq_MHz(10000, FieldFox) # Set center frequency to 10 GHz\n _set_span_MHz(20000, FieldFox) # Set span to 20 GHz\n _set_res_bandwidth(1, FieldFox) # Sets resolution bandwidth to 1 MHz\n time.sleep(1) # Buffer time of 1 second\n _set_marker_to_peak(1, FieldFox) # Sets marker 1 to peak\n peak_power = _get_peak_power_level(1, FieldFox) # Gets the power at marker 1\n print(\"\\n\\nPower level (dBm): {}\".format(peak_power))\n \n> assert int(float(peak_power)) > -40\nE AssertionError: assert -66 > -40\nE + where -66 = int(-66.57162)\nE + where -66.57162 = float('-6.657162E+01\\n')\n\ntest/test_triton_cal.py:170: AssertionError", "stdout": "\n\nConnect signal generator into channel 0 input. Connect spectrum analyzer to the combined Tx out SMA port on top of the board. Press enter when complete\n\nPower level (dBm): -6.657162E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.000132178989588283, "outcome": "passed"}, "outcome": "failed"}, {"name": "test/test_triton_cal.py::test_tx_combined_out[Frequency (MHz):9000]", "duration": 2.0238845530257095, "run_index": 161, "setup": {"name": "setup", "duration": 0.00017327400564681739, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0233300180116203, "outcome": "failed", "longrepr": "frequency = 9000\n\n @pytest.mark.parametrize(\"frequency\", [8000, 9000, 10000, 11000, 12000], ids=lambda x: f\"Frequency (MHz):{x}\")\n def test_tx_combined_out(frequency):\n \n # Combined Tx Out test\n if (frequency == 8000):\n input('\\n\\nConnect signal generator into channel 0 input. Connect spectrum analyzer to the combined Tx out SMA port on top of the board. Press enter when complete')\n _set_SMA_inout()\n \n # Set up signal generator\n _set_frequency_MHz(frequency, HMCT2220) # Set frequency of sig gen\n _set_power_level_dBm(15, HMCT2220) # Set sig gen power level to 10 dBm\n _set_output('ON', HMCT2220) # Set sig gen output on\n time.sleep(1) # Buffer time of 1 second\n \n # Set up spectrum analyzer\n _set_mode('SA', FieldFox) # Select spectrum analyzer mode for FieldFox\n _set_attenuation_level(0, FieldFox) # Set attenuation level to 0 dB\n _set_center_freq_MHz(10000, FieldFox) # Set center frequency to 10 GHz\n _set_span_MHz(20000, FieldFox) # Set span to 20 GHz\n _set_res_bandwidth(1, FieldFox) # Sets resolution bandwidth to 1 MHz\n time.sleep(1) # Buffer time of 1 second\n _set_marker_to_peak(1, FieldFox) # Sets marker 1 to peak\n peak_power = _get_peak_power_level(1, FieldFox) # Gets the power at marker 1\n print(\"\\n\\nPower level (dBm): {}\".format(peak_power))\n \n> assert int(float(peak_power)) > -40\nE AssertionError: assert -66 > -40\nE + where -66 = int(-66.87953)\nE + where -66.87953 = float('-6.687953E+01\\n')\n\ntest/test_triton_cal.py:170: AssertionError", "stdout": "\n\nPower level (dBm): -6.687953E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00020798700279556215, "outcome": "passed"}, "outcome": "failed"}, {"name": "test/test_triton_cal.py::test_tx_combined_out[Frequency (MHz):10000]", "duration": 2.1022440740198363, "run_index": 162, "setup": {"name": "setup", "duration": 0.00037721901026088744, "outcome": "passed"}, "call": {"name": "call", "duration": 2.101385450005182, "outcome": "failed", "longrepr": "frequency = 10000\n\n @pytest.mark.parametrize(\"frequency\", [8000, 9000, 10000, 11000, 12000], ids=lambda x: f\"Frequency (MHz):{x}\")\n def test_tx_combined_out(frequency):\n \n # Combined Tx Out test\n if (frequency == 8000):\n input('\\n\\nConnect signal generator into channel 0 input. Connect spectrum analyzer to the combined Tx out SMA port on top of the board. Press enter when complete')\n _set_SMA_inout()\n \n # Set up signal generator\n _set_frequency_MHz(frequency, HMCT2220) # Set frequency of sig gen\n _set_power_level_dBm(15, HMCT2220) # Set sig gen power level to 10 dBm\n _set_output('ON', HMCT2220) # Set sig gen output on\n time.sleep(1) # Buffer time of 1 second\n \n # Set up spectrum analyzer\n _set_mode('SA', FieldFox) # Select spectrum analyzer mode for FieldFox\n _set_attenuation_level(0, FieldFox) # Set attenuation level to 0 dB\n _set_center_freq_MHz(10000, FieldFox) # Set center frequency to 10 GHz\n _set_span_MHz(20000, FieldFox) # Set span to 20 GHz\n _set_res_bandwidth(1, FieldFox) # Sets resolution bandwidth to 1 MHz\n time.sleep(1) # Buffer time of 1 second\n _set_marker_to_peak(1, FieldFox) # Sets marker 1 to peak\n peak_power = _get_peak_power_level(1, FieldFox) # Gets the power at marker 1\n print(\"\\n\\nPower level (dBm): {}\".format(peak_power))\n \n> assert int(float(peak_power)) > -40\nE AssertionError: assert -66 > -40\nE + where -66 = int(-66.91444)\nE + where -66.91444 = float('-6.691444E+01\\n')\n\ntest/test_triton_cal.py:170: AssertionError", "stdout": "\n\nPower level (dBm): -6.691444E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00010418599413242191, "outcome": "passed"}, "outcome": "failed"}, {"name": "test/test_triton_cal.py::test_tx_combined_out[Frequency (MHz):11000]", "duration": 2.0492590089997975, "run_index": 163, "setup": {"name": "setup", "duration": 0.00017487599689047784, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0487972359987907, "outcome": "failed", "longrepr": "frequency = 11000\n\n @pytest.mark.parametrize(\"frequency\", [8000, 9000, 10000, 11000, 12000], ids=lambda x: f\"Frequency (MHz):{x}\")\n def test_tx_combined_out(frequency):\n \n # Combined Tx Out test\n if (frequency == 8000):\n input('\\n\\nConnect signal generator into channel 0 input. Connect spectrum analyzer to the combined Tx out SMA port on top of the board. Press enter when complete')\n _set_SMA_inout()\n \n # Set up signal generator\n _set_frequency_MHz(frequency, HMCT2220) # Set frequency of sig gen\n _set_power_level_dBm(15, HMCT2220) # Set sig gen power level to 10 dBm\n _set_output('ON', HMCT2220) # Set sig gen output on\n time.sleep(1) # Buffer time of 1 second\n \n # Set up spectrum analyzer\n _set_mode('SA', FieldFox) # Select spectrum analyzer mode for FieldFox\n _set_attenuation_level(0, FieldFox) # Set attenuation level to 0 dB\n _set_center_freq_MHz(10000, FieldFox) # Set center frequency to 10 GHz\n _set_span_MHz(20000, FieldFox) # Set span to 20 GHz\n _set_res_bandwidth(1, FieldFox) # Sets resolution bandwidth to 1 MHz\n time.sleep(1) # Buffer time of 1 second\n _set_marker_to_peak(1, FieldFox) # Sets marker 1 to peak\n peak_power = _get_peak_power_level(1, FieldFox) # Gets the power at marker 1\n print(\"\\n\\nPower level (dBm): {}\".format(peak_power))\n \n> assert int(float(peak_power)) > -40\nE AssertionError: assert -66 > -40\nE + where -66 = int(-66.07944)\nE + where -66.07944 = float('-6.607944E+01\\n')\n\ntest/test_triton_cal.py:170: AssertionError", "stdout": "\n\nPower level (dBm): -6.607944E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00011202100722584873, "outcome": "passed"}, "outcome": "failed"}, {"name": "test/test_triton_cal.py::test_tx_combined_out[Frequency (MHz):12000]", "duration": 2.0506505509692943, "run_index": 164, "setup": {"name": "setup", "duration": 0.00018243798695039004, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0501771149865817, "outcome": "failed", "longrepr": "frequency = 12000\n\n @pytest.mark.parametrize(\"frequency\", [8000, 9000, 10000, 11000, 12000], ids=lambda x: f\"Frequency (MHz):{x}\")\n def test_tx_combined_out(frequency):\n \n # Combined Tx Out test\n if (frequency == 8000):\n input('\\n\\nConnect signal generator into channel 0 input. Connect spectrum analyzer to the combined Tx out SMA port on top of the board. Press enter when complete')\n _set_SMA_inout()\n \n # Set up signal generator\n _set_frequency_MHz(frequency, HMCT2220) # Set frequency of sig gen\n _set_power_level_dBm(15, HMCT2220) # Set sig gen power level to 10 dBm\n _set_output('ON', HMCT2220) # Set sig gen output on\n time.sleep(1) # Buffer time of 1 second\n \n # Set up spectrum analyzer\n _set_mode('SA', FieldFox) # Select spectrum analyzer mode for FieldFox\n _set_attenuation_level(0, FieldFox) # Set attenuation level to 0 dB\n _set_center_freq_MHz(10000, FieldFox) # Set center frequency to 10 GHz\n _set_span_MHz(20000, FieldFox) # Set span to 20 GHz\n _set_res_bandwidth(1, FieldFox) # Sets resolution bandwidth to 1 MHz\n time.sleep(1) # Buffer time of 1 second\n _set_marker_to_peak(1, FieldFox) # Sets marker 1 to peak\n peak_power = _get_peak_power_level(1, FieldFox) # Gets the power at marker 1\n print(\"\\n\\nPower level (dBm): {}\".format(peak_power))\n \n> assert int(float(peak_power)) > -40\nE AssertionError: assert -65 > -40\nE + where -65 = int(-65.81541)\nE + where -65.81541 = float('-6.581541E+01\\n')\n\ntest/test_triton_cal.py:170: AssertionError", "stdout": "\n\nPower level (dBm): -6.581541E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00010856000881176442, "outcome": "passed"}, "outcome": "failed"}, {"name": "test/test_triton_cal.py::test_rx_combined_in[Frequency (MHz):8000]", "duration": 5.881846339980257, "run_index": 165, "setup": {"name": "setup", "duration": 0.0001779509912012145, "outcome": "passed"}, "call": {"name": "call", "duration": 5.881272055994486, "outcome": "failed", "longrepr": "frequency = 8000\n\n @pytest.mark.parametrize(\"frequency\", [8000, 9000, 10000, 11000, 12000], ids=lambda x: f\"Frequency (MHz):{x}\")\n def test_rx_combined_in(frequency):\n \n # Combined Rx In test\n if (frequency == 8000):\n input('\\n\\nConnect signal generator into Rx SMA input on top of the board. Connect spectrum analyzer into channel 0 output. Press enter when complete')\n _set_SMA_inout()\n \n \n # Set up signal generator\n _set_frequency_MHz(frequency, HMCT2220) # Set frequency of sig gen\n _set_power_level_dBm(15, HMCT2220) # Set sig gen power level to 10 dBm\n _set_output('ON', HMCT2220) # Set sig gen output on\n time.sleep(1) # Buffer time of 1 second\n \n # Set up spectrum analyzer\n _set_mode('SA', FieldFox) # Select spectrum analyzer mode for FieldFox\n _set_attenuation_level(0, FieldFox) # Set attenuation level to 0 dB\n _set_center_freq_MHz(10000, FieldFox) # Set center frequency to 10 GHz\n _set_span_MHz(20000, FieldFox) # Set span to 20 GHz\n _set_res_bandwidth(1, FieldFox) # Sets resolution bandwidth to 1 MHz\n time.sleep(1) # Buffer time of 1 second\n _set_marker_to_peak(1, FieldFox) # Sets marker 1 to peak\n peak_power = _get_peak_power_level(1, FieldFox) # Gets the power at marker 1\n print(\"\\n\\nPower level (dBm): {}\".format(peak_power))\n \n> assert int(float(peak_power)) > -40\nE AssertionError: assert -66 > -40\nE + where -66 = int(-66.63196)\nE + where -66.63196 = float('-6.663196E+01\\n')\n\ntest/test_triton_cal.py:203: AssertionError", "stdout": "\n\nConnect signal generator into Rx SMA input on top of the board. Connect spectrum analyzer into channel 0 output. Press enter when complete\n\nPower level (dBm): -6.663196E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.0002183820033678785, "outcome": "passed"}, "outcome": "failed"}, {"name": "test/test_triton_cal.py::test_rx_combined_in[Frequency (MHz):9000]", "duration": 2.029691258998355, "run_index": 166, "setup": {"name": "setup", "duration": 0.00035358300374355167, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0287605109915603, "outcome": "failed", "longrepr": "frequency = 9000\n\n @pytest.mark.parametrize(\"frequency\", [8000, 9000, 10000, 11000, 12000], ids=lambda x: f\"Frequency (MHz):{x}\")\n def test_rx_combined_in(frequency):\n \n # Combined Rx In test\n if (frequency == 8000):\n input('\\n\\nConnect signal generator into Rx SMA input on top of the board. Connect spectrum analyzer into channel 0 output. Press enter when complete')\n _set_SMA_inout()\n \n \n # Set up signal generator\n _set_frequency_MHz(frequency, HMCT2220) # Set frequency of sig gen\n _set_power_level_dBm(15, HMCT2220) # Set sig gen power level to 10 dBm\n _set_output('ON', HMCT2220) # Set sig gen output on\n time.sleep(1) # Buffer time of 1 second\n \n # Set up spectrum analyzer\n _set_mode('SA', FieldFox) # Select spectrum analyzer mode for FieldFox\n _set_attenuation_level(0, FieldFox) # Set attenuation level to 0 dB\n _set_center_freq_MHz(10000, FieldFox) # Set center frequency to 10 GHz\n _set_span_MHz(20000, FieldFox) # Set span to 20 GHz\n _set_res_bandwidth(1, FieldFox) # Sets resolution bandwidth to 1 MHz\n time.sleep(1) # Buffer time of 1 second\n _set_marker_to_peak(1, FieldFox) # Sets marker 1 to peak\n peak_power = _get_peak_power_level(1, FieldFox) # Gets the power at marker 1\n print(\"\\n\\nPower level (dBm): {}\".format(peak_power))\n \n> assert int(float(peak_power)) > -40\nE AssertionError: assert -66 > -40\nE + where -66 = int(-66.46659)\nE + where -66.46659 = float('-6.646659E+01\\n')\n\ntest/test_triton_cal.py:203: AssertionError", "stdout": "\n\nPower level (dBm): -6.646659E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00022358199930749834, "outcome": "passed"}, "outcome": "failed"}, {"name": "test/test_triton_cal.py::test_rx_combined_in[Frequency (MHz):10000]", "duration": 2.0411025069915922, "run_index": 167, "setup": {"name": "setup", "duration": 0.0003759789979085326, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0402402600011555, "outcome": "failed", "longrepr": "frequency = 10000\n\n @pytest.mark.parametrize(\"frequency\", [8000, 9000, 10000, 11000, 12000], ids=lambda x: f\"Frequency (MHz):{x}\")\n def test_rx_combined_in(frequency):\n \n # Combined Rx In test\n if (frequency == 8000):\n input('\\n\\nConnect signal generator into Rx SMA input on top of the board. Connect spectrum analyzer into channel 0 output. Press enter when complete')\n _set_SMA_inout()\n \n \n # Set up signal generator\n _set_frequency_MHz(frequency, HMCT2220) # Set frequency of sig gen\n _set_power_level_dBm(15, HMCT2220) # Set sig gen power level to 10 dBm\n _set_output('ON', HMCT2220) # Set sig gen output on\n time.sleep(1) # Buffer time of 1 second\n \n # Set up spectrum analyzer\n _set_mode('SA', FieldFox) # Select spectrum analyzer mode for FieldFox\n _set_attenuation_level(0, FieldFox) # Set attenuation level to 0 dB\n _set_center_freq_MHz(10000, FieldFox) # Set center frequency to 10 GHz\n _set_span_MHz(20000, FieldFox) # Set span to 20 GHz\n _set_res_bandwidth(1, FieldFox) # Sets resolution bandwidth to 1 MHz\n time.sleep(1) # Buffer time of 1 second\n _set_marker_to_peak(1, FieldFox) # Sets marker 1 to peak\n peak_power = _get_peak_power_level(1, FieldFox) # Gets the power at marker 1\n print(\"\\n\\nPower level (dBm): {}\".format(peak_power))\n \n> assert int(float(peak_power)) > -40\nE AssertionError: assert -65 > -40\nE + where -65 = int(-65.18957)\nE + where -65.18957 = float('-6.518957E+01\\n')\n\ntest/test_triton_cal.py:203: AssertionError", "stdout": "\n\nPower level (dBm): -6.518957E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.00011028899461962283, "outcome": "passed"}, "outcome": "failed"}, {"name": "test/test_triton_cal.py::test_rx_combined_in[Frequency (MHz):11000]", "duration": 2.044696981974994, "run_index": 168, "setup": {"name": "setup", "duration": 0.0001732729870127514, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0442535689944634, "outcome": "failed", "longrepr": "frequency = 11000\n\n @pytest.mark.parametrize(\"frequency\", [8000, 9000, 10000, 11000, 12000], ids=lambda x: f\"Frequency (MHz):{x}\")\n def test_rx_combined_in(frequency):\n \n # Combined Rx In test\n if (frequency == 8000):\n input('\\n\\nConnect signal generator into Rx SMA input on top of the board. Connect spectrum analyzer into channel 0 output. Press enter when complete')\n _set_SMA_inout()\n \n \n # Set up signal generator\n _set_frequency_MHz(frequency, HMCT2220) # Set frequency of sig gen\n _set_power_level_dBm(15, HMCT2220) # Set sig gen power level to 10 dBm\n _set_output('ON', HMCT2220) # Set sig gen output on\n time.sleep(1) # Buffer time of 1 second\n \n # Set up spectrum analyzer\n _set_mode('SA', FieldFox) # Select spectrum analyzer mode for FieldFox\n _set_attenuation_level(0, FieldFox) # Set attenuation level to 0 dB\n _set_center_freq_MHz(10000, FieldFox) # Set center frequency to 10 GHz\n _set_span_MHz(20000, FieldFox) # Set span to 20 GHz\n _set_res_bandwidth(1, FieldFox) # Sets resolution bandwidth to 1 MHz\n time.sleep(1) # Buffer time of 1 second\n _set_marker_to_peak(1, FieldFox) # Sets marker 1 to peak\n peak_power = _get_peak_power_level(1, FieldFox) # Gets the power at marker 1\n print(\"\\n\\nPower level (dBm): {}\".format(peak_power))\n \n> assert int(float(peak_power)) > -40\nE AssertionError: assert -64 > -40\nE + where -64 = int(-64.92614)\nE + where -64.92614 = float('-6.492614E+01\\n')\n\ntest/test_triton_cal.py:203: AssertionError", "stdout": "\n\nPower level (dBm): -6.492614E+01\n\n"}, "teardown": {"name": "teardown", "duration": 9.68670065049082e-05, "outcome": "passed"}, "outcome": "failed"}, {"name": "test/test_triton_cal.py::test_rx_combined_in[Frequency (MHz):12000]", "duration": 2.0371998330083443, "run_index": 169, "setup": {"name": "setup", "duration": 0.0001757200079737231, "outcome": "passed"}, "call": {"name": "call", "duration": 2.0310152059973916, "outcome": "failed", "longrepr": "frequency = 12000\n\n @pytest.mark.parametrize(\"frequency\", [8000, 9000, 10000, 11000, 12000], ids=lambda x: f\"Frequency (MHz):{x}\")\n def test_rx_combined_in(frequency):\n \n # Combined Rx In test\n if (frequency == 8000):\n input('\\n\\nConnect signal generator into Rx SMA input on top of the board. Connect spectrum analyzer into channel 0 output. Press enter when complete')\n _set_SMA_inout()\n \n \n # Set up signal generator\n _set_frequency_MHz(frequency, HMCT2220) # Set frequency of sig gen\n _set_power_level_dBm(15, HMCT2220) # Set sig gen power level to 10 dBm\n _set_output('ON', HMCT2220) # Set sig gen output on\n time.sleep(1) # Buffer time of 1 second\n \n # Set up spectrum analyzer\n _set_mode('SA', FieldFox) # Select spectrum analyzer mode for FieldFox\n _set_attenuation_level(0, FieldFox) # Set attenuation level to 0 dB\n _set_center_freq_MHz(10000, FieldFox) # Set center frequency to 10 GHz\n _set_span_MHz(20000, FieldFox) # Set span to 20 GHz\n _set_res_bandwidth(1, FieldFox) # Sets resolution bandwidth to 1 MHz\n time.sleep(1) # Buffer time of 1 second\n _set_marker_to_peak(1, FieldFox) # Sets marker 1 to peak\n peak_power = _get_peak_power_level(1, FieldFox) # Gets the power at marker 1\n print(\"\\n\\nPower level (dBm): {}\".format(peak_power))\n \n> assert int(float(peak_power)) > -40\nE AssertionError: assert -65 > -40\nE + where -65 = int(-65.52882)\nE + where -65.52882 = float('-6.552882E+01\\n')\n\ntest/test_triton_cal.py:203: AssertionError", "stdout": "\n\nPower level (dBm): -6.552882E+01\n\n"}, "teardown": {"name": "teardown", "duration": 0.005833186995005235, "outcome": "passed"}, "outcome": "failed"}], "summary": {"passed": 160, "failed": 10, "num_tests": 170, "duration": 409.0013370513916}, "created_at": "2024-04-23 15:45:50.321681"}} diff --git a/triton_cal_plots.py b/triton_cal_plots.py index baac78f9c..963f56b2e 100644 --- a/triton_cal_plots.py +++ b/triton_cal_plots.py @@ -263,5 +263,86 @@ def graph_fixture(): # # Add legend # plt.legend() - plt.savefig('combined.png') +## 1x5 channel results array for each channel in combined loopback state +ch0_combresults_y = [comb_8GHz_array[0], comb_9GHz_array[0], comb_10GHz_array[0], comb_11GHz_array[0], comb_12GHz_array[0]] +ch1_combresults_y = [comb_8GHz_array[1], comb_9GHz_array[1], comb_10GHz_array[1], comb_11GHz_array[1], comb_12GHz_array[1]] +ch2_combresults_y = [comb_8GHz_array[2], comb_9GHz_array[2], comb_10GHz_array[2], comb_11GHz_array[2], comb_12GHz_array[2]] +ch3_combresults_y = [comb_8GHz_array[3], comb_9GHz_array[3], comb_10GHz_array[3], comb_11GHz_array[3], comb_12GHz_array[3]] +ch4_combresults_y = [comb_8GHz_array[4], comb_9GHz_array[4], comb_10GHz_array[4], comb_11GHz_array[4], comb_12GHz_array[4]] +ch5_combresults_y = [comb_8GHz_array[5], comb_9GHz_array[5], comb_10GHz_array[5], comb_11GHz_array[5], comb_12GHz_array[5]] +ch6_combresults_y = [comb_8GHz_array[6], comb_9GHz_array[6], comb_10GHz_array[6], comb_11GHz_array[6], comb_12GHz_array[6]] +ch7_combresults_y = [comb_8GHz_array[7], comb_9GHz_array[7], comb_10GHz_array[7], comb_11GHz_array[7], comb_12GHz_array[7]] +ch8_combresults_y = [comb_8GHz_array[8], comb_9GHz_array[8], comb_10GHz_array[8], comb_11GHz_array[8], comb_12GHz_array[8]] +ch9_combresults_y = [comb_8GHz_array[9], comb_9GHz_array[9], comb_10GHz_array[9], comb_11GHz_array[9], comb_12GHz_array[9]] +ch10_combresults_y = [comb_8GHz_array[10], comb_9GHz_array[10], comb_10GHz_array[10], comb_11GHz_array[10], comb_12GHz_array[10]] +ch11_combresults_y = [comb_8GHz_array[11], comb_9GHz_array[11], comb_10GHz_array[11], comb_11GHz_array[11], comb_12GHz_array[11]] +ch12_combresults_y = [comb_8GHz_array[12], comb_9GHz_array[12], comb_10GHz_array[12], comb_11GHz_array[12], comb_12GHz_array[12]] +ch13_combresults_y = [comb_8GHz_array[13], comb_9GHz_array[13], comb_10GHz_array[13], comb_11GHz_array[13], comb_12GHz_array[13]] +ch14_combresults_y = [comb_8GHz_array[14], comb_9GHz_array[14], comb_10GHz_array[14], comb_11GHz_array[14], comb_12GHz_array[14]] +ch15_combresults_y = [comb_8GHz_array[15], comb_9GHz_array[15], comb_10GHz_array[15], comb_11GHz_array[15], comb_12GHz_array[15]] + +# Create a new plot with adjacent loopback data +plt.figure() +plt.plot(frequency_array, ch0_adjresults_y, label='Channel 0') +plt.plot(frequency_array, ch1_adjresults_y, label='Channel 1') +plt.plot(frequency_array, ch2_adjresults_y, label='Channel 2') +plt.plot(frequency_array, ch3_adjresults_y, label='Channel 3') +plt.plot(frequency_array, ch4_adjresults_y, label='Channel 4') +plt.plot(frequency_array, ch5_adjresults_y, label='Channel 5') +plt.plot(frequency_array, ch6_adjresults_y, label='Channel 6') +plt.plot(frequency_array, ch7_adjresults_y, label='Channel 7') +plt.plot(frequency_array, ch8_adjresults_y, label='Channel 8') +plt.plot(frequency_array, ch9_adjresults_y, label='Channel 9') +plt.plot(frequency_array, ch10_adjresults_y, label='Channel 10') +plt.plot(frequency_array, ch11_adjresults_y, label='Channel 11') +plt.plot(frequency_array, ch12_adjresults_y, label='Channel 12') +plt.plot(frequency_array, ch13_adjresults_y, label='Channel 13') +plt.plot(frequency_array, ch14_adjresults_y, label='Channel 14') +plt.plot(frequency_array, ch15_adjresults_y, label='Channel 15') + +# Limits for y axis +plt.ylim(-80, 0) + +# Add labels and title +plt.xlabel('Frequency (MHz)') +plt.ylabel('Magnitude (dBm)') +plt.title('Calibration Board Output Magnitude vs Frequency for Adjacent Loopback State (+15 dBm Input)') + +# # Add legend +# plt.legend() +plt.savefig('adjacent_loopback_by_channel.png') + +# Create a new plot with adjacent loopback data +plt.figure() +plt.plot(frequency_array, ch0_combresults_y, label='Channel 0') +plt.plot(frequency_array, ch1_combresults_y, label='Channel 1') +plt.plot(frequency_array, ch2_combresults_y, label='Channel 2') +plt.plot(frequency_array, ch3_combresults_y, label='Channel 3') +plt.plot(frequency_array, ch4_combresults_y, label='Channel 4') +plt.plot(frequency_array, ch5_combresults_y, label='Channel 5') +plt.plot(frequency_array, ch6_combresults_y, label='Channel 6') +plt.plot(frequency_array, ch7_combresults_y, label='Channel 7') +plt.plot(frequency_array, ch8_combresults_y, label='Channel 8') +plt.plot(frequency_array, ch9_combresults_y, label='Channel 9') +plt.plot(frequency_array, ch10_combresults_y, label='Channel 10') +plt.plot(frequency_array, ch11_combresults_y, label='Channel 11') +plt.plot(frequency_array, ch12_combresults_y, label='Channel 12') +plt.plot(frequency_array, ch13_combresults_y, label='Channel 13') +plt.plot(frequency_array, ch14_combresults_y, label='Channel 14') +plt.plot(frequency_array, ch15_combresults_y, label='Channel 15') + +# Limits for y axis +plt.ylim(-80, 0) + +# Add labels and title +plt.xlabel('Frequency (MHz)') +plt.ylabel('Magnitude (dBm)') +plt.title('Calibration Board Output Magnitude vs Frequency for Combined Loopback State (+15 dBm Input)') + +# # Add legend +# plt.legend() + +plt.savefig('combined_loopback_by_channel.png') +# Show the plots +plt.show()