Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[8.x] [Ownership] Add code owner to ftr failure report (#203076) #204995

Merged
merged 1 commit into from
Dec 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<testsuites name="ftr" timestamp="2019-06-05T23:37:10" time="903.670" tests="129" failures="5" skipped="71" command-line="node scripts/functional_tests --config=x-pack/test/api_integration/apis/status/config.ts">
<testsuite timestamp="2019-06-05T23:37:10" time="903.670" tests="129" failures="5" skipped="71" command-line="node scripts/functional_tests --config=x-pack/test/api_integration/apis/status/config.ts">
<testcase name="maps app maps loaded from sample data ecommerce &quot;before all&quot; hook" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/maps/sample_data·js" time="154.378">
<testcase name="maps app maps loaded from sample data ecommerce &quot;before all&quot; hook" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/maps/sample_data·js" time="154.378" owners="elastic/kibana-presentation">
<system-out>
<![CDATA[[00:00:00] │
[00:07:04] └-: maps app
Expand All @@ -18,7 +18,7 @@ Wait timed out after 10055ms
at onFailure (/var/lib/jenkins/workspace/elastic+kibana+master/JOB/x-pack-ciGroup7/node/immutable/kibana/test/common/services/retry/retry_for_success.ts:68:13)]]>
</failure>
</testcase>
<testcase name="maps app &quot;after all&quot; hook" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/maps" time="0.179" metadata-json="{&quot;messages&quot;:[&quot;foo&quot;],&quot;screenshots&quot;:[{&quot;name&quot;:&quot;failure[dashboard app using current data dashboard snapshots compare TSVB snapshot]&quot;,&quot;url&quot;:&quot;https://storage.googleapis.com/kibana-ci-artifacts/jobs/elastic+kibana+7.x/1632/kibana-oss-tests/test/functional/screenshots/failure/dashboard%20app%20using%20current%20data%20dashboard%20snapshots%20compare%20TSVB%20snapshot.png&quot;}]}">
<testcase name="maps app &quot;after all&quot; hook" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/maps" time="0.179" metadata-json="{&quot;messages&quot;:[&quot;foo&quot;],&quot;screenshots&quot;:[{&quot;name&quot;:&quot;failure[dashboard app using current data dashboard snapshots compare TSVB snapshot]&quot;,&quot;url&quot;:&quot;https://storage.googleapis.com/kibana-ci-artifacts/jobs/elastic+kibana+7.x/1632/kibana-oss-tests/test/functional/screenshots/failure/dashboard%20app%20using%20current%20data%20dashboard%20snapshots%20compare%20TSVB%20snapshot.png&quot;}]}" owners="elastic/kibana-presentation">
<system-out>
<![CDATA[[00:00:00] │
[00:07:04] └-: maps app
Expand All @@ -32,7 +32,7 @@ Wait timed out after 10055ms
at process._tickCallback (internal/process/next_tick.js:68:7) name: 'NoSuchSessionError', remoteStacktrace: '' }]]>
</failure>
</testcase>
<testcase name="InfraOps app feature controls infrastructure security global infrastructure all privileges shows infrastructure navlink" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/infra/feature_controls/infrastructure_security·ts">
<testcase name="InfraOps app feature controls infrastructure security global infrastructure all privileges shows infrastructure navlink" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/infra/feature_controls/infrastructure_security·ts" owners="elastic/kibana-presentation">
<system-out>
<![CDATA[[00:00:00] │
[00:05:13] └-: InfraOps app
Expand All @@ -41,7 +41,7 @@ Wait timed out after 10055ms
</system-out>
<skipped/>
</testcase>
<testcase name="machine learning anomaly detection saved search with lucene query job creation opens the advanced section" classname="Firefox XPack UI Functional Tests.x-pack/test/functional/apps/machine_learning/anomaly_detection/saved_search_job·ts" time="6.040">
<testcase name="machine learning anomaly detection saved search with lucene query job creation opens the advanced section" classname="Firefox XPack UI Functional Tests.x-pack/test/functional/apps/machine_learning/anomaly_detection/saved_search_job·ts" time="6.040" owners="elastic/ml-ui">
<system-out><![CDATA[[00:21:57] └-: machine learning...]]></system-out>
<failure><![CDATA[{ NoSuchSessionError: Tried to run command without establishing a connection
at Object.throwDecodedError (/dev/shm/workspace/kibana/node_modules/selenium-webdriver/lib/error.js:550:15)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ it('rewrites ftr reports with minimal changes', async () => {
‹?xml version="1.0" encoding="utf-8"?›
‹testsuites name="ftr" timestamp="2019-06-05T23:37:10" time="903.670" tests="129" failures="5" skipped="71" command-line="node scripts/functional_tests --config=x-pack/test/api_integration/apis/status/config.ts"›
‹testsuite timestamp="2019-06-05T23:37:10" time="903.670" tests="129" failures="5" skipped="71" command-line="node scripts/functional_tests --config=x-pack/test/api_integration/apis/status/config.ts"›
‹testcase name="maps app maps loaded from sample data ecommerce &quot;before all&quot; hook" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/maps/sample_data·js" time="154.378"›
‹testcase name="maps app maps loaded from sample data ecommerce &quot;before all&quot; hook" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/maps/sample_data·js" time="154.378" owners="elastic/kibana-presentation"
- ‹system-out›
- ‹![CDATA[[00:00:00] │
+ ‹system-out›Failed Tests Reporter:
Expand All @@ -88,7 +88,7 @@ it('rewrites ftr reports with minimal changes', async () => {
+ at onFailure (/var/lib/jenkins/workspace/elastic+kibana+master/JOB/x-pack-ciGroup7/node/immutable/kibana/test/common/services/retry/retry_for_success.ts:68:13)
‹/failure›
‹/testcase›
‹testcase name="maps app &quot;after all&quot; hook" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/maps" time="0.179" metadata-json="{&quot;messages&quot;:[&quot;foo&quot;],&quot;screenshots&quot;:[{&quot;name&quot;:&quot;failure[dashboard app using current data dashboard snapshots compare TSVB snapshot]&quot;,&quot;url&quot;:&quot;https://storage.googleapis.com/kibana-ci-artifacts/jobs/elastic+kibana+7.x/1632/kibana-oss-tests/test/functional/screenshots/failure/dashboard%20app%20using%20current%20data%20dashboard%20snapshots%20compare%20TSVB%20snapshot.png&quot;}]}"›
‹testcase name="maps app &quot;after all&quot; hook" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/maps" time="0.179" metadata-json="{&quot;messages&quot;:[&quot;foo&quot;],&quot;screenshots&quot;:[{&quot;name&quot;:&quot;failure[dashboard app using current data dashboard snapshots compare TSVB snapshot]&quot;,&quot;url&quot;:&quot;https://storage.googleapis.com/kibana-ci-artifacts/jobs/elastic+kibana+7.x/1632/kibana-oss-tests/test/functional/screenshots/failure/dashboard%20app%20using%20current%20data%20dashboard%20snapshots%20compare%20TSVB%20snapshot.png&quot;}]}" owners="elastic/kibana-presentation"
‹system-out›
- ‹![CDATA[[00:00:00] │
+ [00:00:00] │
Expand All @@ -106,7 +106,7 @@ it('rewrites ftr reports with minimal changes', async () => {
+ at process._tickCallback (internal/process/next_tick.js:68:7) name: 'NoSuchSessionError', remoteStacktrace: '' }
‹/failure›
‹/testcase›
‹testcase name="InfraOps app feature controls infrastructure security global infrastructure all privileges shows infrastructure navlink" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/infra/feature_controls/infrastructure_security·ts"›
‹testcase name="InfraOps app feature controls infrastructure security global infrastructure all privileges shows infrastructure navlink" classname="Chrome X-Pack UI Functional Tests.x-pack/test/functional/apps/infra/feature_controls/infrastructure_security·ts" owners="elastic/kibana-presentation"
‹system-out›
- ‹![CDATA[[00:00:00] │
+ [00:00:00] │
Expand All @@ -117,7 +117,7 @@ it('rewrites ftr reports with minimal changes', async () => {
‹/system-out›
‹skipped/›
‹/testcase›
‹testcase name="machine learning anomaly detection saved search with lucene query job creation opens the advanced section" classname="Firefox XPack UI Functional Tests.x-pack/test/functional/apps/machine_learning/anomaly_detection/saved_search_job·ts" time="6.040"›
‹testcase name="machine learning anomaly detection saved search with lucene query job creation opens the advanced section" classname="Firefox XPack UI Functional Tests.x-pack/test/functional/apps/machine_learning/anomaly_detection/saved_search_job·ts" time="6.040" owners="elastic/ml-ui"
- ‹system-out›‹![CDATA[[00:21:57] └-: machine learning...]]›‹/system-out›
- ‹failure›‹![CDATA[{ NoSuchSessionError: Tried to run command without establishing a connection
+ ‹system-out›[00:21:57] └-: machine learning...‹/system-out›
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ it('discovers failures in ftr report', async () => {
",
"likelyIrrelevant": false,
"name": "maps app maps loaded from sample data ecommerce \\"before all\\" hook",
"owners": "elastic/kibana-presentation",
"system-out": "
[00:00:00] │
[00:07:04] └-: maps app
Expand All @@ -49,6 +50,7 @@ it('discovers failures in ftr report', async () => {
"likelyIrrelevant": true,
"metadata-json": "{\\"messages\\":[\\"foo\\"],\\"screenshots\\":[{\\"name\\":\\"failure[dashboard app using current data dashboard snapshots compare TSVB snapshot]\\",\\"url\\":\\"https://storage.googleapis.com/kibana-ci-artifacts/jobs/elastic+kibana+7.x/1632/kibana-oss-tests/test/functional/screenshots/failure/dashboard%20app%20using%20current%20data%20dashboard%20snapshots%20compare%20TSVB%20snapshot.png\\"}]}",
"name": "maps app \\"after all\\" hook",
"owners": "elastic/kibana-presentation",
"system-out": "
[00:00:00] │
[00:07:04] └-: maps app
Expand All @@ -67,6 +69,7 @@ it('discovers failures in ftr report', async () => {
at process._tickCallback (internal/process/next_tick.js:68:7) name: 'NoSuchSessionError', remoteStacktrace: '' }",
"likelyIrrelevant": true,
"name": "machine learning anomaly detection saved search with lucene query job creation opens the advanced section",
"owners": "elastic/ml-ui",
"system-out": "[00:21:57] └-: machine learning...",
"time": "6.040",
},
Expand All @@ -87,6 +90,7 @@ it('discovers failures in jest report', async () => {
",
"likelyIrrelevant": false,
"name": "launcher can reconnect if process died",
"owners": undefined,
"system-out": "",
"time": "7.060",
},
Expand Down Expand Up @@ -116,6 +120,7 @@ it('discovers failures in mocha report', async () => {
",
"likelyIrrelevant": true,
"name": "code in multiple nodes \\"before all\\" hook",
"owners": undefined,
"system-out": "
",
Expand All @@ -131,6 +136,7 @@ it('discovers failures in mocha report', async () => {
",
"likelyIrrelevant": true,
"name": "code in multiple nodes \\"after all\\" hook",
"owners": undefined,
"system-out": "
",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export type TestFailure = FailedTestCase['$'] & {
githubIssue?: string;
failureCount?: number;
commandLine?: string;
owners?: any;
};

const getText = (node?: Array<string | { _: string }>) => {
Expand Down Expand Up @@ -78,6 +79,7 @@ export function getFailures(report: TestReport) {
for (const testCase of makeFailedTestCaseIter(report)) {
const failure = getText(testCase.failure);
const likelyIrrelevant = isLikelyIrrelevant(testCase.$.name, failure);
const owners = testCase.$.owners;

const failureObj = {
// unwrap xml weirdness
Expand All @@ -87,6 +89,7 @@ export function getFailures(report: TestReport) {
likelyIrrelevant,
'system-out': getText(testCase['system-out']),
commandLine,
owners,
};

// cleaning up duplicates
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,12 @@ export async function reportFailuresToFile(
</div>`
: ''
}
<div>
<strong>Owners</strong>:
<pre>${escape(
failure?.owners ? (failure?.owners as string) : 'Unable to determine code owners'
)}</pre>
</div>
<div>
<strong>Failures in tracked branches</strong>:
<span class="badge rounded-pill bg-danger">${failure.failureCount || 0}</span>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import Fs from 'fs';
import { promisify } from 'util';

import xml2js from 'xml2js';

const readAsync = promisify(Fs.readFile);

export type TestReport =
Expand Down Expand Up @@ -40,6 +39,8 @@ export interface TestSuite {
'metadata-json'?: string;
/* the command that ran this suite */
'command-line'?: string;
/* the codeowners of the file */
owners?: string;
};
testcase?: TestCase[];
}
Expand All @@ -56,6 +57,8 @@ export interface TestCase {
'metadata-json'?: string;
/* the command that ran this suite */
'command-line'?: string;
/* the codeowners of the file */
owners?: string;
};
/* contents of system-out elements */
'system-out'?: Array<string | { _: string }>;
Expand Down
Loading