public void Record_UnregisteredMeasure()
        {
            Stats.State = StatsCollectionState.ENABLED;

            IViewName viewName = CreateRandomViewName();

            IView view =
                View.Create(
                    viewName,
                    "description",
                    MEASURE_DOUBLE,
                    Sum.Create(),
                    new List <string>()
            {
                KEY
            });

            viewManager.RegisterView(view);
            statsRecorder
            .NewMeasureMap()
            .Put(MEASURE_DOUBLE_NO_VIEW_1, 1.0)
            .Put(MEASURE_DOUBLE, 2.0)
            .Put(MEASURE_DOUBLE_NO_VIEW_2, 3.0)
            .Record(new SimpleTagContext(new DistributedContextEntry(KEY, VALUE)));

            IViewData viewData = viewManager.GetView(viewName);

            // There should be one entry.
            var tv = TagValues.Create(new List <string>()
            {
                VALUE
            });

            StatsTestUtil.AssertAggregationMapEquals(
                viewData.AggregationMap,
                new Dictionary <TagValues, IAggregationData>()
            {
                { tv, StatsTestUtil.CreateAggregationData(Sum.Create(), MEASURE_DOUBLE, 2.0) }
            },
                1e-6);
        }
Ejemplo n.º 2
0
        public void RecordTwice()
        {
            IView view =
                View.Create(
                    VIEW_NAME,
                    "description",
                    MEASURE_DOUBLE,
                    Sum.Create(),
                    new List <ITagKey>()
            {
                KEY
            });

            viewManager.RegisterView(view);
            IMeasureMap statsRecord = statsRecorder.NewMeasureMap().Put(MEASURE_DOUBLE, 1.0);

            statsRecord.Record(new SimpleTagContext(Tag.Create(KEY, VALUE)));
            statsRecord.Record(new SimpleTagContext(Tag.Create(KEY, VALUE_2)));
            IViewData viewData = viewManager.GetView(VIEW_NAME);

            // There should be two entries.
            var tv = TagValues.Create(new List <ITagValue>()
            {
                VALUE
            });
            var tv2 = TagValues.Create(new List <ITagValue>()
            {
                VALUE_2
            });

            Dictionary <TagValues, IAggregationData> expected = new Dictionary <TagValues, IAggregationData>()
            {
                { tv, StatsTestUtil.CreateAggregationData(Sum.Create(), MEASURE_DOUBLE, 1.0) },
                { tv2, StatsTestUtil.CreateAggregationData(Sum.Create(), MEASURE_DOUBLE, 1.0) }
            };

            StatsTestUtil.AssertAggregationMapEquals(
                viewData.AggregationMap,
                expected,
                1e-6);
        }
Ejemplo n.º 3
0
        public void PreventAggregationAndAggregationDataMismatch_Distribution_Count()
        {
            var tagValues1 = TagValues.Create(new List <ITagValue>()
            {
                V1, V2
            });
            var tagValues2 = TagValues.Create(new List <ITagValue>()
            {
                V10, V20
            });
            Dictionary <TagValues, IAggregationData> entries = new Dictionary <TagValues, IAggregationData>()
            {
                { tagValues1, DistributionData.Create(1, 1, 1, 1, 0, new List <long>()
                    {
                        0L, 1L, 0L
                    }) },
                { tagValues2, CountData.Create(100) }
            };

            AggregationAndAggregationDataMismatch(CreateView(DISTRIBUTION), entries);
        }
Ejemplo n.º 4
0
        public void Record_CurrentContextSet()
        {
            IView view =
                View.Create(
                    VIEW_NAME,
                    "description",
                    MEASURE_DOUBLE,
                    Sum.Create(),
                    new List <ITagKey>()
            {
                KEY
            });

            viewManager.RegisterView(view);
            var orig = AsyncLocalContext.CurrentTagContext;

            AsyncLocalContext.CurrentTagContext = new SimpleTagContext(Tag.Create(KEY, VALUE));

            try
            {
                statsRecorder.NewMeasureMap().Put(MEASURE_DOUBLE, 1.0).Record();
            }
            finally
            {
                AsyncLocalContext.CurrentTagContext = orig;
            }

            IViewData viewData = viewManager.GetView(VIEW_NAME);

            // record() should have used the given TagContext.
            ICollection <TagValues> expected = new List <TagValues>()
            {
                TagValues.Create(new List <ITagValue>()
                {
                    VALUE
                })
            };

            Assert.Equal(expected, viewData.AggregationMap.Keys);
        }
