public void TestAggregatingMetricsSucceeds() { var component = new ComponentData("TestName", "com.newrelic.test"); var metric1 = new MetricData("Test/Metric", "units", 2); var metric2 = new MetricData("Test/Metric", "units", 3); var metric3 = new MetricData("Test/Metric", "units", 4); var metric4 = new MetricData("Test/Metric", "otherunits", 5); Assert.AreEqual(0, TestSerializationHelper.GetMetricsMapFromComponent(component).Count, "Should be zero metrics"); component.AddMetric(metric1); component.AddMetric(metric2); component.AddMetric(metric3); component.AddMetric(metric4); var serializedComponent = component.Serialize(DateTime.Now.Subtract(TimeSpan.FromSeconds(60))); var metrics = TestSerializationHelper.GetMetricsMapFromComponent(component); Assert.AreEqual(2, metrics.Count, "Should be two metrics"); Assert.AreEqual(9, TestSerializationHelper.GetValueFromMetricMap(metrics, metric1.FullName, MetricValues.Value)); Assert.AreEqual(3, TestSerializationHelper.GetValueFromMetricMap(metrics, metric1.FullName, MetricValues.Count)); Assert.AreEqual(2, TestSerializationHelper.GetValueFromMetricMap(metrics, metric1.FullName, MetricValues.MinValue)); Assert.AreEqual(4, TestSerializationHelper.GetValueFromMetricMap(metrics, metric1.FullName, MetricValues.MaxValue)); Assert.AreEqual(29, TestSerializationHelper.GetValueFromMetricMap(metrics, metric1.FullName, MetricValues.SumOfSquares)); Assert.AreEqual(5, TestSerializationHelper.GetValueFromMetricMap(metrics, metric4.FullName, MetricValues.Value)); Assert.AreEqual(1, TestSerializationHelper.GetValueFromMetricMap(metrics, metric4.FullName, MetricValues.Count)); Assert.AreEqual(5, TestSerializationHelper.GetValueFromMetricMap(metrics, metric4.FullName, MetricValues.MinValue)); Assert.AreEqual(5, TestSerializationHelper.GetValueFromMetricMap(metrics, metric4.FullName, MetricValues.MaxValue)); Assert.AreEqual(25, TestSerializationHelper.GetValueFromMetricMap(metrics, metric4.FullName, MetricValues.SumOfSquares)); }
internal void AggregateWith(MetricData other) { this._count += other.Count; this._value += other.Value; this._minValue = Math.Min(_minValue, other.MinValue); this._maxValue = Math.Max(_maxValue, other.MaxValue); this._sumOfSquares += other.SumOfSquares; }
internal void AddMetric(MetricData metric) { if (!_metrics.ContainsKey(metric.FullName)) { _metrics.Add(metric.FullName, metric); } else { _metrics[metric.FullName].AggregateWith(metric); } }
public void TestOverloadedConstructorSucceeds() { var metric = new MetricData("Test/Metric", "units", 2); Assert.AreEqual("Component/Test/Metric[units]", metric.FullName); Assert.AreEqual(2, metric.Value); Assert.AreEqual(1, metric.Count); Assert.AreEqual(2, metric.MinValue); Assert.AreEqual(2, metric.MaxValue); Assert.AreEqual(4, metric.SumOfSquares); }
public void TestSerializeMethod() { var metric = new MetricData("Test/Metric", "units", 3); var value = metric.Serialize(); Assert.IsTrue(value is Array); Assert.AreEqual((float)value.GetValue(0), metric.Value); Assert.AreEqual((float)value.GetValue(1), metric.Count); Assert.AreEqual((float)value.GetValue(2), metric.MinValue); Assert.AreEqual((float)value.GetValue(3), metric.MaxValue); Assert.AreEqual((float)value.GetValue(4), metric.SumOfSquares); }
public void TestAggregationSucceeds() { var metric1 = new MetricData("Test/Metric1", "units", 2); var metric2 = new MetricData("Test/Metric2", "units", 3); metric1.AggregateWith(metric2); Assert.AreEqual("Component/Test/Metric1[units]", metric1.FullName); Assert.AreEqual(5, metric1.Value); Assert.AreEqual(2, metric1.Count); Assert.AreEqual(2, metric1.MinValue); Assert.AreEqual(3, metric1.MaxValue); Assert.AreEqual(13, metric1.SumOfSquares); }
public void TestAddSingleMetricSucceeds() { var component = new ComponentData("TestName", "com.newrelic.test"); var metric = new MetricData("Test/Metric", "units", 3); Assert.AreEqual("TestName", component.Name); Assert.AreEqual("com.newrelic.test", component.Guid); Assert.AreEqual(0, TestSerializationHelper.GetMetricsMapFromComponent(component).Count, "Should be zero metrics"); component.AddMetric(metric); var serializedComponent = component.Serialize(DateTime.Now.Subtract(TimeSpan.FromSeconds(60))); var metrics = TestSerializationHelper.GetMetricsMapFromComponent(component); Assert.AreEqual(1, metrics.Count, "Should be one metric"); Assert.IsTrue(metrics.Keys.Any(key => key == metric.FullName), "Metric name should be a valid key"); Assert.AreEqual(3, TestSerializationHelper.GetValueFromMetricMap(metrics, metric.FullName, MetricValues.Value)); }
public void TestAddMultipleMetricsSucceeds() { var component = new ComponentData("TestName", "com.newrelic.test"); var metric1 = new MetricData("Test/Metric1", "units", 2); var metric2 = new MetricData("Test/Metric2", "units", 3); var metric3 = new MetricData("Test/Metric3", "units", 4); Assert.AreEqual(0, TestSerializationHelper.GetMetricsMapFromComponent(component).Count, "Should be zero metrics"); component.AddMetric(metric1); component.AddMetric(metric2); component.AddMetric(metric3); var serializedComponent = component.Serialize(DateTime.Now.Subtract(TimeSpan.FromSeconds(60))); var metrics = TestSerializationHelper.GetMetricsMapFromComponent(component); Assert.AreEqual(3, metrics.Count, "Should be three metrics"); Assert.AreEqual(2, TestSerializationHelper.GetValueFromMetricMap(metrics, metric1.FullName, MetricValues.Value)); Assert.AreEqual(3, TestSerializationHelper.GetValueFromMetricMap(metrics, metric2.FullName, MetricValues.Value)); Assert.AreEqual(4, TestSerializationHelper.GetValueFromMetricMap(metrics, metric3.FullName, MetricValues.Value)); }