def test_run(monkeypatch, tmpdir): zmq_mock = ZMQMock() def mock_zmq_context(): nonlocal zmq_mock return zmq_mock monkeypatch.setattr(zmq.Context, "instance", mock_zmq_context) dbname = tmpdir.join('testing.sqlite3') db_url = "sqlite:///%s" % dbname db = DB({'url': db_url}, "inproc://test_run") with pytest.raises(IndexError): db.run() assert zmq_mock.sock.connected is True assert zmq_mock.sock.opts == {zmq.SUBSCRIBE: b''} # Test that wrong message will not make the process crash zmq_mock.sock.msgs = [[]] with pytest.raises(IndexError): db.run() # Check that the db is empty session = db.sessions() assert session.query(Message).count() == 0 # Test that wrong message will not make the process crash zmq_mock.sock.msgs = [[ "org.reactobus.1", str(uuid.uuid1()), datetime.datetime.utcnow().isoformat(), "lavaserver", json.dumps({}) ], [ "org.reactobus.2", str(uuid.uuid1()), datetime.datetime.utcnow().isoformat(), "lavaserver", json.dumps({}) ], [ "org.reactobus.3", str(uuid.uuid1()), datetime.datetime.utcnow().isoformat(), "lavaserver", json.dumps({}) ], [ "org.reactobus.4", str(uuid.uuid1()), "2016/01/01", "lavaserver", json.dumps({}) ], [ "org.reactobus.5", str(uuid.uuid1()), datetime.datetime.utcnow().isoformat(), "lavaserver", json.dumps({}) ]] with pytest.raises(IndexError): db.run() # Check that the db is empty session = db.sessions() assert session.query(Message).count() == 4 assert session.query(Message).get(1).topic == "org.reactobus.1" assert session.query(Message).get(2).topic == "org.reactobus.2" assert session.query(Message).get(3).topic == "org.reactobus.3" assert session.query(Message).get(4).topic == "org.reactobus.5"