def test_sample_batch_true(self): influxdb.set_sample_probability(1.0) self.setup_batch() self.assertEqual(influxdb._pending_measurements(), 1000) result = influxdb._sample_batch() self.assertTrue(result) self.assertEqual(influxdb._pending_measurements(), 1000)
def test_periodic_callback_while_already_processing(self): database = str(uuid.uuid4()) name = str(uuid.uuid4()) test_value = random.randint(1000, 2000) measurement = influxdb.Measurement(database, name) measurement.set_field('test', test_value) influxdb.add_measurement(measurement) self.assertEqual(influxdb._pending_measurements(), 1) future = influxdb._on_timeout() self.assertIsNone(influxdb._on_timeout()) self.assertEqual(influxdb._pending_measurements(), 0) self.io_loop.add_future(future, self.stop) self.wait() result = self.get_measurement() self.assertEqual(result.db, database) self.assertEqual(result.name, name) self.assertEqual(result.fields['test'], test_value)
def test_with_http_error(self): database = str(uuid.uuid4()) name = str(uuid.uuid4()) test_value = random.randint(1000, 2000) measurement = influxdb.Measurement(database, name) measurement.set_field('test', test_value) influxdb.add_measurement(measurement) self.assertEqual(influxdb._pending_measurements(), 1) with mock.patch('tornado.httpclient.AsyncHTTPClient.fetch') as fetch: future = concurrent.Future() fetch.return_value = future future.set_exception(httpclient.HTTPError(599, 'TestError')) self.flush() self.assertEqual(influxdb._pending_measurements(), 1) self.flush() result = self.get_measurement() self.assertEqual(result.db, database) self.assertEqual(result.name, name) self.assertEqual(result.fields['test'], test_value)
def test_write_measurements_while_already_processing(self): database = str(uuid.uuid4()) name = str(uuid.uuid4()) test_value = random.randint(1000, 2000) measurement = influxdb.Measurement(database, name) measurement.set_field('test', test_value) influxdb.add_measurement(measurement) self.assertEqual(influxdb._pending_measurements(), 1) future = influxdb._on_timeout() second_write = influxdb._write_measurements() self.assertTrue(concurrent.is_future(second_write)) self.assertTrue(second_write.done()) self.assertFalse(second_write.result()) self.assertEqual(influxdb._pending_measurements(), 0) self.io_loop.add_future(future, self.stop) self.wait() result = self.get_measurement() self.assertEqual(result.db, database) self.assertEqual(result.name, name) self.assertEqual(result.fields['test'], test_value)
def test_with_oserror(self): database = str(uuid.uuid4()) name = str(uuid.uuid4()) test_value = random.randint(1000, 2000) measurement = influxdb.Measurement(database, name) measurement.set_field('test', test_value) influxdb.add_measurement(measurement) influxdb._create_http_client() self.assertEqual(influxdb._pending_measurements(), 1) with mock.patch.object(influxdb._http_client, 'fetch') as fetch: future = concurrent.Future() future.set_exception(OSError()) fetch.return_value = future influxdb._on_timeout() self.assertEqual(influxdb._pending_measurements(), 1) self.flush() result = self.get_measurement() self.assertEqual(result.db, database) self.assertEqual(result.name, name) self.assertEqual(result.fields['test'], test_value)
def test_timer(self): database = str(uuid.uuid4()) name = str(uuid.uuid4()) test_value = random.randint(1000, 2000) measurement = influxdb.Measurement(database, name) measurement.set_field('test', test_value) with measurement.duration('duration-test'): future = gen.sleep(0.100) self.io_loop.add_future(future, self.stop) self.wait() influxdb.add_measurement(measurement) self.assertEqual(influxdb._pending_measurements(), 1) self.flush() value = self.get_measurement() self.assertAlmostEqual(float(value.fields['duration-test']), 0.1, 1)