Exemple #1
0
        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);
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #10
0
        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);
 }
Exemple #12
0
 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++);
 }