Ejemplo n.º 5
0
        public void TestRecordCumulativeMultipleTagValues()
        {
            IView view = CreateCumulativeView(CreateRandomViewName(), MeasureDouble, Distribution, new List <string>()
            {
                Key
            });

            viewManager.RegisterView(view);
            statsRecorder
            .NewMeasureMap()
            .Put(MeasureDouble, 10.0)
            .Record(tagger.EmptyBuilder.Put(Key, Value).Build());
            statsRecorder
            .NewMeasureMap()
            .Put(MeasureDouble, 30.0)
            .Record(tagger.EmptyBuilder.Put(Key, Value2).Build());
            statsRecorder
            .NewMeasureMap()
            .Put(MeasureDouble, 50.0)
            .Record(tagger.EmptyBuilder.Put(Key, Value2).Build());
            IViewData viewData = viewManager.GetView(view.Name);
            var       tv       = TagValues.Create(new List <string>()
            {
                Value
            });
            var tv2 = TagValues.Create(new List <string>()
            {
                Value2
            });

            StatsTestUtil.AssertAggregationMapEquals(
                viewData.AggregationMap,
                new Dictionary <TagValues, IAggregationData>()
            {
                { tv, StatsTestUtil.CreateAggregationData(Distribution, MeasureDouble, 10.0) },
                { tv2, StatsTestUtil.CreateAggregationData(Distribution, MeasureDouble, 30.0, 50.0) },
            },
                Epsilon);
        }
Ejemplo n.º 6
0
        public void GetViewDoesNotClearStats()
        {
            IView view = CreateCumulativeView(CreateRandomViewName(), MeasureDouble, Distribution, new List <string>()
            {
                Key
            });

            viewManager.RegisterView(view);
            ITagContext tags = tagger.EmptyBuilder.Put(Key, Value).Build();

            statsRecorder.NewMeasureMap().Put(MeasureDouble, 0.1).Record(tags);
            IViewData viewData1 = viewManager.GetView(view.Name);
            var       tv        = TagValues.Create(new List <string>()
            {
                Value
            });

            StatsTestUtil.AssertAggregationMapEquals(
                viewData1.AggregationMap,
                new Dictionary <TagValues, IAggregationData>()
            {
                { tv, StatsTestUtil.CreateAggregationData(Distribution, MeasureDouble, 0.1) },
            },
                Epsilon);

            statsRecorder.NewMeasureMap().Put(MeasureDouble, 0.2).Record(tags);
            IViewData viewData2 = viewManager.GetView(view.Name);

            // The second view should have the same start time as the first view, and it should include both
            // Recorded values:

            StatsTestUtil.AssertAggregationMapEquals(
                viewData2.AggregationMap,
                new Dictionary <TagValues, IAggregationData>()
            {
                { tv, StatsTestUtil.CreateAggregationData(Distribution, MeasureDouble, 0.1, 0.2) },
            },
                Epsilon);
        }
