def replay(xom, replica_xom, events=True): if replica_xom.replica_thread.replica_in_sync_at is None: # allow on_import to run right away, so we don't need to rely # on the initial import thread for tests replica_xom.replica_thread.replica_in_sync_at = 0 threadlog.info("test: replaying replica") for serial in range(replica_xom.keyfs.get_next_serial(), xom.keyfs.get_next_serial()): if serial == -1: continue with xom.keyfs._storage.get_connection() as conn: change_entry = conn.get_changes(serial) threadlog.info("test: importing to replica %s", serial) replica_xom.keyfs.import_changes(serial, change_entry) # replay notifications if events: replica_xom.replica_thread.wait() noti_thread = replica_xom.keyfs.notifier event_serial = noti_thread.read_event_serial() thread_push_log("NOTI") while event_serial < replica_xom.keyfs.get_current_serial(): event_serial += 1 noti_thread._execute_hooks(event_serial, threadlog, raising=True) noti_thread.write_event_serial(event_serial) thread_pop_log("NOTI")
def test_taglogger_push(caplog): log = thread_push_log("hello") log.info("42") assert caplog.records[0].msg == "hello 42" log = thread_push_log("world") log.info("17") assert caplog.records[1].msg == "hello world 17" thread_pop_log() log = thread_current_log() log.info("10") assert caplog.records[2].msg == "hello 10"
def __exit__(self, cls, val, tb): thread_pop_log("fswriter%s:" % self.storage.next_serial) if cls is None: entry = self.changes, [] self.conn.write_changelog_entry(self.storage.next_serial, entry) commit_serial = self.storage.next_serial self.storage.next_serial += 1 message = "committed: keys: %s" args = [",".join(map(repr, list(self.changes)))] self.log.info(message, *args) self.storage._notify_on_commit(commit_serial) else: self.log.info("roll back at %s" % (self.storage.next_serial)) del self.conn del self.storage
def replay(xom, replica_xom, events=True): threadlog.info("test: replaying replica") for serial in range(replica_xom.keyfs.get_next_serial(), xom.keyfs.get_next_serial()): if serial == -1: continue with xom.keyfs._storage.get_connection() as conn: change_entry = conn.get_changes(serial) threadlog.info("test: importing to replica %s", serial) replica_xom.keyfs.import_changes(serial, change_entry) # replay notifications if events: noti_thread = replica_xom.keyfs.notifier event_serial = noti_thread.read_event_serial() thread_push_log("NOTI") while event_serial < replica_xom.keyfs.get_current_serial(): event_serial += 1 noti_thread._execute_hooks(event_serial, threadlog, raising=True) noti_thread.write_event_serial(event_serial) thread_pop_log("NOTI")
def test_taglogger_wrong_prefix(caplog): thread_push_log("hello") with pytest.raises(ValueError): thread_pop_log("this")