class MeasurementTest(TestCase): def setUp(self): self.api = API() def test_measurement_constructor(self): metric = 'CPU' value = 0.5 source = 'foobar' timestamp = int(datetime.now().strftime('%s')) properties = {"app_id": "red", "source_type": "blue", "origin": "green"} measurement = Measurement(metric=metric, value=value, source=source, timestamp=timestamp, properties=properties) self.assertEqual(metric, measurement.metric) self.assertEqual(value, measurement.value) self.assertEqual(source, measurement.source) self.assertEqual(timestamp, measurement.timestamp) self.assertEqual(properties, measurement.properties) def test_measurement_defaults(self): measurement = Measurement() self.assertIsNone(measurement.metric) self.assertIsNone(measurement.value) self.assertIsNone(measurement.source) self.assertIsNone(measurement.timestamp) self.assertIsNone(measurement.properties) def test_measurement_create(self): metric_id = 'CPU' value = 0.75 source = 'API_TEST_SOURCE' timestamp = int(datetime.now().strftime('%s')) self.api.measurement_create(metric_id, value, source, timestamp) def test_measurement_create_datetime(self): metric_id = 'CPU' value = 0.75 source = 'API_TEST_SOURCE' timestamp = datetime.now() self.api.measurement_create(metric_id, value, source, timestamp) def test_measurement_create_with_properties(self): metric_id = 'CPU' value = 0.75 source = 'API_TEST_SOURCE' timestamp = int(datetime.now().strftime('%s')) properties = {"app_id": "red", "source_type": "blue", "origin": "green"} self.api.measurement_create(metric=metric_id, value=value, source=source, timestamp=timestamp, properties=properties) def test_measurement_create_batch(self): measurements = [] timestamp = int(datetime.now().strftime('%s')) measurements.append(Measurement(metric='CPU', value=0.5, source='red', timestamp=timestamp)) measurements.append(Measurement(metric='CPU', value=0.6, source='green', timestamp=timestamp)) measurements.append(Measurement(metric='CPU', value=0.7, source='blue', timestamp=timestamp)) self.api.measurement_create_batch(measurements) def test_measurement_create_batch_datetime(self): measurements = [] timestamp = datetime.now() measurements.append(Measurement(metric='CPU', value=0.5, source='red', timestamp=timestamp)) measurements.append(Measurement(metric='CPU', value=0.6, source='green', timestamp=timestamp)) measurements.append(Measurement(metric='CPU', value=0.7, source='blue', timestamp=timestamp)) self.api.measurement_create_batch(measurements) def test_measurement_create_batch_with_properties(self): measurements = [] properties = {"app_id": "red", "source_type": "blue", "origin": "green"} timestamp = int(datetime.now().strftime('%s')) measurements.append(Measurement(metric='CPU', value=0.5, source='red', timestamp=timestamp, properties=properties)) measurements.append(Measurement(metric='CPU', value=0.6, source='green', timestamp=timestamp, properties=properties)) measurements.append(Measurement(metric='CPU', value=0.7, source='blue', timestamp=timestamp, properties=properties)) self.api.measurement_create_batch(measurements) def test_measurement_get(self): metric = 'CPU' value = 0.0 source = 'API_TEST_SOURCE' + TestUtils.random_string(6) properties = {"app_id": "red", "source_type": "blue", "origin": "green"} start = int(datetime.now().strftime('%s')) timestamp = start for i in range(0, 10): self.api.measurement_create(metric=metric, value=value, source=source, timestamp=timestamp, properties=properties) timestamp += 1 value += 0.1 measurements = self.api.measurement_get(source=source, start=start, aggregate='avg') value = 0.0 timestamp = start for measure in measurements: self.assertEqual(metric, measure.metric) self.assertEqual(value, measure.value) self.assertEqual(source, measure.source) self.assertEqual(timestamp, measure.timestamp/1000) timestamp += 1 value += 0.1 def test_parse_timestamp_date_string_yymmddhhmm(self): d = datetime.utcnow() s = d.strftime('%Y-%m-%d %H:%M:%S') ts = Measurement.parse_timestamp(s) self.assertEqual(type(ts), int) self.assertEqual(ts, int(d.strftime('%s'))) def test_parse_timestamp_date_string_yymmddhhmmss(self): d = datetime.utcnow() s = d.strftime('%Y-%m-%d %I:%M:%S%p') ts = Measurement.parse_timestamp(s) self.assertEqual(type(ts), int) self.assertEqual(ts, int(d.strftime('%s'))) def test_parse_timestamp_date_string_yymmddHHMM(self): d = datetime.utcnow() s = d.strftime('%Y-%m-%d %I:%M:%S%p') ts = Measurement.parse_timestamp(s) self.assertEqual(type(ts), int) self.assertEqual(ts, int(d.strftime('%s'))) def test_parse_timestamp_date_string_epoch_time(self): s = '1466704787' d = Measurement.parse_timestamp(s) self.assertEqual(type(d), int) self.assertEqual(d, 1466704787)
class MeasurementTest(TestCase): def setUp(self): self.api = API() def test_measurement_constructor(self): metric = 'CPU' value = 0.5 source = 'foobar' timestamp = int(datetime.now().strftime('%s')) properties = { "app_id": "red", "source_type": "blue", "origin": "green" } measurement = Measurement(metric=metric, value=value, source=source, timestamp=timestamp, properties=properties) self.assertEqual(metric, measurement.metric) self.assertEqual(value, measurement.value) self.assertEqual(source, measurement.source) self.assertEqual(timestamp, measurement.timestamp) self.assertEqual(properties, measurement.properties) def test_measurement_defaults(self): measurement = Measurement() self.assertIsNone(measurement.metric) self.assertIsNone(measurement.value) self.assertIsNone(measurement.source) self.assertIsNone(measurement.timestamp) self.assertIsNone(measurement.properties) def test_measurement_create(self): metric_id = 'CPU' value = 0.75 source = 'API_TEST_SOURCE' timestamp = int(datetime.now().strftime('%s')) self.api.measurement_create(metric_id, value, source, timestamp) def test_measurement_create_datetime(self): metric_id = 'CPU' value = 0.75 source = 'API_TEST_SOURCE' timestamp = datetime.now() self.api.measurement_create(metric_id, value, source, timestamp) def test_measurement_create_with_properties(self): metric_id = 'CPU' value = 0.75 source = 'API_TEST_SOURCE' timestamp = int(datetime.now().strftime('%s')) properties = { "app_id": "red", "source_type": "blue", "origin": "green" } self.api.measurement_create(metric=metric_id, value=value, source=source, timestamp=timestamp, properties=properties) def test_measurement_create_batch(self): measurements = [] timestamp = int(datetime.now().strftime('%s')) measurements.append( Measurement(metric='CPU', value=0.5, source='red', timestamp=timestamp)) measurements.append( Measurement(metric='CPU', value=0.6, source='green', timestamp=timestamp)) measurements.append( Measurement(metric='CPU', value=0.7, source='blue', timestamp=timestamp)) self.api.measurement_create_batch(measurements) def test_measurement_create_batch_datetime(self): measurements = [] timestamp = datetime.now() measurements.append( Measurement(metric='CPU', value=0.5, source='red', timestamp=timestamp)) measurements.append( Measurement(metric='CPU', value=0.6, source='green', timestamp=timestamp)) measurements.append( Measurement(metric='CPU', value=0.7, source='blue', timestamp=timestamp)) self.api.measurement_create_batch(measurements) def test_measurement_create_batch_with_properties(self): measurements = [] properties = { "app_id": "red", "source_type": "blue", "origin": "green" } timestamp = int(datetime.now().strftime('%s')) measurements.append( Measurement(metric='CPU', value=0.5, source='red', timestamp=timestamp, properties=properties)) measurements.append( Measurement(metric='CPU', value=0.6, source='green', timestamp=timestamp, properties=properties)) measurements.append( Measurement(metric='CPU', value=0.7, source='blue', timestamp=timestamp, properties=properties)) self.api.measurement_create_batch(measurements) def test_measurement_get(self): metric = 'CPU' value = 0.0 source = 'API_TEST_SOURCE' + TestUtils.random_string(6) properties = { "app_id": "red", "source_type": "blue", "origin": "green" } start = int(datetime.now().strftime('%s')) timestamp = start for i in range(0, 10): self.api.measurement_create(metric=metric, value=value, source=source, timestamp=timestamp, properties=properties) timestamp += 1 value += 0.1 measurements = self.api.measurement_get(source=source, start=start, aggregate='avg') value = 0.0 timestamp = start for measure in measurements: self.assertEqual(metric, measure.metric) self.assertEqual(value, measure.value) self.assertEqual(source, measure.source) self.assertEqual(timestamp, measure.timestamp / 1000) timestamp += 1 value += 0.1 def test_parse_timestamp_date_string_yymmddhhmm(self): d = datetime.utcnow() s = d.strftime('%Y-%m-%d %H:%M:%S') ts = Measurement.parse_timestamp(s) self.assertEqual(type(ts), int) self.assertEqual(ts, int(d.strftime('%s'))) def test_parse_timestamp_date_string_yymmddhhmmss(self): d = datetime.utcnow() s = d.strftime('%Y-%m-%d %I:%M:%S%p') ts = Measurement.parse_timestamp(s) self.assertEqual(type(ts), int) self.assertEqual(ts, int(d.strftime('%s'))) def test_parse_timestamp_date_string_yymmddHHMM(self): d = datetime.utcnow() s = d.strftime('%Y-%m-%d %I:%M:%S%p') ts = Measurement.parse_timestamp(s) self.assertEqual(type(ts), int) self.assertEqual(ts, int(d.strftime('%s'))) def test_parse_timestamp_date_string_epoch_time(self): s = '1466704787' d = Measurement.parse_timestamp(s) self.assertEqual(type(d), int) self.assertEqual(d, 1466704787)