def get_recorders_from_node_data_dir(node_data_dir, node_name) -> Tuple[Recorder, Recorder]: rec_path = os.path.join(node_data_dir, node_name, 'recorder') client_stack_name = node_name + CLIENT_STACK_SUFFIX client_rec_kv_store = initKeyValueStorageIntKeys(KeyValueStorageType.Rocksdb, rec_path, client_stack_name) node_rec_kv_store = initKeyValueStorageIntKeys( KeyValueStorageType.Rocksdb, rec_path, node_name) return Recorder(node_rec_kv_store, skip_metadata_write=True), \ Recorder(client_rec_kv_store, skip_metadata_write=True)
def _defaultStore(dataDir, logName, ensureDurability, open=True, config=None) -> KeyValueStorage: config = config or getConfig() return initKeyValueStorageIntKeys(config.transactionLogDefaultStorage, dataDir, logName, open)
def getStateTsDbStorage(self): if self.stateTsDbStorage is None: self.stateTsDbStorage = StateTsDbStorage( self.name, initKeyValueStorageIntKeys(self.config.stateTsStorage, self.dataLocation, self.config.stateTsDbName)) return self.stateTsDbStorage
def get_combined_recorder(replaying_node, node_recorder, client_recorder): kv_store = initKeyValueStorageIntKeys(KeyValueStorageType.Rocksdb, replaying_node.dataLocation, 'combined_recorder') cr = CombinedRecorder(kv_store) # Always add node recorder first and then client recorder cr.add_recorders(node_recorder, client_recorder) cr.combine_recorders() return cr
def test_combined_recorder(tmpdir_factory): r1 = create_recorder_for_test(tmpdir_factory, 'r1') r2 = create_recorder_for_test(tmpdir_factory, 'r2') msg1, frm1 = 'm1', 'f1' msg2, frm2 = 'm2', 'f2' msg3, frm3 = 'm3', 'f3' msg4, frm4 = 'm4', 'f4' r1.add_incoming(msg1, frm1) time.sleep(.2) r1.add_incoming(msg2, frm2) time.sleep(.1) r2.add_outgoing(msg3, frm3) time.sleep(.1) r1.add_incoming(msg4, frm4) time.sleep(.1) r2.add_disconnecteds('a', 'b', 'c') time.sleep(.1) r1.add_disconnecteds('x', 'y') kv_store = initKeyValueStorageIntKeys(KeyValueStorageType.Leveldb, tmpdir_factory.mktemp('').strpath, 'combined_recorder') cr = CombinedRecorder(kv_store) assert not cr.recorders cr.add_recorders(r1, r2) assert len(cr.recorders) == 2 cr.combine_recorders() cr.start_playing() start = time.perf_counter() i = 0 while cr.is_playing and (time.perf_counter() < start + 10): vals = cr.get_next() if vals: if i == 0: # Incoming from r1 assert vals == [[[Recorder.INCOMING_FLAG, 'm1', 'f1']], []] if i == 1: # Incoming from r1 assert vals == [[[Recorder.INCOMING_FLAG, 'm2', 'f2']], []] if i == 2: # Outgoing from r2 assert vals == [[], [[Recorder.OUTGOING_FLAG, 'm3', 'f3']]] if i == 3: # Incoming from r1 assert vals == [[[Recorder.INCOMING_FLAG, 'm4', 'f4']], []] if i == 4: # Disconnected from r2 assert vals == [[], [[Recorder.DISCONN_FLAG, 'a', 'b', 'c']]] if i == 5: # Disconnected from r1 assert vals == [[[Recorder.DISCONN_FLAG, 'x', 'y']], []] i += 1
def _defaultStore(dataDir, logName, ensureDurability, open=True, config=None, read_only=False) -> KeyValueStorage: config = config or getConfig() return initKeyValueStorageIntKeys(config.transactionLogDefaultStorage, dataDir, logName, open, read_only=read_only, db_config=config.db_transactions_config, txn_serializer=ledger_txn_serializer)
def empty_storage(request, tmpdir_factory): if request.param == 'leveldb': kv_storage_type = KeyValueStorageType.Leveldb else: kv_storage_type = KeyValueStorageType.Rocksdb data_location = tmpdir_factory.mktemp('').strpath domain_storage = initKeyValueStorageIntKeys(kv_storage_type, data_location, "test_db") config_storage = initKeyValueStorageIntKeys(kv_storage_type, data_location, "config_test_db") storage = StateTsDbStorage("test", { DOMAIN_LEDGER_ID: domain_storage, CONFIG_LEDGER_ID: config_storage }) return storage
def empty_storage(request, tmpdir_factory): if request.param == 'leveldb': kv_storage_type = KeyValueStorageType.Leveldb else: kv_storage_type = KeyValueStorageType.Rocksdb storage = StateTsDbStorage( "test", initKeyValueStorageIntKeys(kv_storage_type, tmpdir_factory.mktemp('').strpath, "test_db")) return storage
def storage_with_ts_root_hashes(request, tmpdir_factory): if request.param == 'leveldb': kv_storage_type = KeyValueStorageType.Leveldb else: kv_storage_type = KeyValueStorageType.Rocksdb storage = StateTsDbStorage( "test", initKeyValueStorageIntKeys(kv_storage_type, tmpdir_factory.mktemp('').strpath, "test_db")) ts_list = { 2: "aaaa", 4: "bbbb", 5: "cccc", 100: "ffff", } for k, v in ts_list.items(): storage.set(k, v) return storage, ts_list