コード例 #1
0
        public void CreateMetrics_CountAgg_ReturnsExpected()
        {
            var opts          = new CloudFoundryForwarderOptions();
            var stats         = new OpenCensusStats();
            var tagsComponent = new TagsComponent();
            var tagger        = tagsComponent.Tagger;
            var ep            = new CloudFoundryForwarderExporter(opts, stats);

            IMeasureDouble testMeasure = MeasureDouble.Create("test.total", "test", MeasureUnit.Bytes);

            SetupTestView(stats, Count.Create(), testMeasure, "test.test1");

            ITagContext context1 = tagger
                                   .EmptyBuilder
                                   .Put(TagKey.Create("a"), TagValue.Create("v1"))
                                   .Put(TagKey.Create("b"), TagValue.Create("v1"))
                                   .Put(TagKey.Create("c"), TagValue.Create("v1"))
                                   .Build();

            long allKeyssum = 0;

            for (int i = 0; i < 10; i++)
            {
                allKeyssum = allKeyssum + i;
                stats.StatsRecorder.NewMeasureMap().Put(testMeasure, i).Record(context1);
            }

            var viewData = stats.ViewManager.GetView(ViewName.Create("test.test1"));

            Assert.NotNull(viewData);
            var aggMap = viewData.AggregationMap;

            Assert.Single(aggMap);

            var tagValues = aggMap.Keys.Single();
            var data      = aggMap.Values.Single();

            Assert.NotNull(tagValues);
            Assert.NotNull(data);

            var result = ep.CreateMetrics(tagValues, data, viewData, 1L);

            Assert.NotNull(result);
            Assert.Single(result);
            var metric = result[0];

            Assert.Equal("test.test1", metric.Name);
            Assert.Equal(1L, metric.Timestamp);
            Assert.Equal("gauge", metric.Type);
            Assert.Equal("bytes", metric.Unit);
            Assert.Equal(10, metric.Value);
            var tags = metric.Tags;

            Assert.Equal("count", tags["statistic"]);
            Assert.Equal("v1", tags["a"]);
            Assert.Equal("v1", tags["b"]);
            Assert.Equal("v1", tags["c"]);
        }
コード例 #2
0
        public void CreateMetricsFromViewData_ReturnsExpected()
        {
            var opts = new CloudFoundryForwarderOptions()
            {
                MicrometerMetricWriter = true
            };

            var stats         = new OpenCensusStats();
            var tagsComponent = new TagsComponent();
            var tagger        = tagsComponent.Tagger;
            var ep            = new CloudFoundryForwarderExporter(opts, stats);

            var testMeasure = MeasureDouble.Create("test.total", "test", MeasureUnit.Bytes);

            SetupTestView(stats, Sum.Create(), testMeasure, "test.test1");

            var context1 = tagger
                           .EmptyBuilder
                           .Put(TagKey.Create("a"), TagValue.Create("v1"))
                           .Put(TagKey.Create("b"), TagValue.Create("v1"))
                           .Put(TagKey.Create("c"), TagValue.Create("v1"))
                           .Build();

            long allKeyssum = 0;

            for (var i = 0; i < 10; i++)
            {
                allKeyssum = allKeyssum + i;
                stats.StatsRecorder.NewMeasureMap().Put(testMeasure, i).Record(context1);
            }

            var viewData = stats.ViewManager.GetView(ViewName.Create("test.test1"));
            var result   = ep.CreateMetricsFromViewData(viewData, 1L);

            Assert.NotNull(result);
            Assert.Single(result);
            var metric = result[0];

            Assert.Equal("test.test1", metric.Name);
            Assert.Equal(1L, metric.Timestamp);
            Assert.Equal("gauge", metric.Type);
            Assert.Equal("bytes", metric.Unit);
            Assert.Equal(allKeyssum, metric.Value);
            var tags = metric.Tags;

            Assert.Equal("total", tags["statistic"]);
            Assert.Equal("v1", tags["a"]);
            Assert.Equal("v1", tags["b"]);
            Assert.Equal("v1", tags["c"]);
        }
コード例 #3
0
        public void GetTagKeysAndValues_ReturnsExpected()
        {
            var opts  = new CloudFoundryForwarderOptions();
            var stats = new OpenCensusStats();
            var ep    = new CloudFoundryForwarderExporter(opts, stats);

            IList <ITagKey> keys = new List <ITagKey>()
            {
                TagKey.Create("key1"), TagKey.Create("key2")
            };
            IList <ITagValue> values = new List <ITagValue>()
            {
                TagValue.Create("v1"), TagValue.Create("v2")
            };

            var result = ep.GetTagKeysAndValues(keys, values);

            Assert.Equal("v1", result["key1"]);
            Assert.Equal("v2", result["key2"]);

            values = new List <ITagValue>()
            {
                TagValue.Create("v1"), null
            };

            result = ep.GetTagKeysAndValues(keys, values);
            Assert.Equal("v1", result["key1"]);
            Assert.Single(result);

            values = new List <ITagValue>()
            {
                null, TagValue.Create("v2"),
            };

            result = ep.GetTagKeysAndValues(keys, values);
            Assert.Equal("v2", result["key2"]);
            Assert.Single(result);

            values = new List <ITagValue>()
            {
                TagValue.Create("v1"),
            };

            result = ep.GetTagKeysAndValues(keys, values);
            Assert.Empty(result);
        }
