public void CircularDataSink_CanProvideASnapshotOfDataAfterSomeCutoff() { var config = new SinkElement("id", "testData", 10, float.MinValue, float.MaxValue); var sink = new CircularDataSink(config); var snapshot = new Snapshot { new MetricData(10, DateTime.Parse("7 Feb 2013"), new List<string> { "value" }), new MetricData(20, DateTime.Parse("9 Feb 2013"), new List<string> { "value" }) }; sink.Update(snapshot); var actual = sink.Snapshot(DateTime.Parse("8 Feb 2013")); Assert.AreEqual(1, actual.Count()); Assert.AreEqual(20, actual.First().Data[0]); }
public void CircularDataSink_CanBeReset() { var config = new SinkElement("id", "testData", 10, float.MinValue, float.MaxValue); var sink = new CircularDataSink(config); var snapshot = new Snapshot { new MetricData(10, DateTime.Now.AddMinutes(-2), new List<string> { "value" }), new MetricData(20, DateTime.Now.AddMinutes(-1), new List<string> { "value" }) }; sink.Update(snapshot); var actual = sink.Snapshot(); Assert.AreEqual(2, actual.Count()); Assert.AreEqual(10, actual.First().Data[0]); snapshot = new Snapshot { new MetricData(20, DateTime.Now, new List<string> { "value" }) }; sink.ResetWith(snapshot); actual = sink.Snapshot(); Assert.AreEqual(1, actual.Count()); Assert.AreEqual(20, actual.First().Data[0]); }
public void CircularDataSink_WarnsWhenStructureOfDataHasChanged() { var config = new SinkElement("id", "testData", 10, float.MinValue, float.MaxValue); var sink = new CircularDataSink(config); var snapshot = new Snapshot { new MetricData(10, DateTime.Now.AddMinutes(-1), new List<string> { "value" }) }; sink.Update(snapshot); snapshot = new Snapshot { new MetricData(10, DateTime.Now, new List<string> { "value", "some extra value" }) }; sink.Update(snapshot); }
public void CircularDataSink_IgnoreDataOlderThanMostRecentLastUpdate() { var config = new SinkElement("id", "testData", 10, float.MinValue, float.MaxValue); var sink = new CircularDataSink(config); sink.Update(new Snapshot { new MetricData( 1.0, DateTime.Now, new List<string> { "value" }), new MetricData( 2.0, DateTime.Now.AddMinutes(5), new List<string> { "value" }), new MetricData( 4.0, DateTime.Now.AddMinutes(10), new List<string> { "value" }), new MetricData( 1.0, DateTime.Now.AddMinutes(5), new List<string> { "value" }) }); var snapshot = sink.Snapshot(); var total = 0.0d; foreach (var dataPoint in snapshot) { total += dataPoint.Data[0].Value; } Assert.AreEqual(7.0d, total); }