Пример #1
0
 def test_concurrent_tx_sees_original_value_on_delete(self, keyfs):
     D = keyfs.add_key("NAME", "hello", dict)
     with keyfs.transaction(write=True):
         D.set({1:2})
     tx_1 = Transaction(keyfs, write=True)
     tx_2 = Transaction(keyfs)
     tx_1.delete(D)
     tx_1.commit()
     assert tx_2.get(D) == {1:2}
Пример #2
0
 def test_concurrent_tx_sees_original_value_on_write(self, keyfs):
     D = keyfs.add_key("NAME", "hello", dict)
     tx_1 = Transaction(keyfs, write=True)
     tx_2 = Transaction(keyfs)
     ser = tx_1.conn.last_changelog_serial + 1
     tx_1.set(D, {1:1})
     tx1_serial = tx_1.commit()
     assert tx1_serial == ser
     assert tx_2.at_serial == ser - 1
     with keyfs._storage.get_connection() as conn:
         assert conn.last_changelog_serial == ser
     assert D not in tx_2.cache and D not in tx_2.dirty
     assert tx_2.get(D) == {}
Пример #3
0
 def test_cannot_write_on_read_trans(self, keyfs):
     key = keyfs.add_key("hello", "hello", dict)
     tx_1 = Transaction(keyfs)
     with pytest.raises(keyfs.ReadOnly):
         tx_1.set(key, {})
     with pytest.raises(keyfs.ReadOnly):
         tx_1.delete(key)
Пример #4
0
 def test_at_serial_restart(self, keyfs):
     key = keyfs.add_key("hello", "hello", dict)
     with keyfs.transaction() as txr:
         tx = Transaction(keyfs, write=True)
         tx.set(key, {1:1})
         tx.commit()
         keyfs.restart_read_transaction()
     assert txr.commit_serial is None
     assert txr.at_serial == 0