From 66e82f6db6daca22bc7dc8744ba0b5b7c459ae7e Mon Sep 17 00:00:00 2001 From: Lan Xia Date: Wed, 8 Feb 2023 17:25:38 -0500 Subject: [PATCH] Support rerun builds in UI related: https://github.com/adoptium/aqa-test-tools/issues/770 Signed-off-by: Lan Xia --- .../src/Build/Summary/ResultGrid.css | 1 + .../src/Build/Summary/ResultGrid.jsx | 32 ++++++++++++- .../src/Build/Summary/ResultSummary.jsx | 47 ++++++++++++------- .../src/Build/TestTable.jsx | 32 +++++++++++++ test-result-summary-client/src/utils/Utils.js | 6 ++- 5 files changed, 98 insertions(+), 20 deletions(-) diff --git a/test-result-summary-client/src/Build/Summary/ResultGrid.css b/test-result-summary-client/src/Build/Summary/ResultGrid.css index 71a303f6..6341a6b7 100644 --- a/test-result-summary-client/src/Build/Summary/ResultGrid.css +++ b/test-result-summary-client/src/Build/Summary/ResultGrid.css @@ -44,6 +44,7 @@ } .cell { + position: relative; color: #fff; border-radius: 4px; padding: 4px; diff --git a/test-result-summary-client/src/Build/Summary/ResultGrid.jsx b/test-result-summary-client/src/Build/Summary/ResultGrid.jsx index 577d9975..6f61f474 100644 --- a/test-result-summary-client/src/Build/Summary/ResultGrid.jsx +++ b/test-result-summary-client/src/Build/Summary/ResultGrid.jsx @@ -7,6 +7,7 @@ import { MinusCircleOutlined, StopOutlined, WarningOutlined, + InfoCircleOutlined, } from '@ant-design/icons'; import { Tooltip } from 'antd'; @@ -51,6 +52,8 @@ class Cell extends Component { ); } const result = groups[group].buildResult; + const rerunBuildUrl = + groups[group].rerunBuildUrl; let element = ''; if (!groups[group].testSummary) { element = ( @@ -92,12 +95,26 @@ class Cell extends Component { ? 'Build Result is from TestBenchmarkParser (not CI build)' : ''}{' '}
+ Jenkins link: +
+ {rerunBuildUrl ? ( + + Rerun build + + ) : ( + 'no' + )}{' '} +
- Jenkins Link + Test build ); @@ -172,6 +189,19 @@ class Cell extends Component { {element}}> {linkInfo} + {rerunBuildUrl && ( + + )} ); })} diff --git a/test-result-summary-client/src/Build/Summary/ResultSummary.jsx b/test-result-summary-client/src/Build/Summary/ResultSummary.jsx index 54a037ee..45dcbc1a 100644 --- a/test-result-summary-client/src/Build/Summary/ResultSummary.jsx +++ b/test-result-summary-client/src/Build/Summary/ResultSummary.jsx @@ -106,7 +106,8 @@ export default class ResultSummary extends Component { jdkImpl = 'j9'; } // use non-capture group to ignore words evaluation and release if present - const regex = /^jdk(\d+).?(?:-evaluation|-release)?-(\w+)-(\w+)-(\w+)/i; + const regex = + /^jdk(\d+).?(?:-evaluation|-release)?-(\w+)-(\w+)-(\w+)/i; const tokens = buildName.match(regex); if (Array.isArray(tokens) && tokens.length > 4) { jdkVersion = tokens[1]; @@ -168,16 +169,14 @@ export default class ResultSummary extends Component { childBuildsResult = setBuildsStatus(build, childBuildsResult); }); builds.sort((a, b) => a.buildName.localeCompare(b.buildName)); + builds.forEach((build) => { const buildName = build.buildName.toLowerCase(); if (getInfoFromBuildName(buildName)) { - const { - jdkVersion, - jdkImpl, - level, - group, - platform, - } = getInfoFromBuildName(buildName); + const { jdkVersion, jdkImpl, level, group, platform, rerun } = + getInfoFromBuildName(buildName); + + const hasRerun = rerun ? rerun : false; if (jdkVersion && jdkImpl && level && group && platform) { buildMap[platform] = buildMap[platform] || {}; buildMap[platform][jdkVersion] = @@ -214,7 +213,7 @@ export default class ResultSummary extends Component { buildMap[platform][jdkVersion][jdkImpl][level][ group ].hasChildren = build.hasChildren; - } else if (build.testSummary) { + } else if (build.testSummary && !hasRerun) { buildMap[platform][jdkVersion][jdkImpl][level][ group ].testSummary = buildMap[platform][jdkVersion][ @@ -254,16 +253,28 @@ export default class ResultSummary extends Component { group ].testSummary.total += total; } + if ( + hasRerun && + !buildMap[platform][jdkVersion][jdkImpl][level][ + group + ].rerunBuildUrl + ) { + buildMap[platform][jdkVersion][jdkImpl][level][ + group + ].rerunBuildUrl = build.buildUrl; + console.log('build.buildUrl1', build.buildUrl); + } } else { - buildMap[platform][jdkVersion][jdkImpl][level][ - group - ] = { - buildResult: build.buildResult, - testSummary: build.testSummary, - buildUrl: build.buildUrl, - buildId: build._id, - hasChildren: build.hasChildren, - }; + buildMap[platform][jdkVersion][jdkImpl][level][group] = + { + buildResult: build.buildResult, + testSummary: build.testSummary, + buildUrl: build.buildUrl, + buildId: build._id, + hasChildren: build.hasChildren, + + rerunBuildUrl: hasRerun ? build.buildUrl : '', + }; } } } diff --git a/test-result-summary-client/src/Build/TestTable.jsx b/test-result-summary-client/src/Build/TestTable.jsx index 0cd9dc89..37356880 100644 --- a/test-result-summary-client/src/Build/TestTable.jsx +++ b/test-result-summary-client/src/Build/TestTable.jsx @@ -2,6 +2,7 @@ import React, { Component } from 'react'; import TextFilter from '../utils/TextFilter'; import { ClusterOutlined, + InfoCircleOutlined, GithubOutlined, HistoryOutlined, QuestionCircleOutlined, @@ -82,6 +83,36 @@ export default class TestTable extends Component { ); }); } + const renderTestName = (value, row) => { + const testName = value; + const { buildName } = row; + let rerun = false; + if (buildName && buildName.includes('_rerun')) { + rerun = true; + } + return ( + +
+ {rerun ? ( + <> + {testName} + + + + + ) : ( + testName + )} +
+
+ ); + }; const renderAction = (value, row) => { const { testId, testName } = value; @@ -202,6 +233,7 @@ export default class TestTable extends Component { handleFilterChange={this.handleFilterChange} /> ), + render: renderTestName, }, { title: 'Action', diff --git a/test-result-summary-client/src/utils/Utils.js b/test-result-summary-client/src/utils/Utils.js index 41eb2aba..f038c327 100644 --- a/test-result-summary-client/src/utils/Utils.js +++ b/test-result-summary-client/src/utils/Utils.js @@ -11,7 +11,11 @@ export const getInfoFromBuildName = (buildName) => { const tokens = buildName.match(regex); if (Array.isArray(tokens) && tokens.length > 5) { const [_, jdkVersion, jdkImpl, level, group, platform] = tokens; - return { jdkVersion, jdkImpl, level, group, platform }; + let rerun = false; + if (buildName.includes('_rerun')) { + rerun = true; + } + return { jdkVersion, jdkImpl, level, group, platform, rerun }; } return null; };