Ejemplo n.º 7
0
        public void GetViewDoesNotClearStats()
        {
            IView view = CreateCumulativeView(VIEW_NAME, MEASURE_DOUBLE, DISTRIBUTION, new List <TagKey>()
            {
                KEY
            });

            viewManager.RegisterView(view);
            ITagContext tags = tagger.EmptyBuilder.Put(KEY, VALUE).Build();

            statsRecorder.NewMeasureMap().Put(MEASURE_DOUBLE, 0.1).Record(tags);
            IViewData viewData1 = viewManager.GetView(VIEW_NAME);
            var       tv        = TagValues.Create(new List <TagValue>()
            {
                VALUE
            });

            StatsTestUtil.AssertAggregationMapEquals(
                viewData1.AggregationMap,
                new Dictionary <TagValues, IAggregationData>()
            {
                { tv, StatsTestUtil.CreateAggregationData(DISTRIBUTION, MEASURE_DOUBLE, 0.1) },
            },
                EPSILON);

            statsRecorder.NewMeasureMap().Put(MEASURE_DOUBLE, 0.2).Record(tags);
            IViewData viewData2 = viewManager.GetView(VIEW_NAME);

            // The second view should have the same start time as the first view, and it should include both
            // Recorded values:

            StatsTestUtil.AssertAggregationMapEquals(
                viewData2.AggregationMap,
                new Dictionary <TagValues, IAggregationData>()
            {
                { tv, StatsTestUtil.CreateAggregationData(DISTRIBUTION, MEASURE_DOUBLE, 0.1, 0.2) },
            },
                EPSILON);
        }
Ejemplo n.º 8
0
        public void TestRecordCumulativeMultipleTagValues()
        {
            viewManager.RegisterView(
                CreateCumulativeView(VIEW_NAME, MEASURE_DOUBLE, DISTRIBUTION, new List <ITagKey>()
            {
                KEY
            }));
            statsRecorder
            .NewMeasureMap()
            .Put(MEASURE_DOUBLE, 10.0)
            .Record(tagger.EmptyBuilder.Put(KEY, VALUE).Build());
            statsRecorder
            .NewMeasureMap()
            .Put(MEASURE_DOUBLE, 30.0)
            .Record(tagger.EmptyBuilder.Put(KEY, VALUE_2).Build());
            statsRecorder
            .NewMeasureMap()
            .Put(MEASURE_DOUBLE, 50.0)
            .Record(tagger.EmptyBuilder.Put(KEY, VALUE_2).Build());
            IViewData viewData = viewManager.GetView(VIEW_NAME);
            var       tv       = TagValues.Create(new List <ITagValue>()
            {
                VALUE
            });
            var tv2 = TagValues.Create(new List <ITagValue>()
            {
                VALUE_2
            });

            StatsTestUtil.AssertAggregationMapEquals(
                viewData.AggregationMap,
                new Dictionary <TagValues, IAggregationData>()
            {
                { tv, StatsTestUtil.CreateAggregationData(DISTRIBUTION, MEASURE_DOUBLE, 10.0) },
                { tv2, StatsTestUtil.CreateAggregationData(DISTRIBUTION, MEASURE_DOUBLE, 30.0, 50.0) },
            },
                EPSILON);
        }
        public void Record_UnregisteredMeasure()
        {
            IView view =
                View.Create(
                    VIEW_NAME,
                    "description",
                    MEASURE_DOUBLE,
                    Sum.Create(),
                    new List <ITagKey>()
            {
                KEY
            });

            viewManager.RegisterView(view);
            statsRecorder
            .NewMeasureMap()
            .Put(MEASURE_DOUBLE_NO_VIEW_1, 1.0)
            .Put(MEASURE_DOUBLE, 2.0)
            .Put(MEASURE_DOUBLE_NO_VIEW_2, 3.0)
            .Record(new SimpleTagContext(Tag.Create(KEY, VALUE)));

            IViewData viewData = viewManager.GetView(VIEW_NAME);

            // There should be one entry.
            var tv = TagValues.Create(new List <ITagValue>()
            {
                VALUE
            });

            StatsTestUtil.AssertAggregationMapEquals(
                viewData.AggregationMap,
                new Dictionary <TagValues, IAggregationData>()
            {
                { tv, StatsTestUtil.CreateAggregationData(Sum.Create(), MEASURE_DOUBLE, 2.0) }
            },
                1e-6);
        }
Ejemplo n.º 10
0
#pragma warning disable SA1202 // Elements must be ordered by access
        public void TestRecordWithTagsThatDoNotMatchViewData()
