/// <summary> /// Creates the specified request. /// </summary> /// <param name="request">The request.</param> /// <param name="program">The program.</param> /// <returns>TelemetryQueryResponse.</returns> public static TelemetryQueryResponse Create(TelemetryQueryRequest request, TelemetryRootObject program) { TelemetryQueryResponse queryResult = new TelemetryQueryResponse(); IEnumerable <IEnumerable <ITelemetryAware> > collections = GetCollections(request.TelemetryItemTypes, program); foreach (IEnumerable <ITelemetryAware> collection in collections) { foreach (ITelemetryAware telemetryAwareComponent in collection.Where(cmp => request.ComponentKeys.Contains("*") || request.ComponentKeys.Contains(cmp.Name))) { ProcessComponents(request, queryResult, telemetryAwareComponent); } } return(queryResult); }
public async Task ReportView() { string viewName = nameof(this.ReportView); //seed the data DateTimeOffset timestamp = DateTimeOffset.UtcNow; FileInfo app = this.LaunchTestsAppNewInstance(out _, Actions.ReportViewUsage, Apps.Keys.AutomaticTestsClient, Apps.PackageNames.AutomaticTestsClientAppV1, "", viewName: viewName); TelemetryQueryRequest request = TelemetryQueryRequest.CreateFull(Apps.Keys.AutomaticTestsClient); TelemetryQueryResponse queryResponse = await this.CheckTelemetry(request); TelemetrySummaryDto summary = null; TelemetryAwareComponentDto viewComponent = null; viewComponent = queryResponse.TelemetryAware.First(x => x.ComponentKey == viewName); Assert.IsNotNull(viewComponent); summary = viewComponent.Summaries.OrderByDescending(x=>x.LastReported).FirstOrDefault(); Assert.IsNotNull(summary); var userName = summary.UserName; timestamp = DateTimeOffset.UtcNow; app= this.LaunchTestsAppNewInstance(out _, Actions.ReportViewUsage, Apps.Keys.AutomaticTestsClient, Apps.PackageNames.AutomaticTestsClientAppV1, "", viewName: viewName); //Assert.IsNull(response.Exception); //Assert.AreEqual(HttpStatusCode.Accepted, response.StatusCode); queryResponse = await this.CheckTelemetry(request); viewComponent = queryResponse.TelemetryAware.First(x => x.ComponentKey == viewName); if (summary == null) //first time ever the test is run, the summary is empty - let it do work and fail { summary = viewComponent.Summaries.FirstOrDefault(x => x.UserName == userName); } var summaryAfterUpdate = viewComponent.Summaries.FirstOrDefault(x => x.UserName== userName); Assert.IsNotNull(summaryAfterUpdate); Assert.Greater(summaryAfterUpdate.SummaryCount, summary.SummaryCount); Assert.Greater(summaryAfterUpdate.LastReported, summary.LastReported); Assert.Greater(summaryAfterUpdate.Details.Count, summary.Details.Count); Assert.That(summaryAfterUpdate.Details.OrderByDescending(x => x.Timestamp).First().Timestamp, Is.EqualTo(timestamp).Within(TimeSpan.FromSeconds(5.0))); }
private static void ProcessComponents(TelemetryQueryRequest request, TelemetryQueryResponse queryResult, ITelemetryAware telemetryAwareComponent) { if (queryResult.TelemetryAware == null) { queryResult.TelemetryAware = new List <TelemetryAwareComponentDto>(); } TelemetryAwareComponentDto componentDto = new TelemetryAwareComponentDto(telemetryAwareComponent, request.PropertiesToInclude); queryResult.TelemetryAware.Add(componentDto); if (request.Granularity >= TelemetryRequestGranularity.Summaries) { foreach (TelemetrySummary telemetrySummary in telemetryAwareComponent.GetTelemetrySummaries()) { ProcessSummaries(request, telemetrySummary, componentDto); } } }
public async Task <IHttpActionResult> ExecuteQuery(TelemetryQueryRequest request) { if (request.TelemetryKey == Guid.Empty) { return(this.BadRequest("Empty telemetry key")); } TelemetryRootObject prg = await this.work.GetMonitoredProgram(request.TelemetryKey).ConfigureAwait(false); if (prg == null) { return(this.BadRequest($"Program with key [{request.TelemetryKey}] not found")); } TelemetryQueryResponse queryResult = TelemetryQueryResponseCreator.Create(request, prg); return(this.Ok(queryResult)); }
private async Task SendBasicTelemetry(Guid guid) { await this.SendBasicTelemetry(guid, new BasicTelemetryItem() { Metrics = new Dictionary <string, double>() { { "Something", 123.3 } }, ProgramVersion = "1.2.3.4", }).ConfigureAwait(false); await this.SendBasicTelemetry(guid, new BasicTelemetryItem() { EventName = "SomeViewEvent", TelemetryItemType = TelemetryItemTypes.View, Metrics = new Dictionary <string, double>() { { "SomethingForView", 123.3 } }, ProgramVersion = "1.2.3.4", }).ConfigureAwait(false); await this.SendBasicTelemetry(guid, new BasicTelemetryItem() { TelemetryItemType = TelemetryItemTypes.LogMessage, LogMessage = "Hello, world", }).ConfigureAwait(false); TelemetryQueryRequest request = TelemetryQueryRequest.CreateFull(guid); TelemetryQueryResponse queryResponse = await this.CheckTelemetry(request).ConfigureAwait(false); var viewTelemetry = queryResponse.TelemetryAware.Single(x => x.ComponentKey == "SomeViewEvent"); var eventTelemetry = queryResponse.TelemetryAware.Single(x => x.ComponentKey == "DefaultEvent"); Assert.AreEqual("1.2.3.4", viewTelemetry.Summaries.Single().Details.Single().FileVersion); Assert.AreEqual("1.2.3.4", eventTelemetry.Summaries.Single().Details.Single().FileVersion); }