Exemple #1
0
        public void HandleStopEvent_RecordsStats()
        {
            var options  = new MetricsOptions();
            var stats    = new OpenCensusStats();
            var tags     = new OpenCensusTags();
            var observer = new HttpClientDesktopObserver(options, stats, tags, null);

            var req = GetHttpRequestMessage();

            Activity act = new Activity("Test");

            act.Start();
            Thread.Sleep(1000);
            act.SetEndTime(DateTime.UtcNow);

            observer.HandleStopEvent(act, req, HttpStatusCode.InternalServerError);
            observer.HandleStopEvent(act, req, HttpStatusCode.OK);

            var reqData  = stats.ViewManager.GetView(ViewName.Create("http.desktop.client.requests"));
            var aggData1 = reqData.SumWithTags() as IDistributionData;

            Assert.InRange(aggData1.Mean, 995.0, 1005.0);
            Assert.InRange(aggData1.Max, 995.0, 1005.0);

            reqData = stats.ViewManager.GetView(ViewName.Create("http.desktop.client.count"));
            var aggData2 = reqData.SumWithTags() as ISumDataLong;

            Assert.Equal(2, aggData2.Sum);

            act.Stop();
        }
Exemple #2
0
        public OwinHostingObserver(IMetricsOptions options, IStats censusStats, ITags censusTags, ILogger <OwinHostingObserver> logger)
            : base(OBSERVER_NAME, DIAGNOSTIC_NAME, options, censusStats, censusTags, logger)
        {
            PathMatcher = new Regex(options.IngressIgnorePattern);

            responseTimeMeasure = MeasureDouble.Create("server.owin.totalTime", "Total request time", MeasureUnit.MilliSeconds);
            serverCountMeasure  = MeasureLong.Create("server.owin.totalRequests", "Total request count", "count");

            var view = View.Create(
                ViewName.Create("http.server.request.time"),
                "Total request time",
                responseTimeMeasure,
                Distribution.Create(BucketBoundaries.Create(new List <double>()
            {
                0.0, 1.0, 5.0, 10.0, 100.0
            })),
                new List <ITagKey>()
            {
                statusTagKey, exceptionTagKey, methodTagKey, uriTagKey
            });

            ViewManager.RegisterView(view);

            view = View.Create(
                ViewName.Create("http.server.request.count"),
                "Total request counts",
                serverCountMeasure,
                Sum.Create(),
                new List <ITagKey>()
            {
                statusTagKey, exceptionTagKey, methodTagKey, uriTagKey
            });

            ViewManager.RegisterView(view);
        }
Exemple #3
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 MicrometerMetricWriter(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(viewData, data, tagValues, 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"]);
        }
Exemple #4
0
        public void Constructor_RegistersExpectedViews()
        {
            var options  = new MetricsOptions();
            var stats    = new OpenCensusStats();
            var tags     = new OpenCensusTags();
            var observer = new AspNetCoreHostingObserver(options, stats, tags, null);

            Assert.NotNull(stats.ViewManager.GetView(ViewName.Create("http.server.requests")));
        }
Exemple #5
0
        public void HandleThreadsEvent_RecordsValues()
        {
            var options  = new MetricsEndpointOptions();
            var stats    = new OpenCensusStats();
            var tags     = new OpenCensusTags();
            var observer = new CLRRuntimeObserver(options, stats, tags, null);

            CLRRuntimeSource.ThreadMetrics metrics = new CLRRuntimeSource.ThreadMetrics(100, 100, 200, 200);
            observer.HandleThreadsEvent(metrics);

            var live    = stats.ViewManager.GetView(ViewName.Create("clr.threadpool.active"));
            var aggData = MetricsHelpers.SumWithTags(live) as IMeanData;

            Assert.Equal(100, aggData.Mean);
            Assert.Equal(100, aggData.Min);
            Assert.Equal(100, aggData.Max);

            aggData = MetricsHelpers.SumWithTags(live, new List <ITagValue>()
            {
                TagValue.Create("worker")
            }) as IMeanData;
            Assert.Equal(100, aggData.Mean);
            Assert.Equal(100, aggData.Min);
            Assert.Equal(100, aggData.Max);

            aggData = MetricsHelpers.SumWithTags(live, new List <ITagValue>()
            {
                TagValue.Create("completionPort")
            }) as IMeanData;
            Assert.Equal(100, aggData.Mean);
            Assert.Equal(100, aggData.Min);
            Assert.Equal(100, aggData.Max);

            var avail = stats.ViewManager.GetView(ViewName.Create("clr.threadpool.avail"));

            aggData = MetricsHelpers.SumWithTags(avail) as IMeanData;
            Assert.Equal(100, aggData.Mean);
            Assert.Equal(100, aggData.Min);
            Assert.Equal(100, aggData.Max);

            aggData = MetricsHelpers.SumWithTags(avail, new List <ITagValue>()
            {
                TagValue.Create("worker")
            }) as IMeanData;
            Assert.Equal(100, aggData.Mean);
            Assert.Equal(100, aggData.Min);
            Assert.Equal(100, aggData.Max);

            aggData = MetricsHelpers.SumWithTags(avail, new List <ITagValue>()
            {
                TagValue.Create("completionPort")
            }) as IMeanData;
            Assert.Equal(100, aggData.Mean);
            Assert.Equal(100, aggData.Min);
            Assert.Equal(100, aggData.Max);
        }
Exemple #6
0
        public void Constructor_RegistersExpectedViews()
        {
            var options  = new MetricsEndpointOptions();
            var stats    = new OpenCensusStats();
            var tags     = new OpenCensusTags();
            var observer = new HttpClientDesktopObserver(options, stats, tags, null);

            Assert.NotNull(stats.ViewManager.GetView(ViewName.Create("http.desktop.client.request.time")));
            Assert.NotNull(stats.ViewManager.GetView(ViewName.Create("http.desktop.client.request.count")));
        }
        public void PreventTooLongViewName()
        {
            char[] chars = new char[ViewName.NAME_MAX_LENGTH + 1];
            for (int i = 0; i < chars.Length; i++)
            {
                chars[i] = 'a';
            }
            String longName = new String(chars);

            Assert.Throws <ArgumentOutOfRangeException>(() => ViewName.Create(longName));
        }
Exemple #8
0
        public void Constructor_RegistersExpectedViews()
        {
            var options  = new MetricsEndpointOptions();
            var stats    = new OpenCensusStats();
            var tags     = new OpenCensusTags();
            var observer = new CLRRuntimeObserver(options, stats, tags, null);

            Assert.NotNull(stats.ViewManager.GetView(ViewName.Create("clr.memory.used")));
            Assert.NotNull(stats.ViewManager.GetView(ViewName.Create("clr.gc.collections")));
            Assert.NotNull(stats.ViewManager.GetView(ViewName.Create("clr.threadpool.active")));
            Assert.NotNull(stats.ViewManager.GetView(ViewName.Create("clr.threadpool.avail")));
        }
        private static void ConfigureOpencensus(string zipkinUri, string appInsightsKey)
        {
            //if we want to have multiple tracers
            //we should use agent mode and send first to agent

            var ocExp = new OpenCensus.Exporter.Ocagent.OcagentExporter(
                Tracing.ExportComponent
                , "http://localhost:55678"
                , Environment.MachineName
                , "distributedtracingdemo"
                );

            ocExp.Start();
            if (!string.IsNullOrEmpty(zipkinUri))
            {
                var zipK = new ZipkinTraceExporter(
                    new ZipkinTraceExporterOptions()
                {
                    Endpoint    = new Uri(zipkinUri),
                    ServiceName = "tracing-to-zipkin-service",
                },
                    Tracing.ExportComponent
                    );
                zipK.Start();
            }
            if (!string.IsNullOrEmpty(appInsightsKey))
            {
                var config = new TelemetryConfiguration(appInsightsKey);
                var appI   = new ApplicationInsightsExporter(
                    Tracing.ExportComponent,
                    Stats.ViewManager,
                    config);
                appI.Start();
            }

            //Metrics
            //define the measure to be used
            // context fields defined, that will be attached
            var invokeView = View.Create(ViewName.Create("executioncounts"), "Number of execs", numberofInvocations, Count.Create(), new[] { tagEnv, tagMachine });

            //register
            Stats.ViewManager.RegisterView(invokeView);

            // 2. Configure 100% sample rate for the purposes of the demo
            ITraceConfig traceConfig   = Tracing.TraceConfig;
            ITraceParams currentConfig = traceConfig.ActiveTraceParams;
            var          newConfig     = currentConfig.ToBuilder()
                                         .SetSampler(Samplers.AlwaysSample)
                                         .Build();

            traceConfig.UpdateActiveTraceParams(newConfig);
        }
Exemple #10
0
 private string viewNameValidate(string str)
 {
     try
     {
         Model.ViewName.Value = ViewName.Create(str);
         return(null);
     }
     catch (Exception ex)
     {
         Model.ViewName.Value = ViewName.NullObject;
         return(ex.Message);
     }
 }
        public void PreventTooLongViewName()
        {
            var chars = new char[ViewName.NameMaxLength + 1];

            for (var i = 0; i < chars.Length; i++)
            {
                chars[i] = 'a';
            }

            var longName = new String(chars);

            Assert.Throws <ArgumentOutOfRangeException>(() => ViewName.Create(longName));
        }
Exemple #12
0
        protected internal MetricsResponse GetMetric(MetricsRequest request)
        {
            var viewData = _stats.ViewManager.GetView(ViewName.Create(request.MetricName));

            if (viewData == null)
            {
                return(null);
            }

            List <MetricSample> measurements = GetMetricMeasurements(viewData, request.Tags);
            List <MetricTag>    availTags    = GetAvailableTags(viewData);

            return(new MetricsResponse(request.MetricName, measurements, availTags));
        }
        protected internal void RegisterViews()
        {
            IView view = View.Create(
                ViewName.Create("clr.memory.used"),
                "Current CLR memory usage",
                memoryUsedMeasure,
                Mean.Create(),
                new List <ITagKey>()
            {
                memoryAreaKey
            });

            ViewManager.RegisterView(view);

            view = View.Create(
                ViewName.Create("clr.gc.collections"),
                "Garbage collection count",
                collectionCountMeasure,
                Sum.Create(),
                new List <ITagKey>()
            {
                generationKey
            });
            ViewManager.RegisterView(view);

            view = View.Create(
                ViewName.Create("clr.threadpool.active"),
                "Active thread count",
                activeThreadsMeasure,
                Mean.Create(),
                new List <ITagKey>()
            {
                threadKindKey
            });
            ViewManager.RegisterView(view);

            view = View.Create(
                ViewName.Create("clr.threadpool.avail"),
                "Available thread count",
                availThreadsMeasure,
                Mean.Create(),
                new List <ITagKey>()
            {
                threadKindKey
            });
            ViewManager.RegisterView(view);
        }
Exemple #14
0
        private void SetupStats(OpenCensusStats stats)
        {
            var exceptionKey = TagKey.Create("exception");
            var methodKey    = TagKey.Create("method");
            var uriKey       = TagKey.Create("uri");
            var statusKey    = TagKey.Create("status");

            var httpServerRquestMeasure = MeasureDouble.Create("server.totalTime", "server request times", MeasureUnit.MilliSeconds);

            var httpServerRequestsViewName = ViewName.Create("http.server.requests");
            var httpServerRequestsView     = View.Create(
                httpServerRequestsViewName,
                "server request times",
                httpServerRquestMeasure,
                Distribution.Create(BucketBoundaries.Create(new List <double>()
            {
                0.0, 1.0, 2.0
            })),
                new List <ITagKey>()
            {
                exceptionKey, methodKey, uriKey, statusKey
            });

            stats.ViewManager.RegisterView(httpServerRequestsView);

            var area = TagKey.Create("area");
            var id   = TagKey.Create("id");

            var memoryUsageMeasure = MeasureDouble.Create("memory.value", "memory usage", MeasureUnit.Bytes);

            var memoryUsageName = ViewName.Create("jvm.memory.used");
            var memoryUsageView = View.Create(
                memoryUsageName,
                "memory usage",
                memoryUsageMeasure,
                Distribution.Create(BucketBoundaries.Create(new List <double>()
            {
                0.0, 1000.0, 10000.0, 100000.0, 1000000.0, 10000000.0, 100000000.0
            })),
                new List <ITagKey>()
            {
                area, id
            });

            stats.ViewManager.RegisterView(memoryUsageView);
        }
        public void GetAllExportedViews_ResultIsUnmodifiable()
        {
            IViewManager viewManager = NoopStats.NewNoopViewManager();
            IView        view1       =
                View.Create(
                    ViewName.Create("View 1"), VIEW_DESCRIPTION, MEASURE, AGGREGATION, new List <ITagKey> {
                KEY
            });

            viewManager.RegisterView(view1);
            ISet <IView> exported = viewManager.AllExportedViews;

            IView view2 =
                View.Create(
                    ViewName.Create("View 2"), VIEW_DESCRIPTION, MEASURE, AGGREGATION, new List <ITagKey> {
                KEY
            });

            Assert.Throws <NotSupportedException>(() => exported.Add(view2));
        }
Exemple #16
0
        private void SetupTestView(OpenCensusStats stats)
        {
            var tagsComponent = new TagsComponent();
            var tagger        = tagsComponent.Tagger;

            ITagKey aKey = TagKey.Create("a");
            ITagKey bKey = TagKey.Create("b");
            ITagKey cKey = TagKey.Create("c");

            string         viewName = "test.test";
            IMeasureDouble measure  = MeasureDouble.Create(Guid.NewGuid().ToString(), "test", MeasureUnit.Bytes);

            IViewName testViewName = ViewName.Create(viewName);
            IView     testView     = View.Create(
                testViewName,
                "test",
                measure,
                Sum.Create(),
                new List <ITagKey>()
            {
                aKey, bKey, cKey
            });

            stats.ViewManager.RegisterView(testView);

            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();

            for (int i = 0; i < 10; i++)
            {
                stats.StatsRecorder.NewMeasureMap().Put(measure, i).Record(context1);
            }
        }
        public void SetupTestView(OpenCensusStats stats, IAggregation agg, IMeasure measure = null, string viewName = "test.test")
        {
            ITagKey aKey = TagKey.Create("a");
            ITagKey bKey = TagKey.Create("b");
            ITagKey cKey = TagKey.Create("c");

            if (measure == null)
            {
                measure = MeasureDouble.Create(Guid.NewGuid().ToString(), "test", MeasureUnit.Bytes);
            }

            IViewName testViewName = ViewName.Create(viewName);
            IView     testView     = View.Create(
                testViewName,
                "test",
                measure,
                agg,
                new List <ITagKey>()
            {
                aKey, bKey, cKey
            });

            stats.ViewManager.RegisterView(testView);
        }
Exemple #18
0
        private void SetupTestView(OpenCensusStats stats, IAggregation agg, IMeasure measure = null, string viewName = "test.test")
        {
            var aKey = TagKey.Create("a");
            var bKey = TagKey.Create("b");
            var cKey = TagKey.Create("c");

            if (measure == null)
            {
                measure = MeasureDouble.Create(Guid.NewGuid().ToString(), "test", MeasureUnit.MilliSeconds);
            }

            var testViewName = ViewName.Create(viewName);
            var testView     = View.Create(
                testViewName,
                "test",
                measure,
                agg,
                new List <ITagKey>()
            {
                aKey, bKey, cKey
            });

            stats.ViewManager.RegisterView(testView);
        }
 public void PreventNullNameString()
 {
     Assert.Throws <ArgumentNullException>(() => ViewName.Create(null));
 }
 public void PreventNonPrintableViewName()
 {
     Assert.Throws <ArgumentOutOfRangeException>(() => ViewName.Create("\u0002"));
 }
 public void TestViewName()
 {
     Assert.Equal("my name", ViewName.Create("my name").AsString);
 }
 private static IViewName CreateRandomViewName()
 {
     return(ViewName.Create(RandomString(RANDOM_NAME_LEN)));
 }
 public MessageBrokerViewModel(IEventAggregator eventAggregator)
 {
     MessageBrokerCommand.Subscribe(_ => Reactive.Bindings.Notifiers.MessageBroker.Default.Publish <SampleNameChange>(new SampleNameChange(SampleName.Create(MessageBrokerName.Value), ViewName.Create("MessageBrokerView")))).AddTo(DisposeCollection);
     PubSubEventCommand.Subscribe(_ => eventAggregator.GetEvent <SampleNameChangeEvent>().Publish(new SampleNameChange(SampleName.Create(MessageBrokerName.Value), ViewName.Create("MessageBrokerView")))).AddTo(DisposeCollection);
 }
Exemple #24
0
        public OpenTelemetryCollectorLogger(IStatsRecorder statsRecorder, ITagger tagger, ITagContext defaultTags = null)
        {
            this.statsRecorder = statsRecorder;
            this.tagger        = tagger;
            // configure defaultTags included as default tag
            this.defaultTags = defaultTags ?? TagContext.Empty;
            if (defaultTags != TagContext.Empty)
            {
                foreach (var tag in defaultTags)
                {
                    TagKeys.Add(tag.Key);
                }
            }

            // Create Views
            var buildServiceDefinitionView = View.Create(
                name: ViewName.Create(BuildServiceDefinitionName),
                description: "Build ServiceDefinition elapsed time(ms)",
                measure: BuildServiceDefinition,
                aggregation: Sum.Create(),
                columns: TagKeys);
            var unaryRequestCountView = View.Create(
                name: ViewName.Create(UnaryRequestCountName),
                description: "Request count for Unary request.",
                measure: UnaryRequestCount,
                aggregation: Sum.Create(),
                columns: TagKeys);
            var unaryResponseSizeView = View.Create(
                name: ViewName.Create(UnaryResponseSizeName),
                description: "Response size for Unary response.",
                measure: UnaryResponseSize,
                aggregation: Sum.Create(),
                columns: TagKeys);
            var unaryErrorCountView = View.Create(
                name: ViewName.Create(UnaryErrorCountName),
                description: "Error count for Unary request.",
                measure: UnaryErrorCount,
                aggregation: Sum.Create(),
                columns: TagKeys);
            var unaryElapsedView = View.Create(
                name: ViewName.Create(UnaryElapsedName),
                description: "Elapsed time for Unary request.",
                measure: UnaryElapsed,
                aggregation: Sum.Create(),
                columns: TagKeys);
            var streamingHubErrorCountView = View.Create(
                name: ViewName.Create(StreamingHubErrorCountName),
                description: "Error count for Streaminghub request.",
                measure: StreamingHubErrorCount,
                aggregation: Sum.Create(),
                columns: TagKeys);
            var streamingHubElapsedView = View.Create(
                name: ViewName.Create(StreamingHubElapsedName),
                description: "Elapsed time for Streaminghub request.",
                measure: StreamingHubElapsed,
                aggregation: Sum.Create(),
                columns: TagKeys);
            var streamingHubRequestCountView = View.Create(
                name: ViewName.Create(StreamingHubRequestCountName),
                description: "Request count for Streaminghub request.",
                measure: StreamingHubRequestCount,
                aggregation: Sum.Create(),
                columns: TagKeys);
            var streamingHubResponseSizeView = View.Create(
                name: ViewName.Create(StreamingHubResponseSizeName),
                description: "Response size for Streaminghub request.",
                measure: StreamingHubResponseSize,
                aggregation: Sum.Create(),
                columns: TagKeys);
            var connectCountView = View.Create(
                name: ViewName.Create(ConnectCountName),
                description: "Connect count for Streaminghub request. ConnectCount - DisconnectCount = current connect count. (successfully disconnected)",
                measure: ConnectCount,
                aggregation: Sum.Create(),
                columns: TagKeys);
            var disconnectCountView = View.Create(
                name: ViewName.Create(DisconnectCountName),
                description: "Disconnect count for Streaminghub request. ConnectCount - DisconnectCount = current connect count. (successfully disconnected)",
                measure: DisconnectCount,
                aggregation: Sum.Create(),
                columns: TagKeys);

            // Register Views
            Stats.ViewManager.RegisterView(buildServiceDefinitionView);
            Stats.ViewManager.RegisterView(unaryRequestCountView);
            Stats.ViewManager.RegisterView(unaryResponseSizeView);
            Stats.ViewManager.RegisterView(unaryErrorCountView);
            Stats.ViewManager.RegisterView(unaryElapsedView);
            Stats.ViewManager.RegisterView(connectCountView);
            Stats.ViewManager.RegisterView(disconnectCountView);
            Stats.ViewManager.RegisterView(streamingHubRequestCountView);
            Stats.ViewManager.RegisterView(streamingHubResponseSizeView);
            Stats.ViewManager.RegisterView(streamingHubErrorCountView);
            Stats.ViewManager.RegisterView(streamingHubElapsedView);
        }
        public void Main()
        {
            var statsComponent = new StatsComponent();
            var viewManager    = statsComponent.ViewManager;
            var statsRecorder  = statsComponent.StatsRecorder;
            var tagsComponent  = new TagsComponent();
            var tagger         = tagsComponent.Tagger;

            ITagKey FRONTEND_KEY            = TagKey.Create("my.org/keys/frontend");
            ITagKey FRONTEND_OS_KEY         = TagKey.Create("my.org/keys/frontend/os");
            ITagKey FRONTEND_OS_VERSION_KEY = TagKey.Create("my.org/keys/frontend/os/version");

            IMeasureLong VIDEO_SIZE = MeasureLong.Create("my.org/measure/video_size", "size of processed videos", "MBy");

            IViewName VIDEO_SIZE_BY_FRONTEND_VIEW_NAME = ViewName.Create("my.org/views/video_size_byfrontend");
            IView     VIDEO_SIZE_BY_FRONTEND_VIEW      = View.Create(
                VIDEO_SIZE_BY_FRONTEND_VIEW_NAME,
                "processed video size over time",
                VIDEO_SIZE,
                Distribution.Create(BucketBoundaries.Create(new List <double>()
            {
                0.0, 256.0, 65536.0
            })),
                new List <ITagKey>()
            {
                FRONTEND_KEY
            });

            IViewName VIDEO_SIZE_ALL_VIEW_NAME = ViewName.Create("my.org/views/video_size_all");
            IView     VIDEO_SIZE_VIEW_ALL      = View.Create(
                VIDEO_SIZE_ALL_VIEW_NAME,
                "processed video size over time",
                VIDEO_SIZE,
                Distribution.Create(BucketBoundaries.Create(new List <double>()
            {
                0.0, 256.0, 65536.0
            })),
                new List <ITagKey>()
            {
            });


            IViewName VIDEO_SIZE_TOTAL_VIEW_NAME = ViewName.Create("my.org/views/video_size_total");
            IView     VIDEO_SIZE_TOTAL           = View.Create(
                VIDEO_SIZE_TOTAL_VIEW_NAME,
                "total video size over time",
                VIDEO_SIZE,
                Sum.Create(),
                new List <ITagKey>()
            {
                FRONTEND_KEY
            });

            IViewName VIDEOS_PROCESSED_VIEW_NAME = ViewName.Create("my.org/views/videos_processed");
            IView     VIDEOS_PROCESSED           = View.Create(
                VIDEOS_PROCESSED_VIEW_NAME,
                "total video processed",
                VIDEO_SIZE,
                Count.Create(),
                new List <ITagKey>()
            {
                FRONTEND_KEY
            });

            viewManager.RegisterView(VIDEO_SIZE_VIEW_ALL);
            viewManager.RegisterView(VIDEO_SIZE_BY_FRONTEND_VIEW);
            viewManager.RegisterView(VIDEO_SIZE_TOTAL);
            viewManager.RegisterView(VIDEOS_PROCESSED);

            ITagContext context1 = tagger
                                   .EmptyBuilder
                                   .Put(FRONTEND_KEY, TagValue.Create("front1"))
                                   .Build();
            ITagContext context2 = tagger
                                   .EmptyBuilder
                                   .Put(FRONTEND_KEY, TagValue.Create("front2"))
                                   .Build();

            long sum = 0;

            for (int i = 0; i < 10; i++)
            {
                sum = sum + (25648 * i);
                if (i % 2 == 0)
                {
                    statsRecorder.NewMeasureMap().Put(VIDEO_SIZE, 25648 * i).Record(context1);
                }
                else
                {
                    statsRecorder.NewMeasureMap().Put(VIDEO_SIZE, 25648 * i).Record(context2);
                }
            }

            IViewData viewDataByFrontend = viewManager.GetView(VIDEO_SIZE_BY_FRONTEND_VIEW_NAME);
            var       viewDataAggMap     = viewDataByFrontend.AggregationMap.ToList();

            output.WriteLine(viewDataByFrontend.ToString());

            IViewData viewDataAll       = viewManager.GetView(VIDEO_SIZE_ALL_VIEW_NAME);
            var       viewDataAggMapAll = viewDataAll.AggregationMap.ToList();

            output.WriteLine(viewDataAll.ToString());

            IViewData viewData1       = viewManager.GetView(VIDEO_SIZE_TOTAL_VIEW_NAME);
            var       viewData1AggMap = viewData1.AggregationMap.ToList();

            output.WriteLine(viewData1.ToString());

            IViewData viewData2       = viewManager.GetView(VIDEOS_PROCESSED_VIEW_NAME);
            var       viewData2AggMap = viewData2.AggregationMap.ToList();

            output.WriteLine(viewData2.ToString());

            output.WriteLine(sum.ToString());
        }
Exemple #26
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);
        }
 public void TestViewNameEquals()
 {
     Assert.Equal(ViewName.Create("view-1"), ViewName.Create("view-1"));
     Assert.NotEqual(ViewName.Create("view-1"), ViewName.Create("view-2"));
 }
Exemple #28
0
        public void GetMetricMeasurements_ReturnsExpected()
        {
            var opts          = new MetricsEndpointOptions();
            var stats         = new OpenCensusStats();
            var tagsComponent = new TagsComponent();
            var tagger        = tagsComponent.Tagger;
            var ep            = new MetricsEndpoint(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();

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

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

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

            long allKeyssum = 0;

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

            long asum = 0;

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

            long bsum = 0;

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

            long csum = 0;

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

            var alltags = new List <KeyValuePair <string, string> >()
            {
                new KeyValuePair <string, string>("a", "v1"),
                new KeyValuePair <string, string>("b", "v1"),
                new KeyValuePair <string, string>("c", "v1")
            };

            var viewData = stats.ViewManager.GetView(ViewName.Create("test.test1"));
            var result   = ep.GetMetricMeasurements(viewData, alltags);

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

            Assert.Equal(allKeyssum, sample.Value);
            Assert.Equal(MetricStatistic.TOTAL, sample.Statistic);

            var atags = new List <KeyValuePair <string, string> >()
            {
                new KeyValuePair <string, string>("a", "v1"),
            };

            result = ep.GetMetricMeasurements(viewData, atags);
            Assert.NotNull(result);
            Assert.Single(result);
            sample = result[0];
            Assert.Equal(allKeyssum + asum, sample.Value);
            Assert.Equal(MetricStatistic.TOTAL, sample.Statistic);

            var btags = new List <KeyValuePair <string, string> >()
            {
                new KeyValuePair <string, string>("b", "v1"),
            };

            result = ep.GetMetricMeasurements(viewData, btags);
            Assert.NotNull(result);
            Assert.Single(result);
            sample = result[0];
            Assert.Equal(allKeyssum + bsum, sample.Value);
            Assert.Equal(MetricStatistic.TOTAL, sample.Statistic);

            var ctags = new List <KeyValuePair <string, string> >()
            {
                new KeyValuePair <string, string>("c", "v1"),
            };

            result = ep.GetMetricMeasurements(viewData, ctags);
            Assert.NotNull(result);
            Assert.Single(result);
            sample = result[0];
            Assert.Equal(allKeyssum + csum, sample.Value);
            Assert.Equal(MetricStatistic.TOTAL, sample.Statistic);

            var abtags = new List <KeyValuePair <string, string> >()
            {
                new KeyValuePair <string, string>("a", "v1"),
                new KeyValuePair <string, string>("b", "v1"),
            };

            result = ep.GetMetricMeasurements(viewData, abtags);
            Assert.NotNull(result);
            Assert.Single(result);
            sample = result[0];
            Assert.Equal(allKeyssum, sample.Value);
            Assert.Equal(MetricStatistic.TOTAL, sample.Statistic);

            var actags = new List <KeyValuePair <string, string> >()
            {
                new KeyValuePair <string, string>("a", "v1"),
                new KeyValuePair <string, string>("c", "v1"),
            };

            result = ep.GetMetricMeasurements(viewData, actags);
            Assert.NotNull(result);
            Assert.Single(result);
            sample = result[0];
            Assert.Equal(allKeyssum, sample.Value);
            Assert.Equal(MetricStatistic.TOTAL, sample.Statistic);

            var bctags = new List <KeyValuePair <string, string> >()
            {
                new KeyValuePair <string, string>("b", "v1"),
                new KeyValuePair <string, string>("c", "v1"),
            };

            result = ep.GetMetricMeasurements(viewData, bctags);
            Assert.NotNull(result);
            Assert.Single(result);
            sample = result[0];
            Assert.Equal(allKeyssum, sample.Value);
            Assert.Equal(MetricStatistic.TOTAL, sample.Statistic);
        }
Exemple #29
0
        public void GetMetricSamples_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"));
            IAggregationData aggData = SumDataDouble.Create(100);

            Assert.NotNull(viewData);
            var result = ep.GetMetricSamples(aggData, viewData);

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

            Assert.Equal(100, sample.Value);
            Assert.Equal(MetricStatistic.TOTALTIME, sample.Statistic);

            SetupTestView(stats, Sum.Create(), null, "test.test2");
            viewData = stats.ViewManager.GetView(ViewName.Create("test.test2"));
            aggData  = SumDataLong.Create(100);

            Assert.NotNull(viewData);
            result = ep.GetMetricSamples(aggData, viewData);
            Assert.NotNull(result);
            Assert.Single(result);
            sample = result[0];
            Assert.Equal(100, sample.Value);
            Assert.Equal(MetricStatistic.TOTALTIME, sample.Statistic);

            SetupTestView(stats, Count.Create(), null, "test.test3");
            viewData = stats.ViewManager.GetView(ViewName.Create("test.test3"));
            aggData  = CountData.Create(100);

            Assert.NotNull(viewData);
            result = ep.GetMetricSamples(aggData, viewData);
            Assert.NotNull(result);
            Assert.Single(result);
            sample = result[0];
            Assert.Equal(100, sample.Value);
            Assert.Equal(MetricStatistic.COUNT, sample.Statistic);

            SetupTestView(stats, Mean.Create(), null, "test.test4");
            viewData = stats.ViewManager.GetView(ViewName.Create("test.test4"));
            aggData  = MeanData.Create(100, 50, 1, 500);

            Assert.NotNull(viewData);
            result = ep.GetMetricSamples(aggData, viewData);
            Assert.NotNull(result);
            Assert.Equal(2, result.Count);
            sample = result[0];
            Assert.Equal(50, sample.Value);
            Assert.Equal(MetricStatistic.COUNT, sample.Statistic);
            sample = result[1];
            Assert.Equal(100 * 50, sample.Value);
            Assert.Equal(MetricStatistic.TOTALTIME, sample.Statistic);

            SetupTestView(stats, Distribution.Create(BucketBoundaries.Create(new List <double>()
            {
                0.0, 10.0, 20.0
            })), null, "test.test5");
            viewData = stats.ViewManager.GetView(ViewName.Create("test.test5"));
            aggData  = DistributionData.Create(100, 50, 5, 200, 5, new List <long>()
            {
                10, 20, 20
            });

            Assert.NotNull(viewData);
            result = ep.GetMetricSamples(aggData, viewData);
            Assert.NotNull(result);
            Assert.Equal(3, result.Count);

            sample = result[0];
            Assert.Equal(50, sample.Value);
            Assert.Equal(MetricStatistic.COUNT, sample.Statistic);

            sample = result[1];
            Assert.Equal(200, sample.Value);
            Assert.Equal(MetricStatistic.MAX, sample.Statistic);

            sample = result[2];
            Assert.Equal(100 * 50, sample.Value);
            Assert.Equal(MetricStatistic.TOTALTIME, sample.Statistic);
        }
        public void Main2()
        {
            var statsComponent = new StatsComponent();
            var viewManager    = statsComponent.ViewManager;
            var statsRecorder  = statsComponent.StatsRecorder;
            var tagsComponent  = new TagsComponent();
            var tagger         = tagsComponent.Tagger;

            ITagKey FRONTEND_KEY            = TagKey.Create("my.org/keys/frontend");
            ITagKey FRONTEND_OS_KEY         = TagKey.Create("my.org/keys/frontend/os");
            ITagKey FRONTEND_OS_VERSION_KEY = TagKey.Create("my.org/keys/frontend/os/version");

            IMeasureLong VIDEO_SIZE = MeasureLong.Create("my.org/measure/video_size", "size of processed videos", "MBy");

            IViewName VIDEO_SIZE_VIEW_NAME = ViewName.Create("my.org/views/video_size_byfrontend");
            IView     VIDEO_SIZE_VIEW      = View.Create(
                VIDEO_SIZE_VIEW_NAME,
                "processed video size over time",
                VIDEO_SIZE,
                Distribution.Create(BucketBoundaries.Create(new List <double>()
            {
                0.0, 256.0, 65536.0
            })),
                new List <ITagKey>()
            {
                FRONTEND_KEY, FRONTEND_OS_KEY, FRONTEND_OS_VERSION_KEY
            });


            viewManager.RegisterView(VIDEO_SIZE_VIEW);


            ITagContext context1 = tagger
                                   .EmptyBuilder
                                   .Put(FRONTEND_KEY, TagValue.Create("front1"))
                                   .Put(FRONTEND_OS_KEY, TagValue.Create("windows"))
                                   .Build();
            ITagContext context2 = tagger
                                   .EmptyBuilder
                                   .Put(FRONTEND_KEY, TagValue.Create("front2"))
                                   .Put(FRONTEND_OS_VERSION_KEY, TagValue.Create("1.1.1"))
                                   .Build();

            long sum = 0;

            for (int i = 0; i < 10; i++)
            {
                sum = sum + (25648 * i);
                if (i % 2 == 0)
                {
                    statsRecorder.NewMeasureMap().Put(VIDEO_SIZE, 25648 * i).Record(context1);
                }
                else
                {
                    statsRecorder.NewMeasureMap().Put(VIDEO_SIZE, 25648 * i).Record(context2);
                }
            }

            IViewData videoSizeView  = viewManager.GetView(VIDEO_SIZE_VIEW_NAME);
            var       viewDataAggMap = videoSizeView.AggregationMap.ToList();
            var       view           = viewManager.AllExportedViews.ToList()[0];

            for (int i = 0; i < view.Columns.Count; i++)
            {
                output.WriteLine(view.Columns[i] + "=" + GetTagValues(i, viewDataAggMap));
            }

            var keys = new List <ITagValue>()
            {
                TagValue.Create("1.1.1")
            };

            var results = videoSizeView.AggregationMap.Where((kvp) =>
            {
                foreach (var key in keys)
                {
                    if (!kvp.Key.Values.Contains(key))
                    {
                        return(false);
                    }
                }
                return(true);
            });

            output.WriteLine(videoSizeView.ToString());

            output.WriteLine(sum.ToString());
        }