Ejemplo n.º 1
0
 def test_snapshot_insert(self):
     record = ['idhere', 1, '*']
     s = Snapshot(record)
     record = ['another id', 2, '*']
     s.insert(record)
     self.assertEqual(s.acceptor.record_list[1], record)
     self.assertEqual(s.blocks.last_node, s.alives_entries[record[0]])
Ejemplo n.º 2
0
 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))
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
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))