protected Fixture()
        {
            var config = ConfigLoader.Load("appsettings.tests.json");

            _connectionString = config.GetSection("Database").GetValue <string>("ConnectionString");

            DatabaseCreator.CreateIfNotExists(_connectionString).Wait();
            DatabaseCleanup.ClearDatabase(_connectionString);

            TimeProvider = new MockTimeProvider();

            _host = ApiHost.CreateWebHost(config, services => services.AddSingleton <ITimeProvider>(TimeProvider));
            _host.Start();
        }
        public void AntiBackTimeProvider_BackTimeException()
        {
            var mock = new MockTimeProvider();
            var abtp = new AntiBackTimeProvider(new RegistryStoredTimeProvider().Transform(s =>
            {
                s.SaveUtcTime(DateTime.UtcNow);
                return(s);
            }));

            abtp.TimeProvider = mock;
            abtp.Log          = new XunitLog(output);
            mock.SetOffset(TimeSpan.FromDays(-1));
            Assert.Throws <BackTimeException>(() => abtp.UtcNow());
        }
    static async Task RunRateCalculationTestAsync(
        NetworkTraffic?[] inputTrafficReadings,
        ulong expectedInBytesRate,
        ulong expectedOutBytesRate)
    {
        const byte pollIntervalSeconds = 1;

        var timeProvider = new MockTimeProvider();

        var trafficQuery = A.Fake <ISnmpTrafficQuery>();

        A.CallTo(() => trafficQuery.GetTotalTrafficBytesAsync(A <CancellationToken> .Ignored))
        .ReturnsNextFromSequence(inputTrafficReadings);

        using var service = new SnmpTrafficRateService(
                  trafficQuery,
                  pollIntervalSeconds,
                  timeProvider,
                  new NullLoggerFactory(),
                  (interval, cancellationToken) =>
        {
            cancellationToken.ThrowIfCancellationRequested();
            timeProvider.Advance(interval);
            return(Task.CompletedTask);
        });

        var batchingBlock = new BatchBlock <NetworkTraffic>(2);
        var bufferBlock   = new BufferBlock <NetworkTraffic>();

        bufferBlock.LinkTo(batchingBlock);

        service.TrafficRateUpdated += (_, t) => bufferBlock.Post(t);
        service.Start();

        var trafficRates = await batchingBlock.ReceiveAsync().ConfigureAwait(true);

        foreach (var trafficRate in trafficRates)
        {
            trafficRate.InBytes.Should().BeCloseTo(expectedInBytesRate, 1);
            trafficRate.OutBytes.Should().BeCloseTo(expectedOutBytesRate, 1);
        }
    }
Beispiel #4
0
        public void NewVersionStringForUserFromTimeProvider()
        {
            MockTimeProvider timeProvider = new MockTimeProvider(TimeSpan.FromSeconds(1));

            string versionString = TopicRevision.NewVersionStringForUser("candera", timeProvider);

            Assert.AreEqual("2004-10-28-14-11-00.0000-candera", versionString, 
                "Checking that the correct version string was returned."); 
        }
Beispiel #5
0
        static void RunTest(TimeSpan pollInterval, TimeSpan pollQueryDelay, TimeSpan expectedTimeSinceDelayedPoll)
        {
            var waitHandle   = new ManualResetEventSlim(false);
            var timeProvider = new MockTimeProvider();
            int pollCount    = 0;
            var pollErrors   = new List <Exception>();

            Task PollAsync(TimeSpan timeSinceLastPoll, CancellationToken cancellationToken)
            {
                try
                {
                    pollCount++;

                    switch (pollCount)
                    {
                    case 1:
                        timeSinceLastPoll.Should().Be(pollInterval);
                        timeProvider.Advance(pollQueryDelay);
                        return(Task.CompletedTask);

                    case 2:
                        timeSinceLastPoll.Should().Be(expectedTimeSinceDelayedPoll);
                        return(Task.CompletedTask);

                    default:
                        waitHandle.Set();
                        throw new OperationCanceledException();
                    }
                }
                catch (OperationCanceledException)
                {
                    throw;
                }
                catch (Exception ex)
                {
                    pollErrors.Add(ex);
                }

                return(Task.CompletedTask);
            }

            Task DoLoopDelay(TimeSpan interval, CancellationToken _)
            {
                timeProvider.Advance(interval);
                return(Task.CompletedTask);
            }

            using (var service = new TestPollingTrafficRateService(
                       pollInterval,
                       timeProvider,
                       PollAsync,
                       DoLoopDelay))
            {
                service.Start();

                if (!waitHandle.Wait(Debugger.IsAttached ? Timeout.InfiniteTimeSpan : TimeSpan.FromSeconds(5)))
                {
                    throw new Exception("Wait handle was not called in a reasonable time.");
                }
            }

            pollErrors.Should().BeEmpty();
        }