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 ProcessSummaries(TelemetryQueryRequest request, TelemetrySummary telemetrySummary, TelemetryAwareComponentDto componentDto) { if (componentDto.Summaries == null) { componentDto.Summaries = new List <TelemetrySummaryDto>(); } TelemetrySummaryDto summaryDto = new TelemetrySummaryDto(telemetrySummary, request.PropertiesToInclude); componentDto.Summaries.Add(summaryDto); if (request.Granularity >= TelemetryRequestGranularity.Details) { foreach (TelemetryDetail telemetryDetail in telemetrySummary.GetTelemetryDetails()) { ProcessDetails(request, telemetryDetail, summaryDto); } } }
private static void ProcessDetails(TelemetryQueryRequest request, TelemetryDetail telemetryDetail, TelemetrySummaryDto summaryDto) { if (summaryDto.Details == null) { summaryDto.Details = new List <TelemetryDetailDto>(); } TelemetryDetailDto detailDto = new TelemetryDetailDto(telemetryDetail, request.PropertiesToInclude); summaryDto.Details.Add(detailDto); if (request.Granularity >= TelemetryRequestGranularity.Units) { if (detailDto.Units == null) { detailDto.Units = new List <TelemetryUnitDto>(); } foreach (TelemetryUnit telemetryUnit in telemetryDetail.GetTelemetryUnits()) { TelemetryUnitDto unit = new TelemetryUnitDto(telemetryUnit, request.PropertiesToInclude); detailDto.Units.Add(unit); } } }