public TestCycleEventProvider(ILogger logger = null) { Scheduler = new TestScheduler(); var schedulerProvider = Substitute.For <ICycleSchedulerProvider>(); schedulerProvider.Scheduler.Returns(Scheduler); var dateTimeProvider = Substitute.For <IDateTimeProvider>(); var deltaHashProvider = Substitute.For <IDeltaHashProvider>(); var hashingAlgorithm = HashingAlgorithm.GetAlgorithmMetadata("blake2b-256"); var hashingProvider = new HashProvider(hashingAlgorithm); dateTimeProvider.UtcNow.Returns(_ => Scheduler.Now.DateTime); _cycleEventsProvider = new CycleEventsProvider( CycleConfiguration.Default, dateTimeProvider, schedulerProvider, deltaHashProvider, logger ?? Substitute.For <ILogger>()); deltaHashProvider.GetLatestDeltaHash(Arg.Any <DateTime>()) .Returns(ci => hashingProvider.ComputeMultiHash( BitConverter.GetBytes(((DateTime)ci[0]).Ticks / (int)_cycleEventsProvider.Configuration.CycleDuration.Ticks))); _deltaUpdatesSubscription = PhaseChanges.Subscribe(p => CurrentPhase = p); }
public Consensus(IDeltaBuilder deltaBuilder, IDeltaVoter deltaVoter, IDeltaElector deltaElector, IDeltaCache deltaCache, IDeltaHub deltaHub, ICycleEventsProvider cycleEventsProvider, IDeltaHashProvider deltaHashProvider, ILogger logger) { _deltaVoter = deltaVoter; _deltaElector = deltaElector; _cycleEventsProvider = cycleEventsProvider; _deltaHashProvider = deltaHashProvider; _deltaBuilder = deltaBuilder; _deltaHub = deltaHub; _deltaCache = deltaCache; _logger = logger; logger.Information("Consensus repository initialised."); }