def test_live_view_api(self): #test on live interface s = self.shark columns, filters = setup_defaults() interface = s.get_interface_by_name('mon0') view = s.create_view(interface, columns, None, name='test_live_view', sync=True) time.sleep(20) # 20 seconds delta start = view.get_timeinfo()['start'] onesec = 1000000000 end = start + 20*onesec data = view.get_data(start=start) table = [(x['p'], x['t'], T.datetime_to_nanoseconds(x['t'])) for x in data] # XXX figure how to split these up into separate tests without adding 20sec delay # for each of them #this part needs to be redone since delta is no longer accepted for aggregated calls # aggregate and compare against first row of data # print table # delta = table[0][2] - start + onesec # d = view.get_data(aggregated=True, delta=delta) # self.assertEqual(len(d), 1) # self.assertEqual(d[0]['p'], table[0][0]) # # aggregate and compare against first two rows of data # # note extra onesec not needed here # delta = table[1][2] - start # d = view.get_data(aggregated=True, delta=delta) # self.assertEqual(len(d), 1) # self.assertEqual(d[0]['p'], table[0][0]) if len(table) >= 2: # aggregate with start/end as last two samples # start = table[-2][2] end = table[-1][2] d = view.get_data(aggregated=True, start=start, end=end) self.assertEqual(len(d), 1) self.assertEqual(d[0]['p'], table[-2][0]) # aggregate with start/end as first and last sample # result is sum of samples without last one start = table[0][2] end = table[-1][2] d = view.get_data(aggregated=True, start=start, end=end) self.assertEqual(len(d), 1) self.assertEqual(d[0]['p'], sum(x[0] for x in table[:-1])) # # aggregate with start as second sample and delta to end of table # # # start = table[1][2] # delta = table[-1][2] - start # d = view.get_data(aggregated=True, start=start, delta=delta) # self.assertEqual(len(d), 1) # self.assertEqual(d[0]['p'], sum(x[0] for x in table[1:-1])) # # aggregate going backwards from last sample # # # end = table[-1][2] # delta = end - table[-3][2] # d = view.get_data(aggregated=True, end=end, delta=delta) # self.assertEqual(len(d), 1) # self.assertEqual(d[0]['p'], sum(x[0] for x in table[-3:-1])) view.close()
def to_dict(self): return { 'type': 'TIME', 'value': str(timeutils.datetime_to_nanoseconds(self.start)) + ', ' + str(timeutils.datetime_to_nanoseconds(self.end)) }