#pragma warning restore SA1202 // Elements must be ordered by access
        {
            viewManager.RegisterView(
                CreateCumulativeView(VIEW_NAME, MEASURE_DOUBLE, DISTRIBUTION, new List <ITagKey>()
            {
                KEY
            }));
            statsRecorder
            .NewMeasureMap()
            .Put(MEASURE_DOUBLE, 10.0)
            .Record(tagger.EmptyBuilder.Put(TagKey.Create("wrong key"), VALUE).Build());
            statsRecorder
            .NewMeasureMap()
            .Put(MEASURE_DOUBLE, 50.0)
            .Record(tagger.EmptyBuilder.Put(TagKey.Create("another wrong key"), VALUE).Build());
            IViewData viewData = viewManager.GetView(VIEW_NAME);
            var       tv       = TagValues.Create(new List <ITagValue>()
            {
                MutableViewData.UNKNOWN_TAG_VALUE
            });

            StatsTestUtil.AssertAggregationMapEquals(
                viewData.AggregationMap,
                new Dictionary <TagValues, IAggregationData>()
            {
                // Won't Record the unregistered tag key, for missing registered keys will use default
                // tag value : "unknown/not set".
                {
                    tv,

                    // Should Record stats with default tag value: "KEY" : "unknown/not set".
                    StatsTestUtil.CreateAggregationData(DISTRIBUTION, MEASURE_DOUBLE, 10.0, 50.0)
                }
            },
                EPSILON);
        }
Ejemplo n.º 11
0
        public void TestRecordWithTagsThatDoNotMatchViewData()
        {
            Stats.State = StatsCollectionState.ENABLED;

            IView view = CreateCumulativeView(CreateRandomViewName(), MeasureDouble, Distribution, new List <string>()
            {
                Key
            });

            viewManager.RegisterView(view);
            statsRecorder
            .NewMeasureMap()
            .Put(MeasureDouble, 10.0)
            .Record(tagger.EmptyBuilder.Put("wrong key", Value).Build());
            statsRecorder
            .NewMeasureMap()
            .Put(MeasureDouble, 50.0)
            .Record(tagger.EmptyBuilder.Put("another wrong key", Value).Build());
            IViewData viewData = viewManager.GetView(view.Name);
            var       tv       = TagValues.Create(new List <string>()
            {
                MutableViewData.UnknownTagValue
            });

            StatsTestUtil.AssertAggregationMapEquals(
                viewData.AggregationMap,
                new Dictionary <TagValues, IAggregationData>()
            {
                // Won't Record the unregistered tag key, for missing registered keys will use default
                // tag value : "unknown/not set".
                { tv,
                  // Should Record stats with default tag value: "Key" : "unknown/not set".
                  StatsTestUtil.CreateAggregationData(Distribution, MeasureDouble, 10.0, 50.0) },
            },
                Epsilon);
        }
