diff --git a/Software/Integrationtests/Integrationtest.py b/Software/Integrationtests/Integrationtest.py index 237d437..4213936 100644 --- a/Software/Integrationtests/Integrationtest.py +++ b/Software/Integrationtests/Integrationtest.py @@ -4,6 +4,7 @@ testmodules = [ 'tests.TestConnect', 'tests.TestStatusRegisters', 'tests.TestMode', + 'tests.TestSync', 'tests.TestVNASweep', 'tests.TestCalibration', 'tests.TestGenerator', diff --git a/Software/Integrationtests/tests/TestSync.py b/Software/Integrationtests/tests/TestSync.py new file mode 100644 index 0000000..6bd9aa6 --- /dev/null +++ b/Software/Integrationtests/tests/TestSync.py @@ -0,0 +1,52 @@ +from tests.TestBase import TestBase +import time + + +class TestSync(TestBase): + def test_wai(self): + self.vna.cmd("*RST") + self.vna.cmd("VNA:ACQ:SINGLE TRUE") + self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "FALSE") + self.vna.cmd("*WAI", timeout=3) + self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "TRUE") + + def test_opc_query(self): + self.vna.cmd("*RST") + self.vna.cmd("VNA:ACQ:SINGLE TRUE") + self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "FALSE") + resp = self.vna.query("*OPC?", timeout=3) + self.assertEqual(resp, "1") + self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "TRUE") + + def test_opc_poll(self): + self.vna.cmd("*RST") + self.vna.cmd("VNA:ACQ:SINGLE TRUE") + self.vna.cmd("*OPC") + self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "FALSE") + time_limit = time.time() + 2 + while True: + status = self.vna.get_status() + if status & 0x01: + break + if time.time() >= time_limit: + raise Exception("Timeout waiting for OPC") + time.sleep(0.05) + self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "TRUE") + self.assertEqual(self.vna.get_status(), 0) + + def test_idle_waits(self): + ''' + Test that *WAI and *OPC? don't hang when device is idle. Test + that *OPC query sets the OPC status bit immediately. + ''' + self.vna.cmd("*RST") + self.vna.cmd("VNA:ACQ:SINGLE TRUE") + self.vna.cmd("*WAI", timeout=3) + self.assertEqual(self.vna.get_status(), 0) + self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "TRUE") + self.vna.cmd("*WAI") + resp = self.vna.query("*OPC?") + self.assertEqual(resp, "1") + self.assertEqual(self.vna.get_status(), 0) + self.assertEqual(self.vna.cmd("*OPC"), 0x01) # should return OPC + self.assertEqual(self.vna.get_status(), 0)