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);
                }
            }
        }
        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);
                }
            }
        }