public void MergeStatsEngine_Mix() { var metric5 = MetricWireModel.BuildMetric(_metricNameService, "DotNet/name", null, MetricDataWireModel.BuildTimingData(TimeSpan.FromSeconds(4), TimeSpan.FromSeconds(4))); var metric6 = MetricWireModel.BuildMetric(_metricNameService, "DotNet/another", null, MetricDataWireModel.BuildTimingData(TimeSpan.FromSeconds(8), TimeSpan.FromSeconds(6))); var engine1 = new MetricStatsCollection(); MetricStatsDictionary <string, MetricDataWireModel> scoped1 = new MetricStatsDictionary <string, MetricDataWireModel>(); scoped1.Merge("DotNet/name1", MetricDataWireModel.BuildTimingData(TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(1)), MetricDataWireModel.BuildAggregateData); scoped1.Merge("DotNet/name2", MetricDataWireModel.BuildTimingData(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(2)), MetricDataWireModel.BuildAggregateData); engine1.MergeUnscopedStats(metric5); engine1.MergeScopedStats("engine1scope", scoped1); var engine2 = new MetricStatsCollection(); MetricStatsDictionary <string, MetricDataWireModel> scoped2 = new MetricStatsDictionary <string, MetricDataWireModel>(); scoped2.Merge("DotNet/name3", MetricDataWireModel.BuildTimingData(TimeSpan.FromSeconds(4), TimeSpan.FromSeconds(1)), MetricDataWireModel.BuildAggregateData); scoped2.Merge("DotNet/name4", MetricDataWireModel.BuildTimingData(TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(2)), MetricDataWireModel.BuildAggregateData); engine1.MergeUnscopedStats(metric6); engine1.MergeScopedStats("engine2scope", scoped1); var engine3 = new MetricStatsCollection(); engine3.Merge(engine1); engine3.Merge(engine2); IEnumerable <MetricWireModel> stats = engine3.ConvertToJsonForSending(_metricNameService); var count = 0; foreach (MetricWireModel current in stats) { count++; } Assert.AreEqual(6, count); }
public void MergeUnscopeNotCreated_TwoDifferentSame() { var metric1 = MetricWireModel.BuildMetric(_metricNameService, "DotNet/name", null, MetricDataWireModel.BuildTimingData(TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(4))); var metric2 = MetricWireModel.BuildMetric(_metricNameService, "DotNet/another", null, MetricDataWireModel.BuildTimingData(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(2))); var engine = new MetricStatsCollection(); engine.MergeUnscopedStats(metric1.MetricName.Name, metric1.Data); engine.MergeUnscopedStats(metric2.MetricName.Name, metric2.Data); IEnumerable <MetricWireModel> stats = engine.ConvertToJsonForSending(_metricNameService); var count = 0; foreach (MetricWireModel current in stats) { count++; if (current.MetricName.Name.Equals("DotNet/name")) { Assert.AreEqual(1, current.Data.Value0); Assert.AreEqual(5, current.Data.Value1); Assert.AreEqual(4, current.Data.Value2); } else if (current.MetricName.Name.Equals("DotNet/another")) { Assert.AreEqual(1, current.Data.Value0); Assert.AreEqual(3, current.Data.Value1); Assert.AreEqual(2, current.Data.Value2); } else { Assert.Fail("Unexpected Metric: " + current.MetricName.Name); } Assert.AreEqual(null, current.MetricName.Scope); } Assert.AreEqual(2, count); }
public void MergeUnscopedNotCreated_TwoStatsSame() { var metric1 = MetricWireModel.BuildMetric(_metricNameService, "name", null, MetricDataWireModel.BuildTimingData(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(2))); var engine = new MetricStatsCollection(); engine.MergeUnscopedStats(metric1.MetricName.Name, metric1.Data); engine.MergeUnscopedStats(metric1.MetricName.Name, metric1.Data); IEnumerable <MetricWireModel> stats = engine.ConvertToJsonForSending(_metricNameService); var count = 0; foreach (MetricWireModel current in stats) { count++; Assert.AreEqual("name", current.MetricName.Name); Assert.AreEqual(null, current.MetricName.Scope); Assert.AreEqual(2, current.Data.Value0); Assert.AreEqual(6, current.Data.Value1); Assert.AreEqual(4, current.Data.Value2); } Assert.AreEqual(1, count); var metric2 = MetricWireModel.BuildMetric(_metricNameService, "name", null, MetricDataWireModel.BuildTimingData(TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(4))); engine.MergeUnscopedStats(metric2.MetricName.Name, metric2.Data); engine.MergeUnscopedStats(metric2.MetricName.Name, metric2.Data); stats = engine.ConvertToJsonForSending(_metricNameService); count = 0; foreach (MetricWireModel current in stats) { count++; Assert.AreEqual("name", current.MetricName.Name); Assert.AreEqual(null, current.MetricName.Scope); Assert.AreEqual(4, current.Data.Value0); Assert.AreEqual(16, current.Data.Value1); Assert.AreEqual(12, current.Data.Value2); } Assert.AreEqual(1, count); }
public void MergeUnscopedStats_OneStatEmptyString() { var metric1 = MetricWireModel.BuildMetric(_metricNameService, "name", "", MetricDataWireModel.BuildTimingData(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(2))); var engine = new MetricStatsCollection(); engine.MergeUnscopedStats(metric1); IEnumerable <MetricWireModel> stats = engine.ConvertToJsonForSending(_metricNameService); var count = 0; foreach (MetricWireModel current in stats) { count++; Assert.AreEqual("name", current.MetricName.Name); Assert.AreEqual("", current.MetricName.Scope); Assert.AreEqual(1, current.Data.Value0); Assert.AreEqual(3, current.Data.Value1); Assert.AreEqual(2, current.Data.Value2); } Assert.AreEqual(1, count); }
public void MergeUnscopedStats_PreDoneMetrics() { IMetricNameService mNameService = Mock.Create <IMetricNameService>(); Mock.Arrange(() => mNameService.RenameMetric(Arg.IsAny <string>())).Returns <string>(name => "IAmRenamed"); var metric1 = MetricWireModel.BuildMetric(_metricNameService, "name", null, MetricDataWireModel.BuildTimingData(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(2))); var engine = new MetricStatsCollection(); engine.MergeUnscopedStats(metric1); IEnumerable <MetricWireModel> stats = engine.ConvertToJsonForSending(mNameService); var count = 0; foreach (MetricWireModel current in stats) { count++; Assert.AreEqual("name", current.MetricName.Name); Assert.AreEqual(null, current.MetricName.Scope); Assert.AreEqual(1, current.Data.Value0); Assert.AreEqual(3, current.Data.Value1); Assert.AreEqual(2, current.Data.Value2); } Assert.AreEqual(1, count); }
public void AddMetricsToEngine(MetricStatsCollection engine) { engine.MergeUnscopedStats(ConvertMetricNames(unscopedStats)); engine.MergeScopedStats(transactionName.PrefixedName, ConvertMetricNames(scopedStats)); }