public void Provider_should_return_all_matching_request_definitions()
        {
            var provider = new SlaProvider();

            var def1 = new SlaDefinition(
                MessageDefinition.Create<IRequestOne>(r => r.OneId),
                MessageDefinition.Create<IResponseOne>(r => r.Id),
                TimeSpan.FromSeconds(1));

            var def2 = new SlaDefinition(
                MessageDefinition.Create<IRequestTwo>(r => r.TwoId),
                MessageDefinition.Create<IResponseTwo>(r => r.Id),
                TimeSpan.FromSeconds(2));

            var def3 = new SlaDefinition(
                MessageDefinition.Create<IExtendedRequestOne>(r => r.OneId),
                MessageDefinition.Create<IResponseOne>(r => r.Id),
                TimeSpan.FromSeconds(3));

            provider.Add(def1);
            provider.Add(def2);
            provider.Add(def3);

            var definitions = provider.GetRequestDefinitions(new Mock<IExtendedRequestOne>().Object);

            Assert.That(definitions.ToArray(), Is.EquivalentTo(new[] { def1.Request, def3.Request }));
        }
Exemple #2
0
        /// <summary>
        /// Logs the SLA for request-response messages correlated by <c>correlationId</c> key.
        /// If <c>elapsed</c> is greater than defined SLA, the message is logged with ERROR level, otherwise the log level is DEBUG.
        /// </summary>
        /// <param name="definition">Sla definition.</param>
        /// <param name="elapsed">Elapsed time.</param>
        /// <param name="correlationId">Correlation ID</param>
        protected virtual void ProcessSla(SlaDefinition definition, TimeSpan elapsed, Guid correlationId)
        {
            var log = (elapsed > definition.Sla) ? _logSlaBreach : _logSlaMet;

            log("SLA={0} Response={1} ResponseTime={2} milliseconds CorrelationId={3}", new object[] { definition.Request.Type, definition.Response.Type, (long)elapsed.TotalMilliseconds, correlationId });
        }
        public void Provider_should_return_one_request_definition_if_multiple_slas_are_referring_to_the_same_request()
        {
            var provider = new SlaProvider();

            var requestDefinition = MessageDefinition.Create<IRequestOne>(r => r.OneId);

            var def1 = new SlaDefinition(
                requestDefinition,
                MessageDefinition.Create<IResponseOne>(r => r.Id),
                TimeSpan.FromSeconds(1));

            var def2 = new SlaDefinition(
                requestDefinition,
                MessageDefinition.Create<IResponseTwo>(r => r.Id),
                TimeSpan.FromSeconds(2));

            provider.Add(def1);
            provider.Add(def2);

            Assert.That(provider.GetRequestDefinitions(new Mock<IRequestOne>().Object).ToArray(), Is.EqualTo(new[] { requestDefinition }));
        }
Exemple #4
0
        /// <summary>
        /// Logs the SLA for request-response messages correlated by <c>correlationId</c> key.
        /// If <c>elapsed</c> is greater than defined SLA, the message is logged with ERROR level, otherwise the log level is DEBUG.
        /// </summary>
        /// <param name="definition">Sla definition.</param>
        /// <param name="elapsed">Elapsed time.</param>
        /// <param name="correlationId">Correlation ID</param>
        protected virtual void ProcessSla(SlaDefinition definition, TimeSpan elapsed, Guid correlationId)
        {
            var log = (elapsed > definition.Sla) ? _logSlaBreach : _logSlaMet;

            log("SLA={0} Response={1} ResponseTime={2} milliseconds CorrelationId={3}", new object[] { definition.Request.Type, definition.Response.Type, (long)elapsed.TotalMilliseconds, correlationId });
        }
 /// <summary>
 /// Adds SLA definition
 /// </summary>
 public void Add(SlaDefinition definition)
 {
     _definitions.Add(definition);
 }
Exemple #6
0
 /// <summary>
 /// Adds SLA definition
 /// </summary>
 public void Add(SlaDefinition definition)
 {
     _definitions.Add(definition);
 }