Ejemplo n.º 1
0
 def test_monitor_replace(self):
     """
     Check that monitors get correctly replaced
     """
     m = monitor.Monitor()
     self.assertEqual(monitor.Monitor.running, m)
     m2 = monitor.Monitor()
     self.assertEqual(monitor.Monitor.running, m2)
     self.assertTrue(m.loop.is_closed())
     self.assertFalse(m.is_alive())
     self.assertTrue(m2.is_alive())
     m2.stop()
Ejemplo n.º 2
0
def test_monitor_replace(request):
    """
    Check that monitors get correctly replaced
    """
    m = monitor.Monitor()
    request.addfinalizer(m.stop)
    assert monitor.Monitor.running == m
    m2 = monitor.Monitor()
    request.addfinalizer(m2.stop)
    assert monitor.Monitor.running == m2
    assert m.loop.is_closed()
    assert not m.is_alive()
    assert m2.is_alive()
    m2.stop()
Ejemplo n.º 3
0
def test_use_root_instrument(request, channel_instr, use_root_instrument):
    """
    Test instrument updates
    """
    loop = asyncio.new_event_loop()

    def cleanup_loop():
        loop.stop()
        loop.close()

    request.addfinalizer(cleanup_loop)

    asyncio.set_event_loop(loop)

    m = monitor.Monitor(
        channel_instr.A.dummy_start,
        channel_instr.B.dummy_start,
        use_root_instrument=use_root_instrument,
    )
    request.addfinalizer(m.stop)

    async def async_test_monitor(use_root_instrument):
        async with websockets.connect(
                f"ws://localhost:{monitor.WEBSOCKET_PORT}") as websocket:

            # Recieve data from monitor
            data = await websocket.recv()
            data = json.loads(data)
            if use_root_instrument:
                assert len(data["parameters"]) == 1
            else:
                assert len(data["parameters"]) == 2

    loop.run_until_complete(async_test_monitor(use_root_instrument))
Ejemplo n.º 4
0
 def test_double_join(self):
     """
     Check that a double join doesn't cause a hang
     """
     m = monitor.Monitor()
     self.assertEqual(monitor.Monitor.running, m)
     m.stop()
     m.stop()
Ejemplo n.º 5
0
def test_double_join(request):
    """
    Check that a double join doesn't cause a hang
    """
    m = monitor.Monitor()
    request.addfinalizer(m.stop)
    assert monitor.Monitor.running == m
    m.stop()
    m.stop()
Ejemplo n.º 6
0
def _make_inst_and_monitor():
    instr = DummyInstrument("MonitorDummy")
    param = Parameter("DummyParam", unit="V", get_cmd=None, set_cmd=None)
    param(1)
    monitor_parameters = tuple(instr.parameters.values())[1:]
    my_monitor = monitor.Monitor(*monitor_parameters, param, interval=0.1)
    try:
        yield instr, my_monitor, monitor_parameters, param
    finally:
        my_monitor.stop()
        instr.close()
Ejemplo n.º 7
0
 def test_setup_teardown(self):
     """
     Check that monitor starts up and closes correctly
     """
     m = monitor.Monitor()
     self.assertTrue(m.is_alive())
     self.assertTrue(m.loop.is_running())
     self.assertEqual(monitor.Monitor.running, m)
     m.stop()
     self.assertFalse(m.loop.is_running())
     self.assertTrue(m.loop.is_closed())
     self.assertFalse(m.is_alive())
     self.assertIsNone(monitor.Monitor.running)
Ejemplo n.º 8
0
def test_setup_teardown(request):
    """
    Check that monitor starts up and closes correctly
    """
    m = monitor.Monitor()
    request.addfinalizer(m.stop)
    assert m.is_alive()
    assert m.loop.is_running()
    assert monitor.Monitor.running == m
    m.stop()
    assert not m.loop.is_running()
    assert m.loop.is_closed()
    assert not m.is_alive()
    assert monitor.Monitor.running is None
Ejemplo n.º 9
0
 def setUp(self):
     """
     Create a dummy instrument for use in monitor tests, and hook it into
     a monitor
     """
     self.instr = DummyInstrument("MonitorDummy")
     self.param = Parameter("DummyParam",
                            unit="V",
                            get_cmd=None,
                            set_cmd=None)
     self.param(1)
     self.monitor_parameters = tuple(self.instr.parameters.values())[1:]
     self.monitor = monitor.Monitor(*self.monitor_parameters,
                                    self.param,
                                    interval=0.1)
Ejemplo n.º 10
0
    def test_connection(self):
        """
        Test that we can connect to a monitor instance
        """
        m = monitor.Monitor()

        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)

        async def async_test_connection():
            websocket = await websockets.connect(
                f"ws://localhost:{monitor.WEBSOCKET_PORT}")
            await websocket.close()

        loop.run_until_complete(async_test_connection())

        m.stop()
Ejemplo n.º 11
0
def test_connection(request):
    """
    Test that we can connect to a monitor instance
    """
    m = monitor.Monitor()
    request.addfinalizer(m.stop)
    loop = asyncio.new_event_loop()

    def cleanup_loop():
        loop.stop()
        loop.close()
    request.addfinalizer(cleanup_loop)
    asyncio.set_event_loop(loop)

    async def async_test_connection():
        async with websockets.connect(f"ws://localhost:{monitor.WEBSOCKET_PORT}"):
            pass
    loop.run_until_complete(async_test_connection())

    m.stop()