public void ProcessSlaTimeouts_should_remove_requests_only_if_the_longest_sla_timed_out() { var lowerSlaInMs = 20; var higherSlaInMs = 50; var slaMultiplier = 2; var lowerTimeout = lowerSlaInMs * slaMultiplier + WaitDeltaMs; var higherTimeout = higherSlaInMs * slaMultiplier + WaitDeltaMs; SlaDefinitionBuilder .For <Request>(req => req.Id) .AddSla <Response>(TimeSpan.FromMilliseconds(lowerSlaInMs), rsp => rsp.Id) .AddSla <Response2>(TimeSpan.FromMilliseconds(higherSlaInMs), rsp => rsp.Id) .Configure(_slaProvider); _slaProcessor = new TestableSlaProcessor(_slaProvider); _slaProcessor.ProcessOutgoingMessage(new Request { Id = Guid.NewGuid() }); Thread.Sleep(lowerTimeout); _slaProcessor.ProcessSlaTimeouts(); Assert.That(_slaProcessor.Timeouts.Count, Is.EqualTo(0), "None of messages should time out yet"); Thread.Sleep(higherTimeout - lowerSlaInMs); _slaProcessor.ProcessSlaTimeouts(); Assert.That(_slaProcessor.Timeouts.Count, Is.EqualTo(1), "Message should time out now"); }
public void SetUp() { _provider = new SlaProvider(); SlaDefinitionBuilder.For <Request>(r => r.Id) .AddSla <Response>(_sla, r => r.Id) .Configure(_provider); _appender = InjectInMemoryAppender(); }
private void ConfigureSla() { SlaDefinitionBuilder.For <Request>(r => r.Id) .AddSla <Response>(TimeSpan.FromSeconds(1), r => r.Id) .AddSla <ErrorResponse>(TimeSpan.FromSeconds(1), r => r.Id) .Configure(_slaProvider); SlaDefinitionBuilder.For <Request2>(r => r.Id) .AddSla <Response2>(TimeSpan.FromSeconds(1), r => r.Id) .AddSla <ErrorResponse2>(TimeSpan.FromSeconds(1), r => r.Id) .Configure(_slaProvider); }
public void It_should_create_definitions() { var provider = new SlaProvider(); SlaDefinitionBuilder.For <IRequest>(x => x.RequestId) .AddSla <IResponse>(TimeSpan.FromSeconds(1), x => x.ResponseId) .AddSla <IErrorResponse>(TimeSpan.FromSeconds(2), x => x.ResponseId) .Configure(provider); Assert.That(provider.GetRequestDefinitions(new Mock <IRequest>().Object).Count(), Is.EqualTo(1), "request mapping"); Assert.That(provider.GetSlaDefinitionsFor(new Mock <IResponse>().Object).Single().Sla, Is.EqualTo(TimeSpan.FromSeconds(1))); Assert.That(provider.GetSlaDefinitionsFor(new Mock <IErrorResponse>().Object).Single().Sla, Is.EqualTo(TimeSpan.FromSeconds(2))); }