public void SetShouldSendOneMetricByUniqueValue() { var transport = new Mock <ITransport>(); var telemetry = new Mock <ITelemetry>(); var timer = new ManualTimer(); var s = new Set(transport.Object, telemetry.Object, timer, MetricName, null); s.Add(5); s.Add(6); s.Add(7); s.Add(5); s.Add(7); timer.TriggerElapsed(); transport.Verify(t => t.Send(It.IsAny <ArraySegment <byte> >()), Times.Exactly(3)); telemetry.Verify(t => t.MetricSent(), Times.Exactly(3)); s.Add(5); s.Add(6); s.Add(7); s.Add(8); s.Add(5); timer.TriggerElapsed(); transport.Verify(t => t.Send(It.IsAny <ArraySegment <byte> >()), Times.Exactly(7)); telemetry.Verify(t => t.MetricSent(), Times.Exactly(7)); }
public void UpdatedValueShouldBeUsedOverEvaluator() { var transport = new Mock <ITransport>(); var telemetry = new Mock <ITelemetry>(); var timer = new ManualTimer(); int evaluatorCalled = 0; double Evaluator() => ++ evaluatorCalled; var c = new Gauge(transport.Object, telemetry.Object, timer, MetricName, Evaluator, Tags); c.Update(5.0); timer.TriggerElapsed(); Assert.AreEqual(0, evaluatorCalled); transport.Verify(t => t.Send(It.IsAny <ArraySegment <byte> >()), Times.Exactly(1)); telemetry.Verify(t => t.MetricSent(), Times.Exactly(1)); c.Update(6.0); timer.TriggerElapsed(); Assert.AreEqual(0, evaluatorCalled); transport.Verify(t => t.Send(It.IsAny <ArraySegment <byte> >()), Times.Exactly(2)); telemetry.Verify(t => t.MetricSent(), Times.Exactly(2)); }
public void CountShouldntBeFlushedIfDidntChange() { var transport = new Mock <ITransport>(); var telemetry = new Mock <ITelemetry>(); var timer = new ManualTimer(); var c = new Count(transport.Object, telemetry.Object, timer, MetricName, Tags); timer.TriggerElapsed(); transport.Verify(t => t.Send(It.IsAny <ArraySegment <byte> >()), Times.Exactly(0)); telemetry.Verify(t => t.MetricSent(), Times.Exactly(0)); timer.TriggerElapsed(); transport.Verify(t => t.Send(It.IsAny <ArraySegment <byte> >()), Times.Exactly(0)); telemetry.Verify(t => t.MetricSent(), Times.Exactly(0)); }
public void NothingShouldBeSentIfNoEvaluatorAndNoUpdatedValue() { var transport = new Mock <ITransport>(); var telemetry = new Mock <ITelemetry>(); var timer = new ManualTimer(); var c = new Gauge(transport.Object, telemetry.Object, timer, MetricName, null, Tags); timer.TriggerElapsed(); transport.Verify(t => t.Send(It.IsAny <ArraySegment <byte> >()), Times.Exactly(0)); telemetry.Verify(t => t.MetricSent(), Times.Exactly(0)); timer.TriggerElapsed(); transport.Verify(t => t.Send(It.IsAny <ArraySegment <byte> >()), Times.Exactly(0)); telemetry.Verify(t => t.MetricSent(), Times.Exactly(0)); }
public void SetShouldBeFlushedEveryTick() { var transport = new Mock <ITransport>(); var telemetry = new Mock <ITelemetry>(); var timer = new ManualTimer(); var s = new Set(transport.Object, telemetry.Object, timer, MetricName, null); s.Add(5); timer.TriggerElapsed(); transport.Verify(t => t.Send(It.IsAny <ArraySegment <byte> >()), Times.Exactly(1)); telemetry.Verify(t => t.MetricSent(), Times.Exactly(1)); s.Add(6); timer.TriggerElapsed(); transport.Verify(t => t.Send(It.IsAny <ArraySegment <byte> >()), Times.Exactly(2)); telemetry.Verify(t => t.MetricSent(), Times.Exactly(2)); }
public void EvaluatorShouldBeCalledForEachTick() { var transport = new Mock <ITransport>(); var telemetry = new Mock <ITelemetry>(); var timer = new ManualTimer(); int evaluatorCalled = 0; var c = new Gauge(transport.Object, telemetry.Object, timer, MetricName, () => evaluatorCalled++, Tags); timer.TriggerElapsed(); Assert.AreEqual(1, evaluatorCalled); transport.Verify(t => t.Send(It.IsAny <ArraySegment <byte> >()), Times.Exactly(1)); telemetry.Verify(t => t.MetricSent(), Times.Exactly(1)); timer.TriggerElapsed(); Assert.AreEqual(2, evaluatorCalled); transport.Verify(t => t.Send(It.IsAny <ArraySegment <byte> >()), Times.Exactly(2)); telemetry.Verify(t => t.MetricSent(), Times.Exactly(2)); }
public void UpdatedValueShouldBeUsedWhenNoEvaluator() { var transport = new Mock <ITransport>(); var telemetry = new Mock <ITelemetry>(); var timer = new ManualTimer(); var c = new Gauge(transport.Object, telemetry.Object, timer, MetricName, null, Tags); c.Update(5.0); timer.TriggerElapsed(); transport.Verify(t => t.Send(It.IsAny <ArraySegment <byte> >()), Times.Exactly(1)); telemetry.Verify(t => t.MetricSent(), Times.Exactly(1)); c.Update(6.0); timer.TriggerElapsed(); transport.Verify(t => t.Send(It.IsAny <ArraySegment <byte> >()), Times.Exactly(2)); telemetry.Verify(t => t.MetricSent(), Times.Exactly(2)); }
public void NothingShouldBeSentIfEvaluatorThrowsAndNoValueWasUpdated() { var transport = new Mock <ITransport>(); var telemetry = new Mock <ITelemetry>(); var timer = new ManualTimer(); double Evaluator() => throw new Exception(); var c = new Gauge(transport.Object, telemetry.Object, timer, MetricName, Evaluator, Tags); timer.TriggerElapsed(); transport.Verify(t => t.Send(It.IsAny <ArraySegment <byte> >()), Times.Exactly(0)); telemetry.Verify(t => t.MetricSent(), Times.Exactly(0)); }