Ejemplo n.º 12
0
        protected internal List <Metric> CreateMetrics(TagValues tagValues, IAggregationData agg, IViewData viewData, long timeStamp)
        {
            List <Metric> results = new List <Metric>();

            var unit      = viewData.View.Measure.Unit;
            var name      = viewData.View.Name.AsString;
            var tags      = GetTagKeysAndValues(viewData.View.Columns, tagValues.Values);
            var statistic = GetStatistic(viewData.View.Aggregation, viewData.View.Measure);

            agg.Match <object>(
                (arg) =>
            {
                if (statistic == "unknown")
                {
                    statistic = "total";
                }
                tags["statistic"] = statistic;
                results.Add(new Metric(name, MetricType.GAUGE, timeStamp, unit, tags, arg.Sum));
                return(null);
            },
                (arg) =>
            {
                if (statistic == "unknown")
                {
                    statistic = "total";
                }
                tags["statistic"] = statistic;
                results.Add(new Metric(name, MetricType.GAUGE, timeStamp, unit, tags, arg.Sum));
                return(null);
            },
                (arg) =>
            {
                if (statistic == "unknown")
                {
                    statistic = "count";
                }
                tags["statistic"] = statistic;
                results.Add(new Metric(name, MetricType.GAUGE, timeStamp, unit, tags, arg.Count));
                return(null);
            },
                (arg) =>
            {
                if (statistic == "unknown")
                {
                    statistic = "total";
                }

                IDictionary <string, string> copy = new Dictionary <string, string>(tags);
                copy["statistic"] = "count";
                results.Add(new Metric(name, MetricType.GAUGE, timeStamp, "count", copy, arg.Count));

                copy = new Dictionary <string, string>(tags);
                copy["statistic"] = "mean";
                results.Add(new Metric(name, MetricType.GAUGE, timeStamp, unit, copy, arg.Mean));

                tags["statistic"] = statistic;
                results.Add(new Metric(name, MetricType.GAUGE, timeStamp, unit, tags, arg.Count * arg.Mean));

                return(null);
            },
                (arg) =>
            {
                if (statistic == "unknown")
                {
                    statistic = "total";
                }
                IDictionary <string, string> copy = new Dictionary <string, string>(tags);
                copy["statistic"] = "count";
                results.Add(new Metric(name, MetricType.GAUGE, timeStamp, "count", copy, arg.Count));

                copy = new Dictionary <string, string>(tags);
                copy["statistic"] = "mean";
                results.Add(new Metric(name, MetricType.GAUGE, timeStamp, unit, copy, arg.Mean));

                copy = new Dictionary <string, string>(tags);
                copy["statistic"] = "max";
                results.Add(new Metric(name, MetricType.GAUGE, timeStamp, unit, copy, arg.Max));

                tags["statistic"] = statistic;
                results.Add(new Metric(name, MetricType.GAUGE, timeStamp, unit, tags, arg.Count * arg.Mean));

                return(null);
            },
                (arg) =>
            {
                if (statistic == "unknown")
                {
                    statistic = "value";
                }
                tags["statistic"] = statistic;
                results.Add(new Metric(name, MetricType.GAUGE, timeStamp, unit, tags, arg.LastValue));
                return(null);
            },
                (arg) =>
            {
                if (statistic == "unknown")
                {
                    statistic = "value";
                }
                tags["statistic"] = statistic;
                results.Add(new Metric(name, MetricType.GAUGE, timeStamp, unit, tags, arg.LastValue));
                return(null);
            },
                (arg) =>
            {
                return(null);
            });

            return(results);
        }
Ejemplo n.º 13
0
 public abstract IList <Metric> CreateMetrics(IViewData viewData, IAggregationData aggregation, TagValues tagValues, long timeStamp);
Ejemplo n.º 14
0
        public void TestViewDataWithMultipleTagKeys()
        {
            ITagKey key1 = TagKey.Create("Key-1");
            ITagKey key2 = TagKey.Create("Key-2");

            viewManager.RegisterView(
                CreateCumulativeView(VIEW_NAME, MEASURE_DOUBLE, DISTRIBUTION, new List <ITagKey>()
            {
                key1, key2
            }));
            statsRecorder
            .NewMeasureMap()
            .Put(MEASURE_DOUBLE, 1.1)
            .Record(
                tagger
                .EmptyBuilder
                .Put(key1, TagValue.Create("v1"))
                .Put(key2, TagValue.Create("v10"))
                .Build());
            statsRecorder
            .NewMeasureMap()
            .Put(MEASURE_DOUBLE, 2.2)
            .Record(
                tagger
                .EmptyBuilder
                .Put(key1, TagValue.Create("v1"))
                .Put(key2, TagValue.Create("v20"))
                .Build());
            statsRecorder
            .NewMeasureMap()
            .Put(MEASURE_DOUBLE, 3.3)
            .Record(
                tagger
                .EmptyBuilder
                .Put(key1, TagValue.Create("v2"))
                .Put(key2, TagValue.Create("v10"))
                .Build());
            statsRecorder
            .NewMeasureMap()
            .Put(MEASURE_DOUBLE, 4.4)
            .Record(
                tagger
                .EmptyBuilder
                .Put(key1, TagValue.Create("v1"))
                .Put(key2, TagValue.Create("v10"))
                .Build());
            IViewData viewData = viewManager.GetView(VIEW_NAME);
            var       tv1      = TagValues.Create(new List <ITagValue>()
            {
                TagValue.Create("v1"), TagValue.Create("v10")
            });
            var tv2 = TagValues.Create(new List <ITagValue>()
            {
                TagValue.Create("v1"), TagValue.Create("v20")
            });
            var tv3 = TagValues.Create(new List <ITagValue>()
            {
                TagValue.Create("v2"), TagValue.Create("v10")
            });

            StatsTestUtil.AssertAggregationMapEquals(
                viewData.AggregationMap,
                new Dictionary <TagValues, IAggregationData>()
            {
                { tv1, StatsTestUtil.CreateAggregationData(DISTRIBUTION, MEASURE_DOUBLE, 1.1, 4.4) },
                { tv2, StatsTestUtil.CreateAggregationData(DISTRIBUTION, MEASURE_DOUBLE, 2.2) },
                { tv3, StatsTestUtil.CreateAggregationData(DISTRIBUTION, MEASURE_DOUBLE, 3.3) },
            },
                EPSILON);
        }
