def test_get_times_data2(self): res = self.source.get_times_data( self.model, from_date=self.t0, to_date=self.t0 + 8, ) # _source to write aggregate data to RAM _source = MemDataSource() _features = copy.deepcopy(self.model.features) for _, feature in enumerate(self.model.features): feature.metric = 'avg' i = None for i, (_, val, timeval) in enumerate(res): bucket = { feature.field: val[i] for i, feature in enumerate(self.model.features) } bucket.update({'timestamp': make_ts(timeval)}) _source.insert_times_data(bucket) res2 = _source.get_times_data( self.model, from_date=self.t0, to_date=self.t0 + 8, ) self.model.features = _features for i, (_, val2, timeval2) in enumerate(res2): (_, val, timeval) = res[i] np.testing.assert_allclose(val, val2)
class TestMemDataSource(unittest.TestCase): def setUp(self): self.source = MemDataSource() self.model = DonutModel( dict( name='test', offset=30, span=300, bucket_interval=3, interval=60, features=FEATURES, max_threshold=70, min_threshold=60, )) data = [ # (foo, timestamp) (1, 0), # excluded (2, 1), (3, 2), # empty (4, 8), (5, 10), # excluded ] for entry in data: self.source.insert_times_data({ 'foo': entry[0], 'timestamp': entry[1], }) self.source.commit() def test_get_times_buckets(self): res = self.source.get_times_buckets( from_date=1, to_date=9, bucket_interval=3, ) self.assertEqual( [[entry.data['foo'] for entry in bucket.data] for bucket in res], [[2, 3], [], [4]], ) def test_get_times_data(self): res = self.source.get_times_data(self.model, from_date=1, to_date=9) foo_avg = [] for line in res: foo_avg.append(nan_to_none(line[1][0])) self.assertEqual(foo_avg, [2.5, None, 4.0])