コード例 #1
0
    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)
コード例 #2
0
    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')
コード例 #3
0
    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)
コード例 #4
0
    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')
コード例 #5
0
    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")
コード例 #6
0
    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)
コード例 #7
0
    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'])