Ejemplo n.º 15
0
        public override IList <Metric> CreateMetrics(IViewData viewData, IAggregationData aggregation, TagValues tagValues, long timeStamp)
        {
            List <Metric> results = new List <Metric>();

            var unit = viewData.View.Measure.Unit;
            var tags = GetTagKeysAndValues(viewData.View.Columns, tagValues.Values);
            var name = viewData.View.Name.AsString;

            aggregation.Match <object>(
                (arg) =>
            {
                results.Add(new Metric(GetMetricName(name, string.Empty, tags), MetricType.GAUGE, timeStamp, unit, tags, arg.Sum));
                return(null);
            },
                (arg) =>
            {
                results.Add(new Metric(GetMetricName(name, string.Empty, tags), MetricType.GAUGE, timeStamp, unit, tags, arg.Sum));
                return(null);
            },
                (arg) =>
            {
                results.Add(new Metric(GetMetricName(name, string.Empty, tags), MetricType.GAUGE, timeStamp, unit, tags, arg.Count));
                return(null);
            },
                (arg) =>
            {
                results.Add(new Metric(GetMetricName(name, string.Empty, tags), MetricType.GAUGE, timeStamp, unit, tags, arg.Mean));
                return(null);
            },
                (arg) =>
            {
                results.Add(new Metric(GetMetricName(name, string.Empty, tags), MetricType.GAUGE, timeStamp, unit, tags, arg.Mean));
                results.Add(new Metric(GetMetricName(name, "max", tags), MetricType.GAUGE, timeStamp, unit, tags, arg.Max));
                results.Add(new Metric(GetMetricName(name, "min", tags), MetricType.GAUGE, timeStamp, unit, tags, arg.Min));
                var stdDeviation = Math.Sqrt((arg.SumOfSquaredDeviations / arg.Count) - 1);
                if (double.IsNaN(stdDeviation))
                {
                    stdDeviation = 0.0;
                }

                results.Add(new Metric(GetMetricName(name, "stddev", tags), MetricType.GAUGE, timeStamp, unit, tags, stdDeviation));
                return(null);
            },
                (arg) =>
            {
                results.Add(new Metric(GetMetricName(name, "value", tags), MetricType.GAUGE, timeStamp, unit, tags, arg.LastValue));
                return(null);
            },
                (arg) =>
            {
                results.Add(new Metric(GetMetricName(name, "value", tags), MetricType.GAUGE, timeStamp, unit, tags, arg.LastValue));
                return(null);
            },
                (arg) =>
            {
                return(null);
            });

            return(results);
        }
