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)
示例#2
0
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)