CI: Integration tests report (#484)

* Add missing dep to ci Dockerfile

* Add a map to store minimal tests report

* Use env vars for report messages

* Do not mutate variables outside the scipt block

* Write report to file
This commit is contained in:
gusto 2023-10-27 19:54:56 +02:00 committed by GitHub
parent c84c3fb93b
commit 61ff62cb29
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 9 deletions

View File

@ -10,7 +10,8 @@ RUN echo 'deb http://deb.debian.org/debian bullseye-backports main' \
# Dependecies for publishing documentation. # Dependecies for publishing documentation.
RUN apt-get update && apt-get install -yq \ RUN apt-get update && apt-get install -yq \
libssl-dev openssh-client git python3-pip clang libssl-dev openssh-client git python3-pip clang \
pkg-config
RUN pip install ghp-import RUN pip install ghp-import
RUN rustup component add rustfmt clippy RUN rustup component add rustfmt clippy

View File

@ -54,7 +54,8 @@ pipeline {
tests.add('mixnet') tests.add('mixnet')
} }
runBuildAndTestsForFeature(FEATURE, tests) def report = runBuildAndTestsForFeature(FEATURE, tests)
writeFile(file: "${WORKSPACE}/report.txt", text: report)
} }
} }
} }
@ -68,14 +69,16 @@ pipeline {
post { post {
failure { failure {
script { script {
def report = readFile("${WORKSPACE}/report.txt").trim()
def discord = load "${WORKSPACE}/ci/discord.groovy" def discord = load "${WORKSPACE}/ci/discord.groovy"
discord.sendMessage(header: 'Nightly Integration Tests Failed') discord.sendMessage(header: "Nightly Integration Tests Failed: ${report}")
} }
} }
success { success {
script { script {
def report = readFile('report.txt').trim()
def discord = load "${WORKSPACE}/ci/discord.groovy" def discord = load "${WORKSPACE}/ci/discord.groovy"
discord.sendMessage(header: 'Nightly Integration Tests Passed') discord.sendMessage(header: "Nightly Integration Tests Passed: ${report}")
} }
} }
cleanup { cleanWs() } cleanup { cleanWs() }
@ -87,12 +90,11 @@ def runBuildAndTestsForFeature(feature, tests) {
def build_node = "cargo build --all --no-default-features --features ${feature}" def build_node = "cargo build --all --no-default-features --features ${feature}"
if (sh(script: build_node, returnStatus: true) != 0) { if (sh(script: build_node, returnStatus: true) != 0) {
error("Build '${feature}' node failed") return reportError("Build '${feature}' node failed")
return
} }
int iterations = params.ITERATIONS.toInteger() int iterations = params.ITERATIONS.toInteger()
runTestCases(tests, iterations) return runTestCases(tests, iterations)
} }
def runTestCases(test_cases, iterations) { def runTestCases(test_cases, iterations) {
@ -102,10 +104,15 @@ def runTestCases(test_cases, iterations) {
for (test_case in test_cases) { for (test_case in test_cases) {
def test_cmd = "cargo test -p tests --all --no-default-features --features ${feature} ${test_case}" def test_cmd = "cargo test -p tests --all --no-default-features --features ${feature} ${test_case}"
if (sh(script: test_cmd, returnStatus: true) != 0) { if (sh(script: test_cmd, returnStatus: true) != 0) {
error("Test '${test_case}' failed on iteration ${i + 1}") return reportError("Test '${test_case}' failed on iteration ${i + 1}")
return
} }
} }
} }
return "${iterations}/${iterations} iterations succeeded"
} }
def reportError(e) {
error(e)
return e
}