def test_extract_results(self): """Validate proper result extraction""" t_influx = influxdb.InfluxDBGrafanaTranslator(data=self.reference_data) raw_results = "{ \"results\": [{ \"series\": [{ " \ "\"columns\": [\"time\",\"mean\"]," \ "\"values\": [[1552500855000, " \ "67.3550078657577]]}]}]}" # Structure of InfluxDB time series data # { "results": [{ # "statement_id": 0, # "series": [{ # "name": "cpu_percent", # "columns": [ # "time", # "mean" # ], # "values": [[ # 1552500855000, # 67.3550078657577 # ]] # }] # }]} self.assertEqual(t_influx.extract_result(raw_results), 67.3550078657577)
def test_retention_period_one_day(self): """Validate lowest retention period""" data = copy.copy(self.reference_data) data['query'] = "{4}" t_influx = influxdb.InfluxDBGrafanaTranslator(data=data) params = t_influx.build_params() self.assertEqual(params['q'], 'one_day')
def test_extract_results_error(self): """Validate error on missing results""" t_influx = influxdb.InfluxDBGrafanaTranslator(data=self.reference_data) raw_results = "{}" self.assertRaises(exception.NoSuchMetricForHost, t_influx.extract_result, raw_results)
def test_retention_period_one_week(self): """Validate incrementing retention periods""" data = copy.copy(self.reference_data) data['query'] = "{4}" data['period'] = 90000 t_influx = influxdb.InfluxDBGrafanaTranslator(data=data) params = t_influx.build_params() self.assertEqual(params['q'], 'one_week')
def test_retention_period_warning(self, m_log): """Validate retention period warning""" data = copy.copy(self.reference_data) data['query'] = "{4}" data['period'] = 650000 t_influx = influxdb.InfluxDBGrafanaTranslator(data=data) params = t_influx.build_params() self.assertEqual(params['q'], 'one_week') m_log.warning.assert_called_once_with( "Longest retention period is to short for desired period")
def test_build_params_granularity(self): """Validate build params granularity""" data = copy.copy(self.reference_data) data['granularity'] = None data['query'] = "{3}" t_influx = influxdb.InfluxDBGrafanaTranslator(data=data) raw_results = {'db': 'production', 'epoch': 'ms', 'q': '1'} # InfluxDB build_params should replace granularity None optional with 1 result = t_influx.build_params() self.assertEqual(raw_results, result)
def test_build_params_order(self): """Validate order of build params""" data = copy.copy(self.reference_data) data['aggregate'] = 'count' # prevent having to deepcopy by keeping this value the same # this will access the value 'hyperion' from the mocked resource object data['attribute'] = 'hostname' data['period'] = 3 # because the period is only 3 the retention_period will be one_day data['granularity'] = 4 data['query'] = "{0}{1}{2}{3}{4}" t_influx = influxdb.InfluxDBGrafanaTranslator(data=data) raw_results = "counthyperion34one_day" result = t_influx.build_params() self.assertEqual(raw_results, result['q'])