static void InitializeSignalFx(string contextName) { Metric.Config.WithReporting(Report => Report.WithSignalFxFromAppConfig()); context = (TaggedMetricsContext)Metric.Context(contextName, (ctxName) => { return(new TaggedMetricsContext(ctxName)); }); // Create a counter that has the dimension "api:login" myCounter = context.Counter("myCounter", Unit.Calls, tags: new MetricTags("api", "login")); // Create a timer myTimer = context.Timer("myTimer", Unit.Calls); }
public void AddMetrics_EnsureAllDimensionsGetSent() { var context = new TaggedMetricsContext(); var sender = new FakeSignalFxReporter(); var report = new SignalFxReport( sender, "", "FakeApiKey", new Dictionary <string, string> { { "System", "UnitTests" }, }, 10000, new HashSet <MetricDetails> { MetricDetails.count }); var accountNoRandom = new Random(); // var accountId = new byte[16]; var generatedHases = new HashSet <string>(); while (generatedHases.Count < 50) { accountNoRandom.NextBytes(accountId); var accountIdString = accountId.Aggregate(new StringBuilder(), (builder, b) => builder.AppendFormat("{0:x2}", b)).ToString(); if (generatedHases.Contains(accountIdString)) { continue; } generatedHases.Add(accountIdString); var tags = new MetricTags("account=" + accountIdString); var counter = context.Counter("TestCounter", Unit.Calls, tags); counter.Increment(accountNoRandom.Next()); } var source = new CancellationTokenSource(); report.RunReport(context.DataProvider.CurrentMetricsData, () => new HealthStatus(), source.Token); var dimensions = sender.SelectMany(message => message.datapoints.SelectMany(datapoint => datapoint.dimensions)); Assert.True(dimensions.Count() > 50); }