Exemplo n.º 1
0
        public async Task TestResultSearchMessage()
        {
            var def      = AddBuildDefinition("dnceng|public|roslyn|42");
            var build1   = AddBuild("1|dotnet|roslyn||Failed", def);
            var testRun1 = AddTestRun("windows", build1);

            AddTestResult("Test1||||cat", testRun1);
            AddTestResult("Test2||||cat", testRun1);
            AddTestResult("Test3||||dog", testRun1);
            var build2   = AddBuild("2|dotnet|roslyn||Failed", def);
            var testRun2 = AddTestRun("windows", build2);

            AddTestResult("Test1||||fish", testRun1);
            AddTestResult("Test2||||fish", testRun1);
            AddTestResult("Test3||||cat", testRun1);
            await Context.SaveChangesAsync();

            await Test(3, "message:#cat");
            await Test(1, "message:#dog");
            await Test(2, "message:#fish");
            await Test(0, "message:#tree");

            async Task Test(int count, string value)
            {
                var request = new SearchTestsRequest();

                request.ParseQueryString(value);
                var query      = request.Filter(Context.ModelTestResults);
                var queryCount = await query.CountAsync();

                Assert.Equal(count, queryCount);
            }
        }
Exemplo n.º 2
0
        public void TestsRoundTrip(string toParse, string userQuery)
        {
            var options = new SearchTestsRequest();

            options.ParseQueryString(toParse);
            Assert.Equal(userQuery, options.GetQueryString());
        }
Exemplo n.º 3
0
        public TestResultsDisplay(IEnumerable <ModelTestResult> modelTestResults)
        {
            var    anyHelix         = false;
            string?gitHubRepository = null;
            var    emptyDictionary  = new Dictionary <string, string>();

            foreach (var modelTestResult in modelTestResults)
            {
                anyHelix = anyHelix || modelTestResult.IsHelixTestResult;
                gitHubRepository ??= modelTestResult.ModelBuild.GitHubRepository;

                var routeData = new Dictionary <string, string>();
                if (BuildsRequest is object)
                {
                    routeData["bq"] = BuildsRequest.GetQueryString();
                }

                var request = new SearchTestsRequest()
                {
                    Name = modelTestResult.TestFullName
                };

                routeData["tq"] = request.GetQueryString();

                var testResultInfo = new TestResultInfo()
                {
                    BuildNumber           = modelTestResult.ModelBuild.BuildNumber,
                    BuildUri              = DevOpsUtil.GetBuildUri(modelTestResult.ModelBuild.AzureOrganization, modelTestResult.ModelBuild.AzureProject, modelTestResult.ModelBuild.BuildNumber),
                    Kind                  = modelTestResult.ModelBuild.GetModelBuildKind().GetDisplayString(),
                    TestRun               = modelTestResult.ModelTestRun.Name,
                    TestFullName          = modelTestResult.TestFullName,
                    TestFullNameRouteData = routeData,
                    ErrorMessage          = modelTestResult.ErrorMessage,
                    HelixConsoleUri       = modelTestResult.HelixConsoleUri,
                    HelixRunClientUri     = modelTestResult.HelixRunClientUri,
                    HelixCoreDumpUri      = modelTestResult.HelixCoreDumpUri,
                    HelixTestResultsUri   = modelTestResult.HelixTestResultsUri,
                };
                Results.Add(testResultInfo);
            }

            IncludeHelixColumns = anyHelix;
            GitHubRepository    = gitHubRepository;
        }
Exemplo n.º 4
0
        public async Task <IActionResult> OnGet()
        {
            if (string.IsNullOrEmpty(BuildQuery))
            {
                BuildQuery = new SearchBuildsRequest()
                {
                    Definition = "roslyn-ci",
                    Started    = new DateRequestValue(dayQuery: 3),
                }.GetQueryString();
                return(Page());
            }

            if (!SearchBuildsRequest.TryCreate(BuildQuery ?? "", out var buildsRequest, out var errorMessage) ||
                !SearchTestsRequest.TryCreate(TestsQuery ?? "", out var testsRequest, out errorMessage))
            {
                ErrorMessage = errorMessage;
                return(Page());
            }

            try
            {
                IQueryable <ModelTestResult> query = TriageContextUtil.Context.ModelTestResults
                                                     .Include(x => x.ModelTestRun)
                                                     .Include(x => x.ModelBuild);
                query = buildsRequest.Filter(query);
                query = testsRequest.Filter(query);
                var results = await query
                              .OrderByDescending(x => x.ModelBuild.BuildNumber)
                              .Skip(PageNumber * PageSize)
                              .Take(PageSize + 1)
                              .ToListAsync();

                var count = 0;
                var isBuildKindFiltered =
                    buildsRequest.BuildType is { } bt&&
                !(bt is { BuildType : ModelBuildKind.All, Kind : EqualsKind.Equals });

                foreach (var group in results.GroupBy(x => x.TestFullName).OrderByDescending(x => x.Count()))
                {
                    count++;

                    testsRequest.Name = group.Key;
                    var firstBuild = group.FirstOrDefault()?.ModelBuild;
                    var testInfo   = new TestInfo()
                    {
                        TestName           = group.Key,
                        CollapseName       = $"collapse{count}",
                        TestNameQuery      = testsRequest.GetQueryString(),
                        BuildDefinition    = buildsRequest.Definition,
                        GitHubOrganization = firstBuild?.GitHubOrganization,
                        GitHubRepository   = firstBuild?.GitHubRepository,
                        TestResultsDisplay = new TestResultsDisplay(group)
                        {
                            IncludeBuildColumn        = true,
                            IncludeBuildKindColumn    = !isBuildKindFiltered,
                            IncludeErrorMessageColumn = true,
                        }
                    };

                    TestInfos.Add(testInfo);
                }

                BuildCount         = results.GroupBy(x => x.ModelBuild.BuildNumber).Count();
                PreviousPageNumber = PageNumber > 0 ? PageNumber - 1 : (int?)null;
                NextPageNumber     = results.Count > PageSize ? PageNumber + 1 : (int?)null;
                return(Page());
            }