コード例 #4
0
        public void GetMessage_ReturnsExpected()
        {
            var configsource = new Dictionary <string, string>
            {
                { "application:InstanceId", "InstanceId" },
                { "application:InstanceIndex", "1" },
                { "application:ApplicationId", "ApplicationId" },
                { "management:metrics:exporter:cloudfoundry:MicrometerMetricWriter", "true" }
            };
            var config        = TestHelpers.GetConfigurationFromDictionary(configsource);
            var opts          = new CloudFoundryForwarderOptions(new ApplicationInstanceInfo(config), new ServicesOptions(config), config);
            var stats         = new OpenCensusStats();
            var tagsComponent = new TagsComponent();
            var tagger        = tagsComponent.Tagger;
            var ep            = new CloudFoundryForwarderExporter(opts, stats);

            var testMeasure = MeasureDouble.Create("test.total", "test", MeasureUnit.Bytes);

            SetupTestView(stats, Sum.Create(), testMeasure, "test.test1");

            var context1 = tagger
                           .EmptyBuilder
                           .Put(TagKey.Create("a"), TagValue.Create("v1"))
                           .Put(TagKey.Create("b"), TagValue.Create("v1"))
                           .Put(TagKey.Create("c"), TagValue.Create("v1"))
                           .Build();

            long allKeyssum = 0;

            for (var i = 0; i < 10; i++)
            {
                allKeyssum = allKeyssum + i;
                stats.StatsRecorder.NewMeasureMap().Put(testMeasure, i).Record(context1);
            }

            var message = ep.GetMessage(stats.ViewManager.AllExportedViews, 1L);

            Assert.NotNull(message);
            var result = Serialize(message);

            Assert.Equal("{\"applications\":[{\"id\":\"ApplicationId\",\"instances\":[{\"id\":\"InstanceId\",\"index\":\"1\",\"metrics\":[{\"name\":\"test.test1\",\"tags\":{\"a\":\"v1\",\"b\":\"v1\",\"c\":\"v1\",\"statistic\":\"total\"},\"timestamp\":1,\"type\":\"gauge\",\"unit\":\"bytes\",\"value\":45.0}]}]}]}", result);
        }
コード例 #5
0
        public void GetStatistic_ReturnsExpected()
        {
            var opts  = new CloudFoundryForwarderOptions();
            var stats = new OpenCensusStats();
            var ep    = new CloudFoundryForwarderExporter(opts, stats);

            var m1     = MeasureDouble.Create("test.totalTime", "test", MeasureUnit.Seconds);
            var result = ep.GetStatistic(Sum.Create(), m1);

            Assert.Equal("totalTime", result);

            var m2 = MeasureDouble.Create("test.value", "test", MeasureUnit.Seconds);

            result = ep.GetStatistic(LastValue.Create(), m2);
            Assert.Equal("value", result);

            var m3 = MeasureDouble.Create("test.count", "test", MeasureUnit.Seconds);

            result = ep.GetStatistic(Count.Create(), m3);
            Assert.Equal("count", result);

            var m4 = MeasureDouble.Create("test.sum", "test", MeasureUnit.Bytes);

            result = ep.GetStatistic(Sum.Create(), m4);
            Assert.Equal("total", result);

            var m5 = MeasureDouble.Create("foobar", "test", MeasureUnit.Seconds);

            result = ep.GetStatistic(Distribution.Create(BucketBoundaries.Create(new List <double>()
            {
                0.0, 1.0, 5.0, 10.0, 100.0
            })), m5);
            Assert.Equal("totalTime", result);

            var m6 = MeasureDouble.Create("foobar", "test", MeasureUnit.Bytes);

            result = ep.GetStatistic(Distribution.Create(BucketBoundaries.Create(new List <double>()
            {
                0.0, 1.0, 5.0, 10.0, 100.0
            })), m6);
            Assert.Equal("total", result);
        }
コード例 #6
0
        public void GetMessage_ReturnsExpected()
        {
            var opts = new CloudFoundryForwarderOptions()
            {
                InstanceId             = "InstanceId",
                InstanceIndex          = "InstanceIndex",
                ApplicationId          = "ApplicationId",
                MicrometerMetricWriter = true
            };
            var stats         = new OpenCensusStats();
            var tagsComponent = new TagsComponent();
            var tagger        = tagsComponent.Tagger;
            var ep            = new CloudFoundryForwarderExporter(opts, stats);

            IMeasureDouble testMeasure = MeasureDouble.Create("test.total", "test", MeasureUnit.Bytes);

            SetupTestView(stats, Sum.Create(), testMeasure, "test.test1");

            ITagContext context1 = tagger
                                   .EmptyBuilder
                                   .Put(TagKey.Create("a"), TagValue.Create("v1"))
                                   .Put(TagKey.Create("b"), TagValue.Create("v1"))
                                   .Put(TagKey.Create("c"), TagValue.Create("v1"))
                                   .Build();

            long allKeyssum = 0;

            for (int i = 0; i < 10; i++)
            {
                allKeyssum = allKeyssum + i;
                stats.StatsRecorder.NewMeasureMap().Put(testMeasure, i).Record(context1);
            }

            var message = ep.GetMessage(stats.ViewManager.AllExportedViews, 1L);

            Assert.NotNull(message);
            var result = Serialize(message);

            Assert.Equal("{\"applications\":[{\"id\":\"ApplicationId\",\"instances\":[{\"id\":\"InstanceId\",\"index\":\"InstanceIndex\",\"metrics\":[{\"name\":\"test.test1\",\"tags\":{\"a\":\"v1\",\"b\":\"v1\",\"c\":\"v1\",\"statistic\":\"total\"},\"timestamp\":1,\"type\":\"gauge\",\"unit\":\"bytes\",\"value\":45.0}]}]}]}", result);
        }