Ejemplo n.º 16
0
        public void GetAvailableTags_ReturnsExpected()
        {
            var opts  = new MetricsEndpointOptions();
            var stats = new OpenCensusStats();
            var ep    = new MetricsEndpoint(opts, stats);

            SetupTestView(stats, Sum.Create(), null, "test.test1");
            var viewData = stats.ViewManager.GetView(ViewName.Create("test.test1"));

            var dict = new Dictionary <TagValues, IAggregationData>()
            {
                {
                    TagValues.Create(new List <ITagValue>()
                    {
                        TagValue.Create("v1"), TagValue.Create("v1"), TagValue.Create("v1")
                    }),
                    SumDataDouble.Create(1)
                },
                {
                    TagValues.Create(new List <ITagValue>()
                    {
                        TagValue.Create("v2"), TagValue.Create("v2"), TagValue.Create("v2")
                    }),
                    SumDataDouble.Create(1)
                }
            };

            var result = ep.GetAvailableTags(viewData.View.Columns, dict);

            Assert.NotNull(result);
            Assert.Equal(3, result.Count);

            var tag = result[0];

            Assert.Equal("a", tag.Tag);
            Assert.Contains("v1", tag.Values);
            Assert.Contains("v2", tag.Values);

            tag = result[1];
            Assert.Equal("b", tag.Tag);
            Assert.Contains("v1", tag.Values);
            Assert.Contains("v2", tag.Values);

            tag = result[2];
            Assert.Equal("c", tag.Tag);
            Assert.Contains("v1", tag.Values);
            Assert.Contains("v2", tag.Values);

            dict   = new Dictionary <TagValues, IAggregationData>();
            result = ep.GetAvailableTags(viewData.View.Columns, dict);
            Assert.NotNull(result);
            Assert.Equal(3, result.Count);

            tag = result[0];
            Assert.Equal("a", tag.Tag);
            Assert.Empty(tag.Values);

            tag = result[1];
            Assert.Equal("b", tag.Tag);
            Assert.Empty(tag.Values);

            tag = result[2];
            Assert.Equal("c", tag.Tag);
            Assert.Empty(tag.Values);
        }
Ejemplo n.º 17
0
        public void TestViewDataWithMultipleTagKeys()
        {
            string key1 = "Key-1";
            string key2 = "Key-2";
            IView  view = CreateCumulativeView(CreateRandomViewName(), MeasureDouble, Distribution, new List <string>()
            {
                key1, key2
            });

            viewManager.RegisterView(view);
            statsRecorder
            .NewMeasureMap()
            .Put(MeasureDouble, 1.1)
            .Record(
                tagger
                .EmptyBuilder
                .Put(key1, "v1")
                .Put(key2, "v10")
                .Build());
            statsRecorder
            .NewMeasureMap()
            .Put(MeasureDouble, 2.2)
            .Record(
                tagger
                .EmptyBuilder
                .Put(key1, "v1")
                .Put(key2, "v20")
                .Build());
            statsRecorder
            .NewMeasureMap()
            .Put(MeasureDouble, 3.3)
            .Record(
                tagger
                .EmptyBuilder
                .Put(key1, "v2")
                .Put(key2, "v10")
                .Build());
            statsRecorder
            .NewMeasureMap()
            .Put(MeasureDouble, 4.4)
            .Record(
                tagger
                .EmptyBuilder
                .Put(key1, "v1")
                .Put(key2, "v10")
                .Build());
            IViewData viewData = viewManager.GetView(view.Name);
            var       tv1      = TagValues.Create(new List <string>()
            {
                "v1", "v10"
            });
            var tv2 = TagValues.Create(new List <string>()
            {
                "v1", "v20"
            });
            var tv3 = TagValues.Create(new List <string>()
            {
                "v2", "v10"
            });

            StatsTestUtil.AssertAggregationMapEquals(
                viewData.AggregationMap,
                new Dictionary <TagValues, IAggregationData>()
            {
                { tv1, StatsTestUtil.CreateAggregationData(Distribution, MeasureDouble, 1.1, 4.4) },
                { tv2, StatsTestUtil.CreateAggregationData(Distribution, MeasureDouble, 2.2) },
                { tv3, StatsTestUtil.CreateAggregationData(Distribution, MeasureDouble, 3.3) },
            },
                Epsilon);
        }