Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 18 additions & 2 deletions tempodb/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,13 @@ def from_json(json):

class DataSet(object):

def __init__(self, series, start, end, data=[], summary=None):
def __init__(self, series, start, end, data=[], summary=None, rollup=None):
self.series = series
self.start = start
self.end = end
self.data = data
self.summary = summary
self.rollup = rollup

def __str__(self):
return str(self.__dict__)
Expand All @@ -97,7 +98,8 @@ def from_json(json):

data = [DataPoint.from_json(dp) for dp in json.get("data", [])]
summary = Summary.from_json(json.get('summary', {})) if 'summary' in json else None
return DataSet(series, start_date, end_date, data, summary)
rollup = Rollup.from_json(json.get('rollup', {})) if 'rollup' in json else None
return DataSet(series, start_date, end_date, data, summary, rollup)


class Summary(object):
Expand All @@ -115,4 +117,18 @@ def from_json(json):
return summary


class Rollup(object):

def __init__(self, **kwargs):
self.__dict__.update(kwargs)

def __eq__(self, other):
return self.__dict__ == other.__dict__

@staticmethod
def from_json(json):
rollup = Rollup()
rollup.__dict__.update(json)
return rollup


25 changes: 25 additions & 0 deletions tests/base/rollup_tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/usr/bin/env python
# encoding: utf-8

from unittest2 import TestCase

from tempodb import Rollup


class RollupTest(TestCase):

def test_init(self):
rollup = Rollup(interval="PT6H", function="avg", tz="UTC")
self.assertEqual(rollup.interval, "PT6H")
self.assertEqual(rollup.function, "avg")
self.assertEqual(rollup.tz, "UTC")

def test_from_json(self):
json = {
"interval":"PT6H",
"function":"avg",
"tz":"UTC"
}
rollup = Rollup.from_json(json)
expected = Rollup(interval="PT6H", function="avg", tz="UTC")
self.assertEqual(rollup, expected)
25 changes: 15 additions & 10 deletions tests/client/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from unittest2 import TestCase

import tempodb
from tempodb import Client, DataPoint, DataSet, Series, Summary
from tempodb import Client, DataPoint, DataSet, Series, Summary, Rollup


class MockResponse(object):
Expand Down Expand Up @@ -62,7 +62,6 @@ def test_port_defaults(self):
self.assertEqual(client.build_full_url('/etc'), 'https://example.com:88/v1/etc')
client = Client('key', 'secret', 'example.com', 80, True)
self.assertEqual(client.build_full_url('/etc'), 'https://example.com:80/v1/etc')

def test_get_series(self):
self.client.session.get.return_value = MockResponse(200, """[{
"id": "id",
Expand Down Expand Up @@ -130,14 +129,15 @@ def test_read_id(self):
"start": "2012-03-27T00:00:00.000",
"end": "2012-03-28T00:00:00.000",
"data": [{"t": "2012-03-27T00:00:00.000", "v": 12.34}],
"summary": {}
"summary": {},
"rollup": {}
}""")

start = datetime.datetime(2012, 3, 27)
end = datetime.datetime(2012, 3, 28)
dataset = self.client.read_id('id', start, end)

expected = DataSet(Series('id', 'key'), start, end, [DataPoint(start, 12.34)], Summary())
expected = DataSet(Series('id', 'key'), start, end, [DataPoint(start, 12.34)], Summary(), Rollup())
self.client.session.get.assert_called_once_with(
'https://example.com/v1/series/id/id/data/?start=2012-03-27T00%3A00%3A00&end=2012-03-28T00%3A00%3A00',
auth=('key', 'secret'),
Expand All @@ -157,14 +157,15 @@ def test_read_key(self):
"start": "2012-03-27T00:00:00.000",
"end": "2012-03-28T00:00:00.000",
"data": [{"t": "2012-03-27T00:00:00.000", "v": 12.34}],
"summary": {}
"summary": {},
"rollup": {}
}""")

start = datetime.datetime(2012, 3, 27)
end = datetime.datetime(2012, 3, 28)
dataset = self.client.read_key('key1', start, end)

expected = DataSet(Series('id', 'key1'), start, end, [DataPoint(start, 12.34)], Summary())
expected = DataSet(Series('id', 'key1'), start, end, [DataPoint(start, 12.34)], Summary(), Rollup())
self.client.session.get.assert_called_once_with(
'https://example.com/v1/series/key/key1/data/?start=2012-03-27T00%3A00%3A00&end=2012-03-28T00%3A00%3A00',
auth=('key', 'secret'),
Expand All @@ -184,19 +185,22 @@ def test_read_key_escape(self):
"start": "2012-03-27T00:00:00.000",
"end": "2012-03-28T00:00:00.000",
"data": [{"t": "2012-03-27T00:00:00.000", "v": 12.34}],
"summary": {}
"summary": {},
"rollup": {}
}""")

start = datetime.datetime(2012, 3, 27)
end = datetime.datetime(2012, 3, 28)
dataset = self.client.read_key('ke:y/1', start, end)

expected = DataSet(Series('id', 'ke:y/1'), start, end, [DataPoint(start, 12.34)], Summary())
expected = DataSet(Series('id', 'ke:y/1'), start, end, [DataPoint(start, 12.34)], Summary(), Rollup())
self.client.session.get.assert_called_once_with(
'https://example.com/v1/series/key/ke%3Ay%2F1/data/?start=2012-03-27T00%3A00%3A00&end=2012-03-28T00%3A00%3A00',
auth=('key', 'secret'),
headers=self.get_headers
)
print dataset
print expected
self.assertEqual(dataset, expected)

def test_read(self):
Expand All @@ -211,14 +215,15 @@ def test_read(self):
"start": "2012-03-27T00:00:00.000",
"end": "2012-03-28T00:00:00.000",
"data": [{"t": "2012-03-27T00:00:00.000", "v": 12.34}],
"summary": {}
"summary": {},
"rollup": {}
}]""")

start = datetime.datetime(2012, 3, 27)
end = datetime.datetime(2012, 3, 28)
datasets = self.client.read(start, end, keys=['key1'])

expected = [DataSet(Series('id', 'key1'), start, end, [DataPoint(start, 12.34)], Summary())]
expected = [DataSet(Series('id', 'key1'), start, end, [DataPoint(start, 12.34)], Summary(), Rollup())]
self.client.session.get.assert_called_once_with(
'https://example.com/v1/data/?start=2012-03-27T00%3A00%3A00&end=2012-03-28T00%3A00%3A00&key=key1',
auth=('key', 'secret'),
Expand Down