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

[coverage] fix jest merging #90915

Merged
merged 9 commits into from
Feb 16, 2021
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
10 changes: 10 additions & 0 deletions src/dev/code_coverage/shell_scripts/copy_jest_report.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/bash

EXTRACT_START_DIR=tmp/extracted_coverage
EXTRACT_END_DIR=target/kibana-coverage
COMBINED_EXRACT_DIR=/${EXTRACT_START_DIR}/${EXTRACT_END_DIR}


echo "### Copy combined jest report"
mkdir -p $EXTRACT_END_DIR/jest-combined
cp -r $COMBINED_EXRACT_DIR/jest-combined/. $EXTRACT_END_DIR/jest-combined/
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,6 @@ COMBINED_EXRACT_DIR=/${EXTRACT_START_DIR}/${EXTRACT_END_DIR}
PWD=$(pwd)
du -sh $COMBINED_EXRACT_DIR

echo "### Jest: replacing path in json files"
for i in oss oss-integration xpack; do
sed -i "s|/dev/shm/workspace/kibana|${PWD}|g" $COMBINED_EXRACT_DIR/jest/${i}-coverage-final.json &
done
wait

echo "### Functional: replacing path in json files"
for i in {1..9}; do
sed -i "s|/dev/shm/workspace/kibana|${PWD}|g" $COMBINED_EXRACT_DIR/functional/${i}*.json &
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,16 @@ TEAM_ASSIGN_PATH=$5
# Build team assignments dat file
node scripts/generate_team_assignments.js --verbose --src .github/CODEOWNERS --dest $TEAM_ASSIGN_PATH

for x in jest functional; do
for x in functional jest; do
echo "### Ingesting coverage for ${x}"

COVERAGE_SUMMARY_FILE=target/kibana-coverage/${x}-combined/coverage-summary.json

if [[ $x == "jest" ]]; then
# Need to override COVERAGE_INGESTION_KIBANA_ROOT since json file has original intake worker path
export COVERAGE_INGESTION_KIBANA_ROOT=/dev/shm/workspace/kibana
fi

node scripts/ingest_coverage.js --verbose --path ${COVERAGE_SUMMARY_FILE} --vcsInfoPath ./VCS_INFO.txt --teamAssignmentsPath $TEAM_ASSIGN_PATH
done

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,4 @@ COVERAGE_TEMP_DIR=/tmp/extracted_coverage/target/kibana-coverage/
export COVERAGE_TEMP_DIR

echo "### Merge coverage reports"
for x in jest functional; do
yarn nyc report --nycrc-path src/dev/code_coverage/nyc_config/nyc.${x}.config.js
done
yarn nyc report --nycrc-path src/dev/code_coverage/nyc_config/nyc.functional.config.js
2 changes: 1 addition & 1 deletion test/common/fixtures/plugins/coverage/kibana.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"id": "coverage-fixtures",
"id": "coverageFixtures",
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After merging master on Monday I faced this error in functional tests:

11:37:23       │ proc [kibana]  FATAL  Error: Failed to initialize plugins:
11:37:23       │ proc [kibana] 	Plugin "id" must be camelCase, but found: coverage-fixtures. (invalid-manifest, /dev/shm/workspace/kibana12/test/common/fixtures/plugins/coverage/kibana.json)

I changed plugin id according error an looks like it is working fine

"version": "kibana",
"server": false,
"ui": true
Expand Down
3 changes: 3 additions & 0 deletions test/scripts/jenkins_unit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,7 @@ else

echo " -> Running jest integration tests with coverage"
node scripts/jest_integration --ci --verbose --coverage || true;

echo " -> Combine code coverage in a single report"
yarn nyc report --nycrc-path src/dev/code_coverage/nyc_config/nyc.jest.config.js
Comment on lines +35 to +37
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we run jest tests in a single place now, I added report generation right after tests are done.

fi
9 changes: 5 additions & 4 deletions vars/kibanaCoverage.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -148,9 +148,10 @@ def generateReports(title) {
cd ..
. src/dev/code_coverage/shell_scripts/extract_archives.sh
. src/dev/code_coverage/shell_scripts/fix_html_reports_parallel.sh
. src/dev/code_coverage/shell_scripts/merge_jest_and_functional.sh
# zip combined reports
tar -czf kibana-coverage.tar.gz target/kibana-coverage/**/*
. src/dev/code_coverage/shell_scripts/merge_functional.sh
. src/dev/code_coverage/shell_scripts/copy_jest_report.sh
# zip functional combined report
tar -czf kibana-functional-coverage.tar.gz target/kibana-coverage/functional-combined/*
Comment on lines -151 to +154
Copy link
Member Author

@dmlemeshko dmlemeshko Feb 16, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We only merge functional tests now, but we still need to copy jest for ingestion. Functional combined report is uploaded separately since jest was already in artefacts after tests execution.

""", title)
}

Expand All @@ -162,7 +163,7 @@ def uploadCombinedReports() {

kibanaPipeline.uploadGcsArtifact(
"kibana-ci-artifacts/jobs/${env.JOB_NAME}/${BUILD_NUMBER}/coverage/combined",
'kibana-coverage.tar.gz'
'kibana-functional-coverage.tar.gz'
)
}

Expand Down
2 changes: 1 addition & 1 deletion vars/kibanaPipeline.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ def withGcsArtifactUpload(workerName, closure) {
def ARTIFACT_PATTERNS = [
'target/junit/**/*',
'target/kibana-*',
'target/kibana-coverage/**/*',
'target/kibana-coverage/jest/**/*',
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should not upload kibana-coverage/functional content to artefacts since it is 30 GB of json files and we are not interested in them individually.

'target/kibana-security-solution/**/*.png',
'target/test-metrics/*',
'target/test-suites-ci-plan.json',
Expand Down