async def test_run_error(influx_mock, app, client, mocker): data_writer = influx.get_data_writer(app) influx_mock.ping.side_effect = RuntimeError await asyncio.sleep(0.1) assert data_writer.active assert influx_mock.ping.call_count > 0
async def test_running_writer(influx_mock, app, client, mocker): writer = influx.get_data_writer(app) writer.write_soon( measurement='measurement', fields=dict(field1=1, field2=2), tags=dict(tag1=1, tag2=2) ) await asyncio.sleep(0.1) assert writer.active assert not writer._pending assert influx_mock.write.call_count == 1
async def test_retry_generate_connection(influx_mock, app, client): writer = influx.get_data_writer(app) await writer.shutdown(app) influx_mock.ping.reset_mock() influx_mock.create_database.reset_mock() influx_mock.ping.side_effect = ClientConnectionError await writer.startup(app) await asyncio.sleep(0.1) # generate_connections() keeps trying, but no success so far assert writer.active assert influx_mock.ping.call_count > 0 assert influx_mock.create_database.call_count == 0
async def test_avoid_overflow(influx_mock, app, client, fewer_max_points): influx_mock.create_database.side_effect = ClientConnectionError writer = influx.get_data_writer(app) await writer.shutdown(app) await writer.startup(app) for i in range(2 * influx.MAX_PENDING_POINTS): writer.write_soon( measurement='measurement', fields=dict(field1=1, field2=2), tags=dict(tag1=1, tag2=2) ) writer._avoid_overflow() assert len(writer._pending) == influx.MAX_PENDING_POINTS assert influx_mock.write.call_count == 0 influx_mock.create_database.side_effect = None await asyncio.sleep(0.1)
async def test_reconnect(influx_mock, app, client): writer = influx.get_data_writer(app) influx_mock.create_database.side_effect = ClientConnectionError await writer.shutdown(app) await writer.startup(app) writer.write_soon( measurement='measurement', fields=dict(field1=1, field2=2), tags=dict(tag1=1, tag2=2) ) await asyncio.sleep(0.1) assert influx_mock.write.call_count == 0 assert writer.active influx_mock.create_database.side_effect = [True] await asyncio.sleep(0.1) assert writer.active assert influx_mock.write.call_count == 1
def __init__(self, app: web.Application): super().__init__(app) self._listener = events.get_listener(app) self._writer = influx.get_data_writer(app)
async def test_setup(app, client): assert influx.get_data_writer(app) assert influx.get_client(app)