def test_snapshot_query(self): record = ['idhere', 1, '*'] s = Snapshot(record, cap=2, ut=0.6) record = ['another id', 2, '*'] s.insert(record) record = ['onemore id', 2, '*'] s.insert(record) self.assertEqual(s.tsquery(3), {'SP', 'idhere', 'another id', 'onemore id'}) self.assertEqual(s.tsquery(1), {'SP', 'idhere'}) s.delete('another id', 5) self.assertEqual(s.tsquery(6), {'idhere', 'onemore id', 'SP'}) self.assertEqual(s.trquery(1, 3), s.trquery(1, 2)) self.assertEqual(s.trquery(1, 3), s.tsquery(1) | s.tsquery(2))
def test_snapshot_delete(self): record = ['idhere', 1, '*'] s = Snapshot(record, cap=2, ut=0.6) record = ['another id', 2, '*'] s.insert(record) s.delete('another id', 5) self.assertEqual( s.blocks.last_node.previous_node.Pce_node.block.record_list[1][2], 5) self.assertEqual( s.blocks.last_node.previous_node.Pce_node.block.time_interval, [1, 5]) self.assertTrue(s.blocks.last_node.previous_node.Pce_node.block.isfull) self.assertTrue( s.blocks.last_node.previous_node.Pce_node.block.isunderflow) self.assertEqual(s.blocks.last_node.block.usage, 1) self.assertFalse('another id' in s.alives_entries)
def main(): fname = 'snapshot_test.txt' print('Start reading and indexing file...') start = time.time() with open(fname, 'r') as f: line = f.readline().split() Sindex = Snapshot([line[1], int(line[0]), '*'], cap=CAPACITY, ut=UTILIZE) for l in f: line = l.split() op = line[2] if (op == 'b'): Sindex.insert([line[1], int(line[0]), '*'], cap=CAPACITY, ut=UTILIZE) elif (op == 'd'): Sindex.delete(line[1], int(line[0])) duration = time.time() - start print('') print('Index done in: {0:.2f}s '.format(duration)) print('') print('Enter the query type (ts or tr) and time') print('timeslice query format: ts time_instance') print('timerrange query format: tr min_time max_time') print('Enter anything else to quit') print('') for line in sys.stdin: qtype, *t = line.split() if (qtype == 'ts'): start = time.time() result = Sindex.tsquery(int(t[0])) duration = time.time() - start elif (qtype == 'tr'): start = time.time() result = Sindex.trquery(int(t[0]), int(t[1])) duration = time.time() - start else: quit() print('result: ', result) print('') print('Get time result in {0:.5f}s'.format(duration))