Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
 def _defaultStore(dataDir,
                   logName,
                   ensureDurability,
                   open=True,
                   config=None) -> KeyValueStorage:
     config = config or getConfig()
     return initKeyValueStorageIntKeys(config.transactionLogDefaultStorage,
                                       dataDir, logName, open)
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
 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)
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
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