private void InitDbApi(IInitConfig initConfig, IDbConfig dbConfig, bool storeReceipts) { switch (initConfig.DiagnosticMode) { case DiagnosticMode.RpcDb: _api.DbProvider = new DbProvider(DbModeHint.Persisted); var rocksDbFactory = new RocksDbFactory(dbConfig, _api.LogManager, Path.Combine(initConfig.BaseDbPath, "debug")); var rpcDbFactory = new RpcDbFactory(new MemDbFactory(), rocksDbFactory, _api.EthereumJsonSerializer, new BasicJsonRpcClient(new Uri(initConfig.RpcDbUrl), _api.EthereumJsonSerializer, _api.LogManager), _api.LogManager); _api.RocksDbFactory = rpcDbFactory; _api.MemDbFactory = rpcDbFactory; break; case DiagnosticMode.ReadOnlyDb: var rocksDbProvider = new DbProvider(DbModeHint.Persisted); _api.DbProvider = new ReadOnlyDbProvider(rocksDbProvider, storeReceipts); // ToDo storeReceipts as createInMemoryWriteStore - bug? _api.DisposeStack.Push(rocksDbProvider); _api.RocksDbFactory = new RocksDbFactory(dbConfig, _api.LogManager, Path.Combine(initConfig.BaseDbPath, "debug")); _api.MemDbFactory = new MemDbFactory(); break; case DiagnosticMode.MemDb: _api.DbProvider = new DbProvider(DbModeHint.Mem); _api.RocksDbFactory = new RocksDbFactory(dbConfig, _api.LogManager, Path.Combine(initConfig.BaseDbPath, "debug")); _api.MemDbFactory = new MemDbFactory(); break; default: _api.DbProvider = new DbProvider(DbModeHint.Persisted); _api.RocksDbFactory = new RocksDbFactory(dbConfig, _api.LogManager, initConfig.BaseDbPath); _api.MemDbFactory = new MemDbFactory(); break; } }
public async Task InitializerTests_RocksDbProvider(bool useReceipts) { using (IDbProvider dbProvider = new DbProvider(DbModeHint.Persisted)) { var rocksDbFactory = new RocksDbFactory(new DbConfig(), LimboLogs.Instance, Path.Combine(_folderWithDbs, $"rocks_{useReceipts}")); var initializer = new StandardDbInitializer(dbProvider, rocksDbFactory, new MemDbFactory()); await initializer.InitStandardDbsAsync(useReceipts); var receiptsType = useReceipts ? typeof(SimpleColumnRocksDb <ReceiptsColumns>) : typeof(ReadOnlyColumnsDb <ReceiptsColumns>); AssertStandardDbs(dbProvider, typeof(SimpleRocksDb), typeof(StateDb), receiptsType); } }
public async Task ProviderInitTests_RocksDbProvider() { var rocksDbFactory = new RocksDbFactory(new DbConfig(), LimboLogs.Instance, Path.Combine(_folderWithDbs, "rocks")); var dbProvider = new DbProvider(DbModeHint.Persisted); var initializer = new BaselineDbInitializer(dbProvider, new BaselineConfig(), rocksDbFactory, new MemDbFactory()); await initializer.Init(); Assert.NotNull(dbProvider.GetDb <IDb>(BaselineDbNames.BaselineTree)); Assert.NotNull(dbProvider.GetDb <IDb>(BaselineDbNames.BaselineTreeMetadata)); Assert.AreEqual(2, dbProvider.RegisteredDbs.Count()); Assert.IsTrue(dbProvider.GetDb <IDb>(BaselineDbNames.BaselineTree) is DbOnTheRocks); Assert.IsTrue(dbProvider.GetDb <IDb>(BaselineDbNames.BaselineTreeMetadata) is DbOnTheRocks); }
public async Task ProviderInitTests_MemDbProvider() { var dbProvider = new DbProvider(DbModeHint.Mem); var rocksDbFactory = new RocksDbFactory(new DbConfig(), LimboLogs.Instance, Path.Combine(_folderWithDbs, "mem")); var initializer = new NdmDbInitializer(new NdmConfig(), dbProvider, rocksDbFactory, new MemDbFactory()); await initializer.Init(); Assert.NotNull(dbProvider.GetDb <IDb>(NdmDbNames.Configs)); Assert.NotNull(dbProvider.GetDb <IDb>(NdmDbNames.EthRequests)); Assert.AreEqual(2, dbProvider.RegisteredDbs.Count()); Assert.IsTrue(dbProvider.GetDb <IDb>(NdmDbNames.Configs) is MemDb); Assert.IsTrue(dbProvider.GetDb <IDb>(NdmDbNames.EthRequests) is MemDb); }
public async Task ProviderInitTests_BeamSyncDbProvider() { var syncModeSelector = Substitute.For <ISyncModeSelector>(); var dbProvider = TestMemDbProvider.Init(); var rocksDbFactory = new RocksDbFactory(new DbConfig(), LimboLogs.Instance, Path.Combine(_folderWithDbs, "beam")); IDbProvider beamSyncDbProvider = new BeamSyncDbProvider(syncModeSelector, dbProvider, new SyncConfig(), LimboLogs.Instance); var initializer = new BaselineDbInitializer(beamSyncDbProvider, new BaselineConfig(), rocksDbFactory, new MemDbFactory()); await initializer.Init(); Assert.NotNull(beamSyncDbProvider.GetDb <IDb>(BaselineDbNames.BaselineTree)); Assert.NotNull(beamSyncDbProvider.GetDb <IDb>(BaselineDbNames.BaselineTreeMetadata)); Assert.IsTrue(beamSyncDbProvider.GetDb <IDb>(BaselineDbNames.BaselineTree) is MemDb); Assert.IsTrue(beamSyncDbProvider.GetDb <IDb>(BaselineDbNames.BaselineTreeMetadata) is MemDb); }
public async Task ProviderInitTests_MemDbProvider() { using DbProvider dbProvider = new DbProvider(DbModeHint.Mem); RocksDbFactory rocksDbFactory = new RocksDbFactory(new DbConfig(), LimboLogs.Instance, Path.Combine(_folderWithDbs, "mem")); ConsumerNdmDbInitializer initializer = new ConsumerNdmDbInitializer(dbProvider, new NdmConfig(), rocksDbFactory, new MemDbFactory()); initializer.Reset(); await initializer.InitAsync(); Assert.AreEqual(4, dbProvider.RegisteredDbs.Count()); Assert.IsTrue(dbProvider.GetDb <IDb>(ConsumerNdmDbNames.ConsumerDepositApprovals) is MemDb); Assert.IsTrue(dbProvider.GetDb <IDb>(ConsumerNdmDbNames.ConsumerReceipts) is MemDb); Assert.IsTrue(dbProvider.GetDb <IDb>(ConsumerNdmDbNames.ConsumerSessions) is MemDb); Assert.IsTrue(dbProvider.GetDb <IDb>(ConsumerNdmDbNames.Deposits) is MemDb); }
private static async Task <PagedResult <DepositDetails> > LoadDeposits(ILogManager logManager, string dbPath) { using (var dbProvider = new DbProvider(DbModeHint.Persisted)) { var rocksDbFactory = new RocksDbFactory(DbConfig.Default, logManager, dbPath); var dbInitializer = new ConsumerNdmDbInitializer(dbProvider, new NdmConfig(), rocksDbFactory, new MemDbFactory()); await dbInitializer.InitAsync(); DepositDetailsRocksRepository depositsRepo = new DepositDetailsRocksRepository(dbProvider.GetDb <IDb>(ConsumerNdmDbNames.Deposits), new DepositDetailsDecoder()); // var deposits = await depositsRepo.BrowseAsync(new GetDeposits()); var deposits = await depositsRepo.BrowseAsync(new GetDeposits { CurrentBlockTimestamp = Timestamper.Default.EpochSecondsLong, EligibleToRefund = true }); return(deposits); } }
public async Task ProviderInitTests_ReadonlyDbProvider() { var dbProvider = new DbProvider(DbModeHint.Persisted); var rocksDbFactory = new RocksDbFactory(new DbConfig(), LimboLogs.Instance, Path.Combine(_folderWithDbs, "readonly")); var readonlyDbProvider = new ReadOnlyDbProvider(dbProvider, true); var initializer = new ConsumerNdmDbInitializer(readonlyDbProvider, new NdmConfig(), rocksDbFactory, new MemDbFactory()); initializer.Reset(); await initializer.InitAsync(); Assert.AreEqual(4, readonlyDbProvider.RegisteredDbs.Count()); Assert.IsTrue(readonlyDbProvider.GetDb <IDb>(ConsumerNdmDbNames.ConsumerDepositApprovals) is ReadOnlyDb); Assert.IsTrue(readonlyDbProvider.GetDb <IDb>(ConsumerNdmDbNames.ConsumerReceipts) is ReadOnlyDb); Assert.IsTrue(readonlyDbProvider.GetDb <IDb>(ConsumerNdmDbNames.ConsumerSessions) is ReadOnlyDb); Assert.IsTrue(readonlyDbProvider.GetDb <IDb>(ConsumerNdmDbNames.Deposits) is ReadOnlyDb); }
public async Task ProviderInitTests_BeamSyncDbProvider() { var syncModeSelector = Substitute.For <ISyncModeSelector>(); var dbProvider = await TestMemDbProvider.InitAsync(); var rocksDbFactory = new RocksDbFactory(new DbConfig(), LimboLogs.Instance, Path.Combine(_folderWithDbs, "beam")); IDbProvider beamSyncDbProvider = new BeamSyncDbProvider(syncModeSelector, dbProvider, new SyncConfig(), LimboLogs.Instance); var initializer = new ConsumerNdmDbInitializer(beamSyncDbProvider, new NdmConfig(), rocksDbFactory, new MemDbFactory()); initializer.Reset(); await initializer.InitAsync(); Assert.IsTrue(beamSyncDbProvider.GetDb <IDb>(ConsumerNdmDbNames.ConsumerDepositApprovals) is MemDb); Assert.IsTrue(beamSyncDbProvider.GetDb <IDb>(ConsumerNdmDbNames.ConsumerReceipts) is MemDb); Assert.IsTrue(beamSyncDbProvider.GetDb <IDb>(ConsumerNdmDbNames.ConsumerSessions) is MemDb); Assert.IsTrue(beamSyncDbProvider.GetDb <IDb>(ConsumerNdmDbNames.Deposits) is MemDb); }
public async Task ProviderInitTests_RpcDbProvider() { var dbProvider = new DbProvider(DbModeHint.Persisted); var rocksDbFactory = new RocksDbFactory(new DbConfig(), LimboLogs.Instance, Path.Combine(_folderWithDbs, "rpc")); var serializer = Substitute.For <IJsonSerializer>(); var client = Substitute.For <IJsonRpcClient>(); var rpcDbFactory = new RpcDbFactory(new MemDbFactory(), rocksDbFactory, serializer, client, LimboLogs.Instance); var initializer = new NdmDbInitializer(new NdmConfig(), dbProvider, rpcDbFactory, rpcDbFactory); await initializer.Init(); dbProvider.RegisterDb("test", new MemDb()); Assert.NotNull(dbProvider.GetDb <IDb>(NdmDbNames.Configs)); Assert.NotNull(dbProvider.GetDb <IDb>(NdmDbNames.EthRequests)); Assert.AreEqual(3, dbProvider.RegisteredDbs.Count()); Assert.IsTrue(dbProvider.GetDb <IDb>(NdmDbNames.Configs) is ReadOnlyDb); Assert.IsTrue(dbProvider.GetDb <IDb>(NdmDbNames.EthRequests) is ReadOnlyDb); }
public TestContext() { FileSystem.Path.Combine(Arg.Any <string>(), Arg.Any <string>()).Returns(c => Combine(c[0], c[1])); FileSystem.DirectoryInfo.FromDirectoryName(Path).Returns(Directory); RocksDbFactory.GetFullDbPath(Arg.Any <RocksDbSettings>()).Returns(c => c.Arg <RocksDbSettings>().DbPath); }
public RocksDatabase(string path, ulong maxKeyLength = 100) { Path = path; RocksDb = RocksDbFactory.GetDatabase(path, SliceTransform.CreateFixedPrefix(maxKeyLength)); MaxKeyLength = maxKeyLength; }
public TestContext() { RocksDbFactory.CreateDb(Arg.Any <RocksDbSettings>()).Returns(_ => CurrentMirrorDb = new MemDb((++DbIndex).ToString())); Name = "name"; FullPruningDb = new FullPruningDb(new RocksDbSettings(Name, "path"), RocksDbFactory, () => Metrics++); }