public static TagMap FindTagMapWithKey(int powerSNO, TagKey key) { Power power = (Power)MPQStorage.Data.Assets[SNOGroup.Power][powerSNO].Data; // TODO: figure out which tagmaps to search and in what order, eventually will probably // have to reorder them based on whether PvPing or not. TagMap[] tagMaps = new TagMap[] { power.Powerdef.GeneralTagMap, power.Powerdef.TagMap, power.Powerdef.ContactTagMap0, power.Powerdef.ContactTagMap1, power.Powerdef.ContactTagMap2, power.Powerdef.ContactTagMap3, power.Powerdef.PVPGeneralTagMap, power.Powerdef.PVPContactTagMap0, power.Powerdef.PVPContactTagMap1, power.Powerdef.PVPContactTagMap2, power.Powerdef.PVPContactTagMap3, }; foreach (TagMap tagmap in tagMaps) { if (tagmap.ContainsKey(key)) return tagmap; } return null; }
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); }
internal static IReadOnlyList <TagValue> GetTagValues(IDictionary <TagKey, TagValue> tags, IReadOnlyList <TagKey> columns) { List <TagValue> tagValues = new List <TagValue>(columns.Count); // Record all the measures in a "Greedy" way. // Every view aggregates every measure. This is similar to doing a GROUPBY view’s keys. for (int i = 0; i < columns.Count; ++i) { TagKey tagKey = columns[i]; if (!tags.ContainsKey(tagKey)) { // replace not found key values by null. tagValues.Add(UnknownTagValue); } else { tagValues.Add(tags[tagKey]); } } return(tagValues.AsReadOnly()); }
#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); }
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); }
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 TestSerializeTooLargeTagContext() { ITagContextBuilder builder = tagger.EmptyBuilder; for (int i = 0; i < (SerializationUtils.TAGCONTEXT_SERIALIZED_SIZE_LIMIT / 8) - 1; i++) { // Each tag will be with format {key : "0123", value : "0123"}, so the length of it is 8. string str; if (i < 10) { str = "000" + i; } else if (i < 100) { str = "00" + i; } else if (i < 1000) { str = "0" + i; } else { str = i.ToString(); } builder.Put(TagKey.Create(str), TagValue.Create(str)); } // The last tag will be of size 9, so the total size of the TagContext (8193) will be one byte // more than limit. builder.Put(TagKey.Create("last"), TagValue.Create("last1")); ITagContext tagContext = builder.Build(); Assert.Throws <TagContextSerializationException>(() => serializer.ToByteArray(tagContext)); }
public void TestRecordWithTagsThatDoNotMatchViewData() { Stats.State = StatsCollectionState.ENABLED; IView view = CreateCumulativeView(CreateRandomViewName(), MeasureDouble, Distribution, new List <TagKey>() { Key }); viewManager.RegisterView(view); statsRecorder .NewMeasureMap() .Put(MeasureDouble, 10.0) .Record(tagger.EmptyBuilder.Put(TagKey.Create("wrong key"), Value).Build()); statsRecorder .NewMeasureMap() .Put(MeasureDouble, 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 <TagValue>() { 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); }
public void GetTagContext_ReturnsExpected() { var options = new MetricsEndpointOptions(); var stats = new OpenCensusStats(); var tags = new OpenCensusTags(); var observer = new AspNetCoreHostingObserver(options, stats, tags, null); var context = GetHttpRequestMessage(); var exceptionHandlerFeature = new ExceptionHandlerFeature() { Error = new ArgumentNullException() }; context.Features.Set <IExceptionHandlerFeature>(exceptionHandlerFeature); context.Response.StatusCode = 404; var tagContext = observer.GetTagContext(context); var tagValues = tagContext.ToList(); tagValues.Contains(Tag.Create(TagKey.Create("exception"), TagValue.Create("ArgumentNullException"))); tagValues.Contains(Tag.Create(TagKey.Create("uri"), TagValue.Create("/foobar"))); tagValues.Contains(Tag.Create(TagKey.Create("status"), TagValue.Create("404"))); tagValues.Contains(Tag.Create(TagKey.Create("method"), TagValue.Create("GET"))); }
public void StopParsingAtUnknownField() { var output = new MemoryStream(); output.WriteByte(SerializationUtils.VersionId); EncodeTagToOutPut("Key1", "Value1", output); EncodeTagToOutPut("Key2", "Value2", output); // Write unknown field ID 1. output.WriteByte(1); output.Write(new byte[] { 1, 2, 3, 4 }, 0, 4); EncodeTagToOutPut("Key3", "Value3", output); // key 3 should not be included var expected = tagger .EmptyBuilder .Put(TagKey.Create("Key1"), TagValue.Create("Value1")) .Put(TagKey.Create("Key2"), TagValue.Create("Value2")) .Build(); Assert.Equal(expected, serializer.FromByteArray(output.ToArray())); }
public void TestViewDataWithMultipleTagKeys() { TagKey key1 = TagKey.Create("Key-1"); TagKey key2 = TagKey.Create("Key-2"); IView view = CreateCumulativeView(CreateRandomViewName(), MeasureDouble, Distribution, new List <TagKey>() { key1, key2 }); viewManager.RegisterView(view); statsRecorder .NewMeasureMap() .Put(MeasureDouble, 1.1) .Record( tagger .EmptyBuilder .Put(key1, TagValue.Create("v1")) .Put(key2, TagValue.Create("v10")) .Build()); statsRecorder .NewMeasureMap() .Put(MeasureDouble, 2.2) .Record( tagger .EmptyBuilder .Put(key1, TagValue.Create("v1")) .Put(key2, TagValue.Create("v20")) .Build()); statsRecorder .NewMeasureMap() .Put(MeasureDouble, 3.3) .Record( tagger .EmptyBuilder .Put(key1, TagValue.Create("v2")) .Put(key2, TagValue.Create("v10")) .Build()); statsRecorder .NewMeasureMap() .Put(MeasureDouble, 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 <TagValue>() { TagValue.Create("v1"), TagValue.Create("v10") }); var tv2 = TagValues.Create(new List <TagValue>() { TagValue.Create("v1"), TagValue.Create("v20") }); var tv3 = TagValues.Create(new List <TagValue>() { TagValue.Create("v2"), TagValue.Create("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); }
public void CreateString_DisallowEmpty() { Assert.Throws <ArgumentOutOfRangeException>(() => TagKey.Create(string.Empty)); }
public void Create_DisallowUnprintableChars() { Assert.Throws <ArgumentOutOfRangeException>(() => TagKey.Create("\u02ab\u03cd")); }
public void TestGetName() { Assert.Equal("foo", TagKey.Create("foo").Name); }
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); }
public void CreateMetrics_DistributionAgg_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.Seconds); SetupTestView(stats, Distribution.Create(BucketBoundaries.Create(new List <double>() { 0.0, 1.0, 5.0, 10.0, 100.0 })), 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.Equal(4, result.Count); var metric = result[0]; Assert.Equal("test.test1", metric.Name); Assert.Equal(1L, metric.Timestamp); Assert.Equal("gauge", metric.Type); Assert.Equal("count", 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"]); metric = result[1]; Assert.Equal("test.test1", metric.Name); Assert.Equal(1L, metric.Timestamp); Assert.Equal("gauge", metric.Type); Assert.Equal("seconds", metric.Unit); Assert.Equal((double)allKeyssum / 10.0, metric.Value); tags = metric.Tags; Assert.Equal("mean", tags["statistic"]); Assert.Equal("v1", tags["a"]); Assert.Equal("v1", tags["b"]); Assert.Equal("v1", tags["c"]); metric = result[2]; Assert.Equal("test.test1", metric.Name); Assert.Equal(1L, metric.Timestamp); Assert.Equal("gauge", metric.Type); Assert.Equal("seconds", metric.Unit); Assert.Equal(9, metric.Value); tags = metric.Tags; Assert.Equal("max", tags["statistic"]); Assert.Equal("v1", tags["a"]); Assert.Equal("v1", tags["b"]); Assert.Equal("v1", tags["c"]); metric = result[3]; Assert.Equal("test.test1", metric.Name); Assert.Equal(1L, metric.Timestamp); Assert.Equal("gauge", metric.Type); Assert.Equal("seconds", metric.Unit); Assert.Equal(allKeyssum, metric.Value); tags = metric.Tags; Assert.Equal("totalTime", tags["statistic"]); Assert.Equal("v1", tags["a"]); Assert.Equal("v1", tags["b"]); Assert.Equal("v1", tags["c"]); }
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()); }
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()); }
public void GetMetricName_ReturnsExpected() { var opts = new CloudFoundryForwarderOptions(); var stats = new OpenCensusStats(); var ep = new SpringBootMetricWriter(opts, stats); IList <ITagKey> keys = new List <ITagKey>() { TagKey.Create("status"), TagKey.Create("exception"), TagKey.Create("method"), TagKey.Create("uri") }; IList <ITagValue> values = new List <ITagValue>() { TagValue.Create("200"), TagValue.Create("None"), TagValue.Create("GET"), TagValue.Create("/foo/bar") }; var tagDict = ep.GetTagKeysAndValues(keys, values); Assert.Equal("http.server.requests.mean.GET.200.foo.bar", ep.GetMetricName("http.server.requests", "mean", tagDict)); Assert.Equal("http.server.requests.mean", ep.GetMetricName("http.server.requests", "mean", new Dictionary <string, string>())); keys = new List <ITagKey>() { TagKey.Create("foo"), TagKey.Create("bar") }; values = new List <ITagValue>() { TagValue.Create("foo"), TagValue.Create("bar") }; tagDict = ep.GetTagKeysAndValues(keys, values); Assert.Equal("http.server.requests.bar.foo", ep.GetMetricName("http.server.requests", null, tagDict)); }
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); }
public GrafanaModule() { Get("/", args => { return(new Response().WithStatusCode(HttpStatusCode.OK)); }); Post("/search", args => { var searchResponse = new List <SearchResponse> { new SearchResponse { Text = "upper_25", Value = 1 }, new SearchResponse { Text = "upper_75", Value = 2 } }; return(ConvertToJson(searchResponse)); }); Post("/query", args => { var request = this.Bind <QueryRequest>(); //generate random traffic foreach (var target in request.Targets) { if (target.Type == "timeserie") { var first = new QueryTimeserieResponse(); first.Target = target.Target; first.Datapoints = new List <List <double> > { new List <double> { new Random().Next(30, 1000), (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds } }; var isExistObject = queryResponseList.Find(x => x.Target == first.Target); if (isExistObject != null) { isExistObject.Datapoints.AddRange(first.Datapoints); } else { queryResponseList.Add(first); } } else { //process table format here } } //clear data if (queryResponseList.Count > MaxResponseList) { queryResponseList.Clear(); } return(ConvertToJson(queryResponseList)); }); Post("/annotations", args => { var request = this.Bind <AnatationRequest>(); //process annotations here. return(string.Empty); }); Post("/tag-keys", args => { var tags = new TagKey[2]; tags[0] = new TagKey { Type = "string", Text = "City" }; tags[1] = new TagKey { Type = "string", Text = "Country" }; return(JsonConvert.SerializeObject(tags)); }); Post("/tag-values", args => { var tags = new TagKey[2]; tags[0] = new TagKey { Type = "string", Text = "City" }; tags[1] = new TagKey { Type = "string", Text = "Country" }; return(JsonConvert.SerializeObject(tags)); }); }
public void TestGetKey() { Assert.Equal(TagKey.Create("k"), Tag.Create(TagKey.Create("k"), TagValue.Create("v")).Key); }
public void GetTagKeysAndValues_ReturnsExpected() { var opts = new CloudFoundryForwarderOptions(); var stats = new OpenCensusStats(); var ep = new SpringBootMetricWriter(opts, stats); IList <ITagKey> keys = new List <ITagKey>() { TagKey.Create("status"), TagKey.Create("exception"), TagKey.Create("method"), TagKey.Create("uri") }; IList <ITagValue> values = new List <ITagValue>() { TagValue.Create("v1"), TagValue.Create("v2"), TagValue.Create("v3"), TagValue.Create("v4") }; var result = ep.GetTagKeysAndValues(keys, values); Assert.Equal("v1", result["status"]); Assert.Equal("v2", result["exception"]); Assert.Equal("v3", result["method"]); Assert.Equal("v4", result["uri"]); // Verify sorted var sortedKeys = result.Keys.ToList(); Assert.Equal("exception", sortedKeys[0]); Assert.Equal("method", sortedKeys[1]); Assert.Equal("status", sortedKeys[2]); Assert.Equal("uri", sortedKeys[3]); values = new List <ITagValue>() { TagValue.Create("v1"), null, null, null }; result = ep.GetTagKeysAndValues(keys, values); Assert.Equal("v1", result["status"]); Assert.Single(result); values = new List <ITagValue>() { null, TagValue.Create("v2"), null, null }; result = ep.GetTagKeysAndValues(keys, values); Assert.Equal("v2", result["exception"]); Assert.Single(result); values = new List <ITagValue>() { TagValue.Create("v1"), }; result = ep.GetTagKeysAndValues(keys, values); Assert.Empty(result); }