def test_build_group_by_clause_without_period(self): group_by = 'hostname,service' expected_clause = ' group by hostname,service' repo = influxdb_repo.MetricsRepository() clause = repo._build_group_by_clause(group_by) self.assertEqual(clause, expected_clause)
def test_list_dimension_names(self, influxdb_client_mock): mock_client = influxdb_client_mock.return_value mock_client.query.return_value.raw = { u'series': [{ u'values': [[ u'custom_metric,_region=useast,_tenant_id=38dc2a2549f94d2e9a4fa1cc45a4970c,' u'hostname=custom_host,service=custom_service', u'useast', u'38dc2a2549f94d2e9a4fa1cc45a4970c', u'custom_host', u'custom_service' ]], u'name': u'custom_metric', u'columns': [u'_key', u'_region', u'_tenant_id', u'hostname', u'service'] }] } repo = influxdb_repo.MetricsRepository() result = repo.list_dimension_names("38dc2a2549f94d2e9a4fa1cc45a4970c", "useast", "custom_metric") self.assertEqual(result, [{ u'dimension_name': u'hostname' }, { u'dimension_name': u'service' }])
def test_list_dimension_values(self, influxdb_client_mock): mock_client = influxdb_client_mock.return_value mock_client.query.return_value.raw = { u'series': [{ u'values': [[ u'custom_metric,_region=useast,_tenant_id=38dc2a2549f94d2e9a4fa1cc45a4970c,' u'hostname=custom_host,service=custom_service', u'useast', u'38dc2a2549f94d2e9a4fa1cc45a4970c', u'custom_host', u'custom_service' ]], u'name': u'custom_metric', u'columns': [u'_key', u'_region', u'_tenant_id', u'hostname', u'service'] }] } repo = influxdb_repo.MetricsRepository() result = repo.list_dimension_values("38dc2a2549f94d2e9a4fa1cc45a4970c", "useast", "custom_metric", "hostname", offset=None, limit=1) self.assertEqual( result, { u'dimension_name': 'hostname', u'values': [u'custom_host'], u'id': 'bea9565d854a16a3366164de213694c190f27675', u'metric_name': 'custom_metric' })
def test_measurement_list(self, influxdb_client_mock): mock_client = influxdb_client_mock.return_value mock_client.query.return_value.raw = { "series": [{ "name": "dummy.series", "values": [[1, 2, None], [2, 2.5, ''], [3, 4.0, '{}'], [4, 4, '{"key": "value"}']] }] } repo = influxdb_repo.MetricsRepository() result = repo.measurement_list("tenant_id", "region", name=None, dimensions=None, start_timestamp=1, end_timestamp=2, offset=None, limit=1, merge_metrics_flag=True) self.assertEqual(len(result), 1) self.assertEqual(result[0]['dimensions'], None) self.assertEqual(result[0]['name'], 'dummy.series') self.assertEqual(result[0]['columns'], ['timestamp', 'value', 'value_meta']) measurements = result[0]['measurements'] self.assertEqual( [[1, 2, {}], [2, 2.5, {}], [3, 4.0, {}], [4, 4, { "key": "value" }]], measurements)
def test_build_group_by_clause_with_period(self): group_by = 'hostname,service' period = 300 expected_clause = ' group by hostname,service,time(300s) fill(none)' repo = influxdb_repo.MetricsRepository() clause = repo._build_group_by_clause(group_by, period) self.assertEqual(clause, expected_clause)
def test_list_dimension_names(self, influxdb_client_mock, timestamp=False): mock_client = influxdb_client_mock.return_value tenant_id = u'38dc2a2549f94d2e9a4fa1cc45a4970c' region = u'useast' metric = u'custom_metric' start_timestamp = 1571917171275 end_timestamp = 1572917171275 mock_client.query.return_value.raw = { u'series': [{ u'values': [[u'_region'], [u'_tenant_id'], [u'hostname'], [u'service']], u'name': metric, u'columns': [u'tagKey'] }] } repo = influxdb_repo.MetricsRepository() mock_client.query.reset_mock() db_per_tenant = repo.conf.influxdb.db_per_tenant database = repo.conf.influxdb.database_name database += "_%s" % tenant_id if db_per_tenant else "" result = (repo.list_dimension_names(tenant_id, region, metric, start_timestamp, end_timestamp) if timestamp else repo.list_dimension_names( tenant_id, region, metric)) self.assertEqual(result, [{ u'dimension_name': u'hostname' }, { u'dimension_name': u'service' }]) query = ('show tag keys from "{metric}"' ' where _region = \'{region}\''.format(region=region, metric=metric)) query += ('' if db_per_tenant else ' and _tenant_id = \'{tenant_id}\''.format( tenant_id=tenant_id)) query += (' and time >= {start_timestamp}000000u' ' and time < {end_timestamp}000000u'.format( start_timestamp=start_timestamp, end_timestamp=end_timestamp) if timestamp else '') mock_client.query.assert_called_once_with(query, database=database)
def test_measurement_list(self, influxdb_client_mock): mock_client = influxdb_client_mock.return_value mock_client.query.return_value.raw = { "series": [ { "name": "dummy.series", "values": [ ["2015-03-14T09:26:53.59Z", 2, None], ["2015-03-14T09:26:53.591Z", 2.5, ''], ["2015-03-14T09:26:53.6Z", 4.0, '{}'], ["2015-03-14T09:26:54Z", 4, '{"key": "value"}'], ["2015-03-14T09:26:53.1234567Z", 1, '{}'] ] } ] } repo = influxdb_repo.MetricsRepository() repo._version = 'from_0.11.0' result = repo.measurement_list( "tenant_id", "region", name=None, dimensions=None, start_timestamp=1, end_timestamp=2, offset=None, limit=1, merge_metrics_flag=True, group_by=None) self.assertEqual(len(result), 1) self.assertIsNone(result[0]['dimensions']) self.assertEqual(result[0]['name'], 'dummy.series') self.assertEqual(result[0]['columns'], ['timestamp', 'value', 'value_meta']) measurements = result[0]['measurements'] self.assertEqual( [["2015-03-14T09:26:53.590Z", 2, {}], ["2015-03-14T09:26:53.591Z", 2.5, {}], ["2015-03-14T09:26:53.600Z", 4.0, {}], ["2015-03-14T09:26:54.000Z", 4, {"key": "value"}], ["2015-03-14T09:26:53.123Z", 1, {}]], measurements )
def test_list_metrics(self, influxdb_client_mock): mock_client = influxdb_client_mock.return_value mock_client.query.return_value.raw = { u'series': [{ u'values': [[ u'disk.space_used_perc,_region=region,_tenant_id=' u'0b5e7d8c43f74430add94fba09ffd66e,device=rootfs,' 'hostname=host0,hosttype=native,mount_point=/', u'region', u'0b5e7d8c43f74430add94fba09ffd66e', u'rootfs', u'host0', u'native', u'', u'/' ]], u'name': u'disk.space_used_perc', u'columns': [u'_key', u'_region', u'_tenant_id', u'device', u'hostname', u'hosttype', u'extra', u'mount_point'] }] } repo = influxdb_repo.MetricsRepository() result = repo.list_metrics( "0b5e7d8c43f74430add94fba09ffd66e", "region", name="disk.space_user_perc", dimensions={ "hostname": "host0", "hosttype": "native", "mount_point": "/", "device": "rootfs"}, offset=None, limit=1) self.assertEqual(result, [{ u'id': '0', u'name': u'disk.space_used_perc', u'dimensions': { u'device': u'rootfs', u'hostname': u'host0', u'mount_point': u'/', u'hosttype': u'native' }, }])
def test_metrics_statistics(self, influxdb_client_mock): mock_client = influxdb_client_mock.return_value mock_client.query.return_value.raw = { u'series': [{ u'values': [[u'1970-01-01T00:00:00Z', 0.047]], u'name': u'cpu.utilization', u'columns': [u'time', u'mean'] }], u'statement_id': 0 } tenant_id = '1' region = 'USA' name = 'cpu.utilization' start_timestamp = 1484036107.86 statistics = [u"avg"] limit = 10000 dimensions = None end_timestamp = None period = None offset = None merge_metrics_flag = None group_by = None repo = influxdb_repo.MetricsRepository() stats_list = repo.metrics_statistics(tenant_id, region, name, dimensions, start_timestamp, end_timestamp, statistics, period, offset, limit, merge_metrics_flag, group_by) expected_result = [{ u'columns': [u'timestamp', u'avg'], u'dimensions': { u'mean': 0.047, u'time': u'1970-01-01T00:00:00Z' }, u'id': '0', u'name': u'cpu.utilization', u'statistics': [[u'1970-01-01T00:00:00Z', 0.047]] }] self.assertEqual(stats_list, expected_result)
def test_list_dimension_values(self, influxdb_client_mock): mock_client = influxdb_client_mock.return_value mock_client.query.return_value.raw = { u'series': [ { u'values': [[u'custom_host']], u'name': u'custom_metric', u'columns': [u'hostname'] }] } repo = influxdb_repo.MetricsRepository() result = repo.list_dimension_values( "38dc2a2549f94d2e9a4fa1cc45a4970c", "useast", "custom_metric", "hostname") self.assertEqual(result, [{u'dimension_value': u'custom_host'}])
def test_list_dimension_values(self, influxdb_client_mock): mock_client = influxdb_client_mock.return_value mock_client.query.return_value.raw = { u'series': [{ u'values': [[u'custom_host']], u'name': u'custom_metric', u'columns': [u'hostname'] }] } repo = influxdb_repo.MetricsRepository() mock_client.query.reset_mock() result = repo.list_dimension_values("38dc2a2549f94d2e9a4fa1cc45a4970c", "useast", "custom_metric", "hostname") self.assertEqual(result, [{u'dimension_value': u'custom_host'}]) mock_client.query.assert_called_once_with( 'show tag values from "custom_metric" with key = "hostname"' ' where _tenant_id = \'38dc2a2549f94d2e9a4fa1cc45a4970c\'' ' and _region = \'useast\' ')