public void Save_Account_State_To_Ledger_Repository() { _ledger = new LedgerService(_fakeRepository, _deltaHashProvider, _ledgerSynchroniser, _mempool, _logger); const int numAccounts = 10; for (var i = 0; i < numAccounts; i++) { var account = AccountHelper.GetAccount((UInt256)i * 5); _ledger.SaveAccountState(account); } _fakeRepository.Received(10).Add(Arg.Any <Account>()); }
public void Should_Reconcile_On_New_Delta_Hash() { var hash1 = _hashProvider.ComputeUtf8MultiHash("update").CreateCid(); var hash2 = _hashProvider.ComputeUtf8MultiHash("update again").CreateCid(); var updates = new[] { hash1, hash2 }; _ledgerSynchroniser.CacheDeltasBetween(Arg.Is(_genesisHash), Arg.Is(hash1), default) .ReturnsForAnyArgs(new[] { hash2, hash1, _genesisHash }); _deltaHashProvider.DeltaHashUpdates.Returns(updates.ToObservable(_testScheduler)); _ledger = new LedgerService(_executor, _stateProvider, _storageProvider, new StateDb(), new StateDb(), _fakeRepository, _deltaHashProvider, _ledgerSynchroniser, _mempool, _mapperProvider, _logger); _testScheduler.Start(); _ledger.LatestKnownDelta.Should().Be(_genesisHash); }
public void Should_Delete_MempoolItems_On_New_Delta_Hash() { var sampleSize = 5; _mempool.Service.Returns(new MempoolService(new InMemoryRepository <PublicEntryDao, string>())); var hash = _hashProvider.ComputeUtf8MultiHash("update").CreateCid(); var updates = new[] { hash }; _ledgerSynchroniser.CacheDeltasBetween(Arg.Is(_genesisHash), Arg.Is(hash), default) .ReturnsForAnyArgs(new[] { hash, _genesisHash }); var allPublicEntries = GenerateSamplePublicTransactions(sampleSize * 2).ToList(); //Add all public entries to the mempool allPublicEntries.Select(x => x.ToDao <PublicEntry, PublicEntryDao>(_mapperProvider)).ToList() .ForEach(x => _mempool.Service.CreateItem(x)); //Only add half of all public entries to the delta var delta = new Delta { TimeStamp = Timestamp.FromDateTime(DateTime.UtcNow), PublicEntries = { allPublicEntries.Take(sampleSize) } }; _ledgerSynchroniser.DeltaCache.TryGetOrAddConfirmedDelta(Arg.Is(hash), out Arg.Any <Delta>()).Returns(x => { x[1] = delta; return(true); }); _deltaHashProvider.DeltaHashUpdates.Returns(updates.ToObservable(_testScheduler)); _ledger = new LedgerService(_executor, _stateProvider, _storageProvider, new StateDb(), new StateDb(), _fakeRepository, _deltaHashProvider, _ledgerSynchroniser, _mempool, _mapperProvider, _logger); _testScheduler.Start(); _mempool.Service.GetAll().Should().HaveCount(sampleSize); }