public void EqualMetricsAreCombinedIntoSignleAggregatedStatsStructure()
        {
            // Arrange
            var sentTelemetry = new List <ITelemetry>();

            var client = this.InitializeTelemetryClient(sentTelemetry);

            MetricV1 metric1 = null;
            MetricV1 metric2 = null;

            using (MetricManagerV1 manager = new MetricManagerV1(client))
            {
                // note: on first go aggregators may be different because manager may
                // snapshot after first got created but before the second
                for (int i = 0; i < 2; i++)
                {
                    metric1 = manager.CreateMetric("Test Metric");
                    metric2 = manager.CreateMetric("Test Metric");

                    // Act
                    metric1.Track(10);
                    metric2.Track(5);

                    manager.Flush();

                    if (sentTelemetry.Count == 1)
                    {
                        break;
                    }
                    else
                    {
                        sentTelemetry.Clear();
                    }
                }
            }

            // Assert
            Assert.AreEqual(1, sentTelemetry.Count);

            var aggregatedMetric = (MetricTelemetry)sentTelemetry.Single();

            Assert.AreEqual(2, aggregatedMetric.Count);
            Assert.AreEqual(15, aggregatedMetric.Sum);
        }
        public void FlushCreatesAggregatedMetricTelemetry()
        {
            // Arrange
            var sentTelemetry = new List <ITelemetry>();

            var client = this.InitializeTelemetryClient(sentTelemetry);

            using (MetricManagerV1 manager = new MetricManagerV1(client))
            {
                MetricV1 metric = manager.CreateMetric("Test Metric");

                metric.Track(42);

                // Act
                manager.Flush();

                // Assert
                Assert.AreEqual(1, sentTelemetry.Count);

                var aggregatedMetric = (MetricTelemetry)sentTelemetry.Single();
                Assert.IsNotNull(aggregatedMetric);
            }
        }