예제 #1
0
 def test_staff_multiple_write_abort(self):
     lock_table = {}
     store = InMemoryKVStore()
     t0 = TransactionHandler(lock_table, 0, store)
     self.assertEqual(t0.perform_put('a', '0'), 'Success')
     self.assertEqual(t0.perform_put('a', '1'), 'Success') 
     self.assertEqual(t0.perform_put('a', '2'), 'Success') 
     self.assertEqual(t0.perform_put('a', '3'), 'Success')
     self.assertEqual(t0.abort(USER), 'User Abort')
     self.assertEqual(store.get('a'), None) 
예제 #2
0
 def test_commit(self):
     # Sanity check
     lock_table = {}
     store = InMemoryKVStore()
     t0 = TransactionHandler(lock_table, 0, store)
     self.assertEqual(t0.perform_get('a'), 'No such key')
     self.assertEqual(t0.perform_put('a', '0'), 'Success')
     self.assertEqual(t0.perform_get('a'), '0')
     self.assertEqual(t0.commit(), 'Transaction Completed')
     self.assertEqual(store.get('a'), '0')
예제 #3
0
 def test_abort(self):
     # Sanity check
     lock_table = {}
     store = InMemoryKVStore()
     t0 = TransactionHandler(lock_table, 0, store)
     self.assertEqual(t0.perform_get('a'), 'No such key')
     self.assertEqual(t0.perform_put('a', '0'), 'Success')
     self.assertEqual(t0.perform_get('a'), '0')
     self.assertEqual(t0.abort(USER), 'User Abort')
     self.assertEqual(store.get('a'), None)
예제 #4
0
 def test_staff_multiple_write_commit(self):
     lock_table = {}
     store = InMemoryKVStore()
     t0 = TransactionHandler(lock_table, 0, store)
     self.assertEqual(t0.perform_put('a', '0'), 'Success')
     self.assertEqual(t0.perform_put('a', '1'), 'Success') 
     self.assertEqual(t0.perform_put('a', '2'), 'Success') 
     self.assertEqual(t0.perform_put('a', '3'), 'Success')
     self.assertEqual(t0.commit(), 'Transaction Completed')
     self.assertEqual(store.get('a'), '3')
예제 #5
0
 def test_commit(self):
     # Sanity check
     lock_table = {}
     store = InMemoryKVStore()
     t0 = TransactionHandler(lock_table, 0, store)
     self.assertEqual(t0.perform_get('a'), 'No such key')
     self.assertEqual(t0.perform_put('a', '0'), 'Success')
     self.assertEqual(t0.perform_get('a'), '0')
     self.assertEqual(t0.commit(), 'Transaction Completed')
     self.assertEqual(store.get('a'), '0')
예제 #6
0
 def test_abort(self):
     # Sanity check
     lock_table = {}
     store = InMemoryKVStore()
     t0 = TransactionHandler(lock_table, 0, store)
     self.assertEqual(t0.perform_get('a'), 'No such key')
     self.assertEqual(t0.perform_put('a', '0'), 'Success')
     self.assertEqual(t0.perform_get('a'), '0')
     self.assertEqual(t0.abort(USER), 'User Abort')
     self.assertEqual(store.get('a'), None)
예제 #7
0
 def test_ww(self):
     # Should pass after 1.1
     lock_table = {}
     store = InMemoryKVStore()
     t0 = TransactionHandler(lock_table, 0, store)
     t1 = TransactionHandler(lock_table, 1, store)
     self.assertEqual(t0.perform_get('a'), 'No such key')
     self.assertEqual(t0.perform_put('a', '0'), 'Success')
     self.assertEqual(t1.perform_put('a', '1'), None)
     self.assertEqual(t0.commit(), 'Transaction Completed')
     self.assertEqual(store.get('a'), '0')
예제 #8
0
 def test_ww(self):
     # Should pass after 1.1
     lock_table = {}
     store = InMemoryKVStore()
     t0 = TransactionHandler(lock_table, 0, store)
     t1 = TransactionHandler(lock_table, 1, store)
     self.assertEqual(t0.perform_get('a'), 'No such key')
     self.assertEqual(t0.perform_put('a', '0'), 'Success')
     self.assertEqual(t1.perform_put('a', '1'), None)
     self.assertEqual(t0.commit(), 'Transaction Completed')
     self.assertEqual(store.get('a'), '0')
예제 #9
0
 def test_abort_queue(self):
     lock_table = {}
     store = InMemoryKVStore()
     t0 = TransactionHandler(lock_table, 0, store)
     t1 = TransactionHandler(lock_table, 1, store)
     self.assertEqual(t0.perform_get('a'), 'No such key')
     self.assertEqual(t0.perform_put('a', '0'), 'Success')
     self.assertEqual(t0.perform_get('a'), '0')
     self.assertEqual(t1.perform_get('a'), None)
     self.assertEqual(t1.perform_put('b', '1'), 'Success')
     self.assertEqual(t1.abort(USER), 'User Abort')
     self.assertEqual(store.get('a'), '0')
     self.assertEqual(store.get('b'), None)
예제 #10
0
 def test_commit_abort_commit(self):
     # Should pass after 1.2
     lock_table = {}
     store = InMemoryKVStore()
     t0 = TransactionHandler(lock_table, 0, store)
     t1 = TransactionHandler(lock_table, 1, store)
     t2 = TransactionHandler(lock_table, 2, store)
     self.assertEqual(t0.perform_get('a'), 'No such key')
     self.assertEqual(t0.perform_put('a', '0'), 'Success')
     self.assertEqual(t0.perform_get('a'), '0')
     self.assertEqual(t0.commit(), 'Transaction Completed')
     self.assertEqual(t1.perform_get('a'), '0')
     self.assertEqual(t1.perform_put('a', '1'), 'Success')
     self.assertEqual(t1.perform_get('a'), '1')
     self.assertEqual(t1.abort(USER), 'User Abort')
     self.assertEqual(t2.perform_get('a'), '0')
     self.assertEqual(t2.perform_put('a', '2'), 'Success')
     self.assertEqual(t2.perform_get('a'), '2')
     self.assertEqual(t2.commit(), 'Transaction Completed')
     self.assertEqual(store.get('a'), '2')
예제 #11
0
 def test_commit_abort_commit(self):
     # Should pass after 1.2
     lock_table = {}
     store = InMemoryKVStore()
     t0 = TransactionHandler(lock_table, 0, store)
     t1 = TransactionHandler(lock_table, 1, store)
     t2 = TransactionHandler(lock_table, 2, store)
     self.assertEqual(t0.perform_get('a'), 'No such key')
     self.assertEqual(t0.perform_put('a', '0'), 'Success')
     self.assertEqual(t0.perform_get('a'), '0')
     self.assertEqual(t0.commit(), 'Transaction Completed')
     self.assertEqual(t1.perform_get('a'), '0')
     self.assertEqual(t1.perform_put('a', '1'), 'Success')
     self.assertEqual(t1.perform_get('a'), '1')
     self.assertEqual(t1.abort(USER), 'User Abort')
     self.assertEqual(t2.perform_get('a'), '0')
     self.assertEqual(t2.perform_put('a', '2'), 'Success')
     self.assertEqual(t2.perform_get('a'), '2')
     self.assertEqual(t2.commit(), 'Transaction Completed')
     self.assertEqual(store.get('a'), '2')