202 lines
6.7 KiB
Python
202 lines
6.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""Define the resultset test package."""
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
from __future__ import unicode_literals
|
|
|
|
import unittest
|
|
|
|
from influxdb.exceptions import InfluxDBClientError
|
|
from influxdb.resultset import ResultSet
|
|
|
|
|
|
class TestResultSet(unittest.TestCase):
|
|
"""Define the ResultSet test object."""
|
|
|
|
def setUp(self):
|
|
"""Set up an instance of TestResultSet."""
|
|
self.query_response = {
|
|
"results": [
|
|
{"series": [{"name": "cpu_load_short",
|
|
"columns": ["time", "value", "host", "region"],
|
|
"values": [
|
|
["2015-01-29T21:51:28.968422294Z",
|
|
0.64,
|
|
"server01",
|
|
"us-west"],
|
|
["2015-01-29T21:51:28.968422294Z",
|
|
0.65,
|
|
"server02",
|
|
"us-west"],
|
|
]},
|
|
{"name": "other_series",
|
|
"columns": ["time", "value", "host", "region"],
|
|
"values": [
|
|
["2015-01-29T21:51:28.968422294Z",
|
|
0.66,
|
|
"server01",
|
|
"us-west"],
|
|
]}]}
|
|
]
|
|
}
|
|
|
|
self.rs = ResultSet(self.query_response['results'][0])
|
|
|
|
def test_filter_by_name(self):
|
|
"""Test filtering by name in TestResultSet object."""
|
|
expected = [
|
|
{'value': 0.64,
|
|
'time': '2015-01-29T21:51:28.968422294Z',
|
|
'host': 'server01',
|
|
'region': 'us-west'},
|
|
{'value': 0.65,
|
|
'time': '2015-01-29T21:51:28.968422294Z',
|
|
'host': 'server02',
|
|
'region': 'us-west'},
|
|
]
|
|
|
|
self.assertEqual(expected, list(self.rs['cpu_load_short']))
|
|
self.assertEqual(expected,
|
|
list(self.rs.get_points(
|
|
measurement='cpu_load_short')))
|
|
|
|
def test_filter_by_tags(self):
|
|
"""Test filter by tags in TestResultSet object."""
|
|
expected = [
|
|
{'value': 0.64,
|
|
'time': '2015-01-29T21:51:28.968422294Z',
|
|
'host': 'server01',
|
|
'region': 'us-west'},
|
|
{'value': 0.66,
|
|
'time': '2015-01-29T21:51:28.968422294Z',
|
|
'host': 'server01',
|
|
'region': 'us-west'},
|
|
]
|
|
|
|
self.assertEqual(
|
|
expected,
|
|
list(self.rs[{"host": "server01"}])
|
|
)
|
|
|
|
self.assertEqual(
|
|
expected,
|
|
list(self.rs.get_points(tags={'host': 'server01'}))
|
|
)
|
|
|
|
def test_filter_by_name_and_tags(self):
|
|
"""Test filter by name and tags in TestResultSet object."""
|
|
self.assertEqual(
|
|
list(self.rs[('cpu_load_short', {"host": "server01"})]),
|
|
[{'value': 0.64,
|
|
'time': '2015-01-29T21:51:28.968422294Z',
|
|
'host': 'server01',
|
|
'region': 'us-west'}]
|
|
)
|
|
|
|
self.assertEqual(
|
|
list(self.rs[('cpu_load_short', {"region": "us-west"})]),
|
|
[
|
|
{'value': 0.64,
|
|
'time': '2015-01-29T21:51:28.968422294Z',
|
|
'host': 'server01',
|
|
'region': 'us-west'},
|
|
{'value': 0.65,
|
|
'time': '2015-01-29T21:51:28.968422294Z',
|
|
'host': 'server02',
|
|
'region': 'us-west'},
|
|
]
|
|
)
|
|
|
|
def test_keys(self):
|
|
"""Test keys in TestResultSet object."""
|
|
self.assertEqual(
|
|
self.rs.keys(),
|
|
[
|
|
('cpu_load_short', None),
|
|
('other_series', None),
|
|
]
|
|
)
|
|
|
|
def test_len(self):
|
|
"""Test length in TestResultSet object."""
|
|
self.assertEqual(
|
|
len(self.rs),
|
|
2
|
|
)
|
|
|
|
def test_items(self):
|
|
"""Test items in TestResultSet object."""
|
|
items = list(self.rs.items())
|
|
items_lists = [(item[0], list(item[1])) for item in items]
|
|
|
|
self.assertEqual(
|
|
items_lists,
|
|
[
|
|
(
|
|
('cpu_load_short', None),
|
|
[
|
|
{'time': '2015-01-29T21:51:28.968422294Z',
|
|
'value': 0.64,
|
|
'host': 'server01',
|
|
'region': 'us-west'},
|
|
{'time': '2015-01-29T21:51:28.968422294Z',
|
|
'value': 0.65,
|
|
'host': 'server02',
|
|
'region': 'us-west'}]),
|
|
(
|
|
('other_series', None),
|
|
[
|
|
{'time': '2015-01-29T21:51:28.968422294Z',
|
|
'value': 0.66,
|
|
'host': 'server01',
|
|
'region': 'us-west'}])]
|
|
)
|
|
|
|
def test_point_from_cols_vals(self):
|
|
"""Test points from columns in TestResultSet object."""
|
|
cols = ['col1', 'col2']
|
|
vals = [1, '2']
|
|
|
|
point = ResultSet.point_from_cols_vals(cols, vals)
|
|
self.assertDictEqual(
|
|
point,
|
|
{'col1': 1, 'col2': '2'}
|
|
)
|
|
|
|
def test_system_query(self):
|
|
"""Test system query capabilities in TestResultSet object."""
|
|
rs = ResultSet(
|
|
{'series': [
|
|
{'values': [['another', '48h0m0s', 3, False],
|
|
['default', '0', 1, False],
|
|
['somename', '24h0m0s', 4, True]],
|
|
'columns': ['name', 'duration',
|
|
'replicaN', 'default']}]}
|
|
)
|
|
|
|
self.assertEqual(
|
|
rs.keys(),
|
|
[('results', None)]
|
|
)
|
|
|
|
self.assertEqual(
|
|
list(rs['results']),
|
|
[
|
|
{'duration': '48h0m0s', 'default': False, 'replicaN': 3,
|
|
'name': 'another'},
|
|
{'duration': '0', 'default': False, 'replicaN': 1,
|
|
'name': 'default'},
|
|
{'duration': '24h0m0s', 'default': True, 'replicaN': 4,
|
|
'name': 'somename'}
|
|
]
|
|
)
|
|
|
|
def test_resultset_error(self):
|
|
"""Test returning error in TestResultSet object."""
|
|
with self.assertRaises(InfluxDBClientError):
|
|
ResultSet({
|
|
"series": [],
|
|
"error": "Big error, many problems."
|
|
})
|