internal static void QuickPulseTopCpuProcesses(QuickPulseHttpListenerObservable listener, SingleWebHostTestBase test) { test.SendRequest("aspx/GenerateTelemetryItems.aspx", false); var samples = listener.ReceiveItems(15, TestListenerWaitTimeInMs).Where(s => s.TopCpuProcesses != null).ToList(); Assert.IsTrue(samples.Count > 0); Assert.IsTrue(samples.Any(s => s.TopCpuProcesses.Length > 0)); Assert.IsFalse( samples.Any(s => s.TopCpuProcesses.Any(p => string.IsNullOrWhiteSpace(p.ProcessName) || p.CpuPercentage < 0 || p.CpuPercentage > 100))); }
internal static void QuickPulseMetricsAndDocuments(QuickPulseHttpListenerObservable listener, SingleWebHostTestBase test) { Parallel.For( 0, 5, i => { System.Threading.Thread.Sleep(TimeSpan.FromSeconds(i)); test.SendRequest("aspx/GenerateTelemetryItems.aspx", false); }); var samples = listener.ReceiveItems(5, TestListenerWaitTimeInMs) .Where(s => s.Documents?.Length > 0 || s.Metrics.Any(m => m.Name == "Metric1")) .ToList(); Assert.IsTrue( samples.TrueForAll( item => item.InstrumentationKey == "fafa4b10-03d3-4bb0-98f4-364f0bdf5df8" && !string.IsNullOrWhiteSpace(item.Version) && !string.IsNullOrWhiteSpace(item.Instance))); Assert.IsTrue(samples.Any(s => s.Metrics.Any(m => m.Name == "Metric1" && m.Value > 0))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Request.ToString() && ((RequestTelemetryDocument)d).Name.Contains("RequestSuccess") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Request.ToString() && ((RequestTelemetryDocument)d).Name.Contains("RequestFailed") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.RemoteDependency.ToString() && ((DependencyTelemetryDocument)d).Name.Contains("DependencySuccess") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.RemoteDependency.ToString() && ((DependencyTelemetryDocument)d).Name.Contains("DependencyFailed") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Exception.ToString() && ((ExceptionTelemetryDocument)d).Exception.Contains("ArgumentNullException") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Event.ToString() && ((EventTelemetryDocument)d).Name.Contains("Event1") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Event.ToString() && ((EventTelemetryDocument)d).Name.Contains("Event2") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Trace.ToString() && ((TraceTelemetryDocument)d).Message.Contains("Trace1") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Trace.ToString() && ((TraceTelemetryDocument)d).Message.Contains("Trace2") && d.DocumentStreamIds.Contains("Stream1")))); }
internal static void QuickPulseTopCpuProcesses(QuickPulseHttpListenerObservable listener, SingleWebHostTestBase test) { test.SendRequest("aspx/GenerateTelemetryItems.aspx", false); var samples = listener.ReceiveItems(15, TestListenerWaitTimeInMs).Where(s => s.TopCpuProcesses != null).ToList(); Assert.IsTrue(samples.Count > 0); Assert.IsTrue(samples.Any(s => s.TopCpuProcesses.Length > 0)); try { Assert.IsFalse( samples.Any(s => s.TopCpuProcesses.Any(p => string.IsNullOrWhiteSpace(p.ProcessName) || p.CpuPercentage < 0 || p.CpuPercentage > 100))); } catch { var weirdSample = samples.First(s => s.TopCpuProcesses.Any(p => string.IsNullOrWhiteSpace(p.ProcessName) || p.CpuPercentage < 0 || p.CpuPercentage > 100)); Trace.WriteLine("Top CPU test failed, weird sample found. Processes:"); foreach (var proc in weirdSample.TopCpuProcesses) { Trace.WriteLine(string.Format(CultureInfo.InvariantCulture, "ProcessName: {0}, CpuPercentage: {1}", proc.ProcessName, proc.CpuPercentage)); } throw; } }
internal static void QuickPulseMetricsAndDocuments(QuickPulseHttpListenerObservable listener, SingleWebHostTestBase test) { var taskSendRequests = new Task(() => Parallel.For( 0, 5, new ParallelOptions() { MaxDegreeOfParallelism = 1000 }, i => { System.Threading.Thread.Sleep(TimeSpan.FromSeconds(5 + i)); test.SendRequest("aspx/GenerateTelemetryItems.aspx", "GenerateTelemetryItems.aspx"); }), TaskCreationOptions.PreferFairness); List <MonitoringDataPoint> samples = null; var taskCheckResult = new Task(() => samples = listener.ReceiveItems(20, TestListenerWaitTimeInMs) .Where(s => s.Documents?.Length > 0 || s.Metrics.Any(m => m.Name == "Metric1")) .ToList(), TaskCreationOptions.PreferFairness); taskCheckResult.Start(); taskSendRequests.Start(); Task.WaitAll(taskSendRequests, taskCheckResult); Assert.IsTrue( samples.TrueForAll( item => item.InstrumentationKey == "fafa4b10-03d3-4bb0-98f4-364f0bdf5df8" && !string.IsNullOrWhiteSpace(item.Version) && !string.IsNullOrWhiteSpace(item.Instance))); Assert.AreEqual(5, samples.Where(s => s.Metrics.Any(m => m.Name == "Metric1")) .Sum(s => s.Metrics.Single(m => m.Name == "Metric1").Value)); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Request.ToString() && ((RequestTelemetryDocument)d).Name.Contains("RequestSuccess") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Request.ToString() && ((RequestTelemetryDocument)d).Name.Contains("RequestFailed") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.RemoteDependency.ToString() && ((DependencyTelemetryDocument)d).Name.Contains("DependencySuccess") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.RemoteDependency.ToString() && ((DependencyTelemetryDocument)d).Name.Contains("DependencyFailed") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Exception.ToString() && ((ExceptionTelemetryDocument)d).Exception.Contains("ArgumentNullException") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Event.ToString() && ((EventTelemetryDocument)d).Name.Contains("Event1") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Event.ToString() && ((EventTelemetryDocument)d).Name.Contains("Event2") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Trace.ToString() && ((TraceTelemetryDocument)d).Message.Contains("Trace1") && d.DocumentStreamIds.Contains("Stream1")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Trace.ToString() && ((TraceTelemetryDocument)d).Message.Contains("Trace2") && d.DocumentStreamIds.Contains("Stream1")))); }
internal static void QuickPulseAggregates(QuickPulseHttpListenerObservable listener, HttpClient client, SingleWebHostTestBase test) { var taskSendRequests = new Task(() => { System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2)); test.SendRequest("aspx/TestWebForm.aspx", "PerformanceCollector application"); }, TaskCreationOptions.PreferFairness); List <MonitoringDataPoint> samples = null; var taskCheckResult = new Task(() => samples = listener.ReceiveItems(20, TestListenerWaitTimeInMs).ToList(), TaskCreationOptions.PreferFairness); taskCheckResult.Start(); taskSendRequests.Start(); Task.WhenAll(taskSendRequests, taskCheckResult).Wait(); Assert.IsTrue( samples.TrueForAll( item => item.InstrumentationKey == "fafa4b10-03d3-4bb0-98f4-364f0bdf5df8" && !string.IsNullOrWhiteSpace(item.Version) && !string.IsNullOrWhiteSpace(item.Instance) && item.Metrics.Any())); AssertSingleSampleWithNonZeroMetric(samples, @"\ApplicationInsights\Requests/Sec"); AssertSingleSampleWithNonZeroMetric(samples, @"\ApplicationInsights\Request Duration"); AssertSingleSampleWithNonZeroMetric(samples, @"\ApplicationInsights\Requests Failed/Sec"); AssertNoSamplesWithNonZeroMetric(samples, @"\ApplicationInsights\Requests Succeeded/Sec"); AssertNoSamplesWithNonZeroMetric(samples, @"\ApplicationInsights\Dependency Calls/Sec"); AssertNoSamplesWithNonZeroMetric(samples, @"\ApplicationInsights\Dependency Call Duration"); AssertNoSamplesWithNonZeroMetric(samples, @"\ApplicationInsights\Dependency Calls Failed/Sec"); AssertNoSamplesWithNonZeroMetric(samples, @"\ApplicationInsights\Dependency Calls Succeeded/Sec"); AssertSingleSampleWithNonZeroMetric(samples, @"\ApplicationInsights\Exceptions/Sec"); AssertNoSamplesWithNonZeroMetric(samples, @"\ASP.NET Applications(__Total__)\Requests In Application Queue"); AssertAllSamplesWithNonZeroMetric(samples, @"\Memory\Committed Bytes"); AssertSomeSamplesWithNonZeroMetric(samples, @"\Processor(_Total)\% Processor Time"); }
internal static void QuickPulseTopCpuProcesses(QuickPulseHttpListenerObservable listener, SingleWebHostTestBase test) { var taskSendRequests = new Task(() => { System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2)); test.SendRequest("aspx/GenerateTelemetryItems.aspx", "GenerateTelemetryItems.aspx"); }, TaskCreationOptions.PreferFairness); List <MonitoringDataPoint> samples = null; var taskCheckResult = new Task(() => samples = listener.ReceiveItems(20, TestListenerWaitTimeInMs).Where(s => s.TopCpuProcesses != null) .ToList(), TaskCreationOptions.PreferFairness); taskCheckResult.Start(); taskSendRequests.Start(); Task.WhenAll(taskSendRequests, taskCheckResult).Wait(); Assert.IsTrue(samples.Count > 0); Assert.IsTrue(samples.Any(s => s.TopCpuProcesses.Length > 0)); try { Assert.IsFalse( samples.Any(s => s.TopCpuProcesses.Any(p => string.IsNullOrWhiteSpace(p.ProcessName) || p.CpuPercentage < 0 || p.CpuPercentage > 100))); } catch { var weirdSample = samples.First(s => s.TopCpuProcesses.Any(p => string.IsNullOrWhiteSpace(p.ProcessName) || p.CpuPercentage < 0 || p.CpuPercentage > 100)); Trace.WriteLine("Top CPU test failed, weird sample found. Processes:"); foreach (var proc in weirdSample.TopCpuProcesses) { Trace.WriteLine(string.Format(CultureInfo.InvariantCulture, "ProcessName: {0}, CpuPercentage: {1}", proc.ProcessName, proc.CpuPercentage)); } throw; } }
internal static void QuickPulseDocuments(QuickPulseHttpListenerObservable listener, SingleWebHostTestBase test) { test.SendRequest("aspx/GenerateTelemetryItems.aspx", false); var samples = listener.ReceiveItems(15, TestListenerWaitTimeInMs).Where(s => s.Documents.Any()).ToList(); Assert.IsTrue( samples.TrueForAll( item => item.InstrumentationKey == "fafa4b10-03d3-4bb0-98f4-364f0bdf5df8" && !string.IsNullOrWhiteSpace(item.Version) && !string.IsNullOrWhiteSpace(item.Instance))); // captured failed Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Request.ToString() && ((RequestTelemetryDocument)d).Name.Contains("Failed")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.RemoteDependency.ToString() && ((DependencyTelemetryDocument)d).Name.Contains("Failed")))); Assert.IsTrue( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Exception.ToString() && ((ExceptionTelemetryDocument)d).Exception.Contains("ArgumentNullException")))); // did not capture succeeded Assert.IsFalse( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.Request.ToString() && ((RequestTelemetryDocument)d).Name.Contains("Success")))); Assert.IsFalse( samples.Any( s => s.Documents.Any( d => d.DocumentType == TelemetryDocumentType.RemoteDependency.ToString() && ((DependencyTelemetryDocument)d).Name.Contains("Success")))); }