public void ModuleKeepsIntervalSteadyWhenMetricsAreLongToCollect() { var sentItems = new List <ITelemetry>(); var channel = new StubTelemetryChannel() { OnSend = (item) => { sentItems.Add(item); } }; var config = new TelemetryConfiguration(); config.TelemetryChannel = channel; config.InstrumentationKey = "dummy"; var startTime = DateTimeOffset.Now; AggregateMetricsTelemetryModule module = new AggregateMetricsTelemetryModule(); module.FlushInterval = TimeSpan.FromSeconds(6); module.Initialize(config); var client = new TelemetryClient(config); client.Gauge("test", () => { Thread.Sleep(TimeSpan.FromSeconds(1)); return(10); }); Thread.Sleep(TimeSpan.FromSeconds(15)); Assert.AreEqual(2, sentItems.Count); var metric0 = (MetricTelemetry)sentItems[0]; var metric1 = (MetricTelemetry)sentItems[1]; var timeDelta = metric1.Timestamp - metric0.Timestamp - TimeSpan.FromSeconds(6); Assert.IsTrue(timeDelta.TotalMilliseconds < 50, "Actual: " + timeDelta); }
public void SimpleModuleUsage() { var sentItems = new List <ITelemetry>(); var channel = new StubTelemetryChannel() { OnSend = (item) => { sentItems.Add(item); } }; var config = new TelemetryConfiguration(); config.TelemetryChannel = channel; config.InstrumentationKey = "dummy"; AggregateMetricsTelemetryModule module = new AggregateMetricsTelemetryModule(); module.FlushInterval = TimeSpan.FromSeconds(6); module.Initialize(config); var client = new TelemetryClient(config); client.Gauge("test", () => { return(10); }); Thread.Sleep(TimeSpan.FromSeconds(7)); Assert.AreEqual(1, sentItems.Count); var metric = (MetricTelemetry)sentItems[0]; Assert.AreEqual("test", metric.Name); Assert.AreEqual(10, metric.Value); }
static void Main(string[] args) { var telemetryClient = new TelemetryClient(); //API one: //telemetryClient.RegisterAggregateMetric("MetricsGenerator", "City", percentileCalculation: PercentileCalculation.OrderByLargest); //for (double i = -50; i < 10000000; i += new Random().NextDouble()) //{ // telemetryClient.TrackAggregateMetric("MetricsGenerator", i, "Seattle"); // telemetryClient.TrackAggregateMetric("MetricsGenerator", i, "New York"); //} //API two: Random rand = new Random(); telemetryClient.Gauge("active processes", () => { return(rand.Next(10, 15)); }); var counter = telemetryClient.Counter("# of items"); var meter = telemetryClient.Meter("rate of items"); var aMeter = telemetryClient.Meter("rate of char a"); while (true) { var queue = new ConcurrentQueue <char>(); var a = Console.ReadKey().KeyChar; queue.Enqueue(a); counter.Increment(); meter.Mark(); if (a == 'a') { aMeter.Mark(); } else { aMeter.Mark(0); } new Task(() => { Thread.Sleep(100); char ch; if (queue.TryDequeue(out ch)) { counter.Decrement(); Console.Write(ch); } }).Start(); } }
public void ModuleWillKeepIntervalWithThreadsStarvation() { var sentItems = new List <ITelemetry>(); var channel = new StubTelemetryChannel() { OnSend = (item) => { sentItems.Add(item); } }; var config = new TelemetryConfiguration(); config.TelemetryChannel = channel; config.InstrumentationKey = "dummy"; AggregateMetricsTelemetryModule module = new AggregateMetricsTelemetryModule(); module.FlushInterval = TimeSpan.FromSeconds(6); module.Initialize(config); var startTime = DateTime.Now; var client = new TelemetryClient(config); client.Gauge("test", () => { return(10); }); int workerThread; int ioCompletionThread; ThreadPool.GetMaxThreads(out workerThread, out ioCompletionThread); try { ThreadPool.SetMaxThreads(10, 10); for (int i = 0; i < 50; i++) { new Task(() => { Debug.WriteLine("task started"); Thread.Sleep(TimeSpan.FromSeconds(10)); Debug.WriteLine("task finihed"); }).Start(); } Thread.Sleep(TimeSpan.FromSeconds(7)); Assert.AreEqual(1, sentItems.Count); var metric = (MetricTelemetry)sentItems[0]; Assert.AreEqual("test", metric.Name); Assert.AreEqual(10, metric.Value); Assert.IsTrue(metric.Timestamp.Subtract(startTime).Seconds <= 6, "Actual: " + metric.Timestamp.Subtract(startTime).Seconds); Assert.IsTrue(metric.Timestamp.Subtract(startTime).Seconds >= 5, "Actual: " + metric.Timestamp.Subtract(startTime).Seconds); } finally { ThreadPool.SetMaxThreads(workerThread, ioCompletionThread); } }
public void SimpleGaugeUsageExample() { TelemetryConfiguration configuraiton = new TelemetryConfiguration(); TelemetryClient client = new TelemetryClient(configuraiton); client.Context.Properties["a"] = "b"; client.Gauge("test", () => { return(10); }); var counters = configuraiton.GetCounters(); Assert.AreEqual(1, counters.Count); MetricTelemetry metric = counters[0].GetValueAndReset(); Assert.AreEqual(10, metric.Value); Assert.AreEqual(null, metric.Count); Assert.AreEqual("test", metric.Name); Assert.AreEqual("b", metric.Context.Properties["a"]); }