ci: Smoketest valgrind.

docker: Dedup complement-tester-valgrind.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-06-06 02:30:42 +00:00
parent 73a690430e
commit 5a58c623e1
4 changed files with 107 additions and 119 deletions

View File

@@ -52,7 +52,7 @@ jobs:
name: Unit name: Unit
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
with: with:
bake_targets: '["tests-unit"]' bake_targets: '["unit"]'
cargo_profiles: '["test"]' cargo_profiles: '["test"]'
feat_sets: '["all"]' feat_sets: '["all"]'
rust_toolchains: ${{inputs.rust_toolchains}} rust_toolchains: ${{inputs.rust_toolchains}}
@@ -69,7 +69,7 @@ jobs:
name: Smoke name: Smoke
uses: ./.github/workflows/bake.yml uses: ./.github/workflows/bake.yml
with: with:
bake_targets: '["tests-smoke"]' bake_targets: '["smoke", "smoke-valgrind"]'
cargo_profiles: ${{inputs.cargo_profiles}} cargo_profiles: ${{inputs.cargo_profiles}}
feat_sets: ${{inputs.feat_sets}} feat_sets: ${{inputs.feat_sets}}
rust_toolchains: ${{inputs.rust_toolchains}} rust_toolchains: ${{inputs.rust_toolchains}}
@@ -83,12 +83,17 @@ jobs:
[ [
{"cargo_profile": "test", "feat_set": "default"}, {"cargo_profile": "test", "feat_set": "default"},
{"cargo_profile": "test", "rust_toolchain": "stable"}, {"cargo_profile": "test", "rust_toolchain": "stable"},
{"cargo_profile": "test", "feat_set": "none", "bake_target": "smoke-valgrind"},
{"cargo_profile": "release", "rust_toolchain": "nightly"}, {"cargo_profile": "release", "rust_toolchain": "nightly"},
{"cargo_profile": "release", "rust_toolchain": "stable", "feat_set": "none"}, {"cargo_profile": "release", "rust_toolchain": "stable", "feat_set": "none"},
{"cargo_profile": "release-debuginfo"}, {"cargo_profile": "release", "bake_target": "smoke-valgrind"},
{"cargo_profile": "release-debuginfo", "rust_toolchain": "nightly"},
{"cargo_profile": "release-debuginfo", "rust_toolchain": "stable", "feat_set": "none"},
{"cargo_profile": "release-debuginfo", "bake_target": "smoke"},
{"cargo_profile": "release-native", "rust_toolchain": "stable"}, {"cargo_profile": "release-native", "rust_toolchain": "stable"},
{"cargo_profile": "release-native", "feat_set": "none"}, {"cargo_profile": "release-native", "feat_set": "none"},
{"cargo_profile": "release-native", "feat_set": "default"} {"cargo_profile": "release-native", "feat_set": "default"},
{"cargo_profile": "release-native", "bake_target": "smoke-valgrind"}
] ]
complement: complement:

View File

@@ -238,50 +238,3 @@ COPY <<EOF uwu.sh
EOF EOF
RUN echo $(tr -d '\n' < uwu.sh) > uwu.sh RUN echo $(tr -d '\n' < uwu.sh) > uwu.sh
ENTRYPOINT ["/bin/bash", "/usr/src/complement/uwu.sh"] ENTRYPOINT ["/bin/bash", "/usr/src/complement/uwu.sh"]
FROM input AS complement-tester-valgrind
ARG complement_debug=0
ARG complement_count=1
ARG complement_parallel=16
ARG complement_shuffle=1337
ARG complement_timeout="1h"
ARG complement_run=".*"
ARG complement_skip=""
ARG complement_tags="conduwuit_blacklist"
ARG complement_tests="./tests/..."
ARG complement_base_image
WORKDIR /
COPY --link --from=input . .
WORKDIR /usr/src/complement
ENV COMPLEMENT_DEBUG=$complement_debug
ENV complement_parallel="$complement_parallel"
ENV complement_shuffle="$complement_shuffle"
ENV complement_tags="$complement_tags"
ENV complement_timeout="$complement_timeout"
ENV complement_count="$complement_count"
ENV complement_tests="$complement_tests"
ENV complement_skip="$complement_skip"
ENV complement_run="$complement_run"
ENV complement_tests="$complement_tests"
ENV COMPLEMENT_HOSTNAME_RUNNING_COMPLEMENT="host.docker.internal"
ENV COMPLEMENT_HOST_MOUNTS="/var/run/docker.sock:/var/run/docker.sock"
COPY <<EOF valgrind.sh
env;
set -eux;
COMPLEMENT_BASE_IMAGE="\${1:-$complement_base_image}"
go test
-shuffle="${complement_shuffle}"
-parallel="${complement_parallel}"
-timeout="${complement_timeout}"
-count="${complement_count}"
-tags="${complement_tags}"
-skip="${complement_skip}"
-run="${complement_run}"
"${complement_tests}"
EOF
RUN echo $(tr -d '\n' < valgrind.sh) > valgrind.sh
ENTRYPOINT ["/bin/bash", "/usr/src/complement/valgrind.sh"]

View File

@@ -1,7 +1,7 @@
# syntax = docker/dockerfile:1.11-labs # syntax = docker/dockerfile:1.11-labs
FROM input AS smoketest-version FROM input AS smoke-version
COPY --link --from=input . .
RUN <<EOF RUN <<EOF
set -eux set -eux
tuwunel -V tuwunel -V
@@ -10,8 +10,8 @@ RUN <<EOF
EOF EOF
FROM input AS smoketest-startup FROM input AS smoke-startup
COPY --link --from=input . .
ENV TUWUNEL_LOG="info" ENV TUWUNEL_LOG="info"
ENV TUWUNEL_DATABASE_PATH="/tmp/smoketest.db" ENV TUWUNEL_DATABASE_PATH="/tmp/smoketest.db"
RUN <<EOF RUN <<EOF
@@ -25,18 +25,18 @@ RUN <<EOF
EOF EOF
FROM input AS smoketest-valgrind FROM input AS smoke-valgrind
ARG leak_check="no"
WORKDIR / ARG undef_value_errors="no"
COPY --link --from=valgrind . . COPY --link --from=input . .
ENV TUWUNEL_LOG="info" ENV TUWUNEL_LOG="info"
ENV TUWUNEL_DATABASE_PATH="/tmp/smoketest.db" ENV TUWUNEL_DATABASE_PATH="/tmp/smoketest.db"
RUN <<EOF RUN <<EOF
set -eux set -eux
ulimit -n 65535
valgrind \ valgrind \
--leak-check=no \ --leak-check=${leak_check} \
--undef-value-errors=no \ --undef-value-errors=${undef_value_errors} \
--exit-on-first-error=yes \ --exit-on-first-error=yes \
--error-exitcode=1 \ --error-exitcode=1 \
tuwunel \ tuwunel \
@@ -48,11 +48,8 @@ RUN <<EOF
EOF EOF
FROM input AS smoketest-perf FROM input AS smoke-perf
COPY --link --from=input . .
WORKDIR /
COPY --link --from=perf . .
ENV TUWUNEL_LOG="error" ENV TUWUNEL_LOG="error"
ENV TUWUNEL_DATABASE_PATH="/tmp/smoketest.db" ENV TUWUNEL_DATABASE_PATH="/tmp/smoketest.db"
RUN <<EOF RUN <<EOF

View File

@@ -226,8 +226,8 @@ group "lints" {
group "tests" { group "tests" {
targets = [ targets = [
"tests-unit", "unit",
"tests-smoke", "smoke",
"complement", "complement",
] ]
} }
@@ -324,11 +324,11 @@ target "complement-testee-valgrind" {
dockerfile = "${docker_dir}/Dockerfile.complement" dockerfile = "${docker_dir}/Dockerfile.complement"
matrix = cargo_rust_feat_sys matrix = cargo_rust_feat_sys
inherits = [ inherits = [
elem("smoketest-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]), elem("smoke-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
elem("complement-testee", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("complement-testee", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
] ]
contexts = { contexts = {
input = elem("target:smoketest-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) input = elem("target:smoke-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
complement-tester = elem("target:complement-tester-valgrind", [sys_name, sys_version, sys_target]) complement-tester = elem("target:complement-tester-valgrind", [sys_name, sys_version, sys_target])
} }
} }
@@ -361,7 +361,6 @@ target "complement-tester-valgrind" {
tags = [ tags = [
elem_tag("complement-tester-valgrind", [sys_name, sys_version, sys_target], "latest"), elem_tag("complement-tester-valgrind", [sys_name, sys_version, sys_target], "latest"),
] ]
target = "complement-tester-valgrind"
entitlements = ["network.host"] entitlements = ["network.host"]
matrix = sys matrix = sys
inherits = [ inherits = [
@@ -426,77 +425,75 @@ target "complement-config" {
# Smoke tests # Smoke tests
# #
group "tests-smoke" { group "smoke" {
targets = [ targets = [
"smoketest-version", "smoke-version",
"smoketest-startup", "smoke-startup",
#"smoketest-valgrind", #"smoke-valgrind",
#"smoketest-perf", #"smoke-perf",
] ]
} }
target "smoketest-valgrind" { target "smoke-valgrind" {
name = elem("smoketest-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) name = elem("smoke-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [ tags = [
elem_tag("smoketest-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"), elem_tag("smoke-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
] ]
target = "smoketest-valgrind" target = "smoke-valgrind"
entitlements = ["security.insecure"]
matrix = cargo_rust_feat_sys matrix = cargo_rust_feat_sys
inherits = [ inherits = [
elem("valgrind", [feat_set, sys_name, sys_version, sys_target]), elem("install-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
elem("smoketest", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("tests-smoke", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
] ]
contexts = { contexts = {
valgrind = elem("target:valgrind", [feat_set, sys_name, sys_version, sys_target]) input = elem("target:install-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
} }
} }
target "smoketest-perf" { target "smoke-perf" {
name = elem("smoketest-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) name = elem("smoke-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [ tags = [
elem_tag("smoketest-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"), elem_tag("smoke-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
] ]
target = "smoketest-perf" target = "smoke-perf"
entitlements = ["security.insecure"]
matrix = cargo_rust_feat_sys matrix = cargo_rust_feat_sys
inherits = [ inherits = [
elem("perf", [feat_set, sys_name, sys_version, sys_target]), elem("install-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
elem("smoketest", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("tests-smoke", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
] ]
contexts = { contexts = {
perf = elem("target:valgrind", [feat_set, sys_name, sys_version, sys_target]) input = elem("target:install-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
} }
} }
target "smoketest-startup" { target "smoke-startup" {
name = elem("smoketest-startup", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) name = elem("smoke-startup", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [ tags = [
elem_tag("smoketest-startup", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest") elem_tag("smoke-startup", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest")
] ]
target = "smoketest-startup" target = "smoke-startup"
matrix = cargo_rust_feat_sys matrix = cargo_rust_feat_sys
inherits = [ inherits = [
elem("smoketest", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("tests-smoke", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
] ]
} }
target "smoketest-version" { target "smoke-version" {
name = elem("smoketest-version", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) name = elem("smoke-version", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [ tags = [
elem_tag("smoketest-version", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"), elem_tag("smoke-version", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
] ]
target = "smoketest-version" target = "smoke-version"
matrix = cargo_rust_feat_sys matrix = cargo_rust_feat_sys
inherits = [ inherits = [
elem("smoketest", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) elem("tests-smoke", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
] ]
} }
target "smoketest" { target "tests-smoke" {
name = elem("smoketest", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) name = elem("tests-smoke", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [ tags = [
elem_tag("smoketest", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"), elem_tag("tests-smoke", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
] ]
output = ["type=cacheonly,compression=zstd,mode=min,compression-level=${cache_compress_level}"] output = ["type=cacheonly,compression=zstd,mode=min,compression-level=${cache_compress_level}"]
dockerfile = "${docker_dir}/Dockerfile.smoketest" dockerfile = "${docker_dir}/Dockerfile.smoketest"
@@ -596,6 +593,37 @@ target "static" {
EOF EOF
} }
target "install-valgrind" {
name = elem("install-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [
elem_tag("install-valgrind", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
]
matrix = cargo_rust_feat_sys
inherits = [
elem("valgrind", [feat_set, sys_name, sys_version, sys_target]),
elem("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
]
contexts = {
input = elem("target:valgrind", [feat_set, sys_name, sys_version, sys_target])
bins = elem("target:build-bins", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
}
}
target "install-perf" {
name = elem("install-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [
elem_tag("install-perf", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
]
matrix = cargo_rust_feat_sys
inherits = [
elem("perf", [feat_set, sys_name, sys_version, sys_target]),
elem("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]),
]
contexts = {
input = elem("target:perf", [feat_set, sys_name, sys_version, sys_target])
}
}
target "install" { target "install" {
name = elem("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) name = elem("install", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [ tags = [
@@ -742,10 +770,10 @@ target "deb" {
# Unit tests # Unit tests
# #
target "tests-unit" { target "unit" {
name = elem("tests-unit", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target]) name = elem("unit", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
tags = [ tags = [
elem_tag("tests-unit", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"), elem_tag("unit", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target], "latest"),
] ]
target = "cargo" target = "cargo"
matrix = cargo_rust_feat_sys matrix = cargo_rust_feat_sys
@@ -1527,31 +1555,36 @@ sys = {
target "perf" { target "perf" {
description = "Base runtime environment with linux-perf installed." description = "Base runtime environment with linux-perf installed."
name = elem("perf", [sys_name, sys_version, sys_target]) name = elem("perf", [feat_set, sys_name, sys_version, sys_target])
tags = [ tags = [
elem_tag("perf", [sys_name, sys_version, sys_target], "latest"), elem_tag("perf", [feat_set, sys_name, sys_version, sys_target], "latest"),
] ]
matrix = sys matrix = feat_sys
inherits = [ inherits = [
elem("base", [sys_name, sys_version, sys_target]) elem("runtime", [feat_set, sys_name, sys_version, sys_target])
] ]
contexts = { contexts = {
input = elem("target:base", [sys_name, sys_version, sys_target]) input = elem("target:runtime", [feat_set, sys_name, sys_version, sys_target])
} }
} }
target "valgrind" { target "valgrind" {
description = "Base runtime environment with valgrind installed." description = "Base runtime environment with valgrind installed."
name = elem("valgrind", [sys_name, sys_version, sys_target]) name = elem("valgrind", [feat_set, sys_name, sys_version, sys_target])
tags = [ tags = [
elem_tag("valgrind", [sys_name, sys_version, sys_target], "latest"), elem_tag("valgrind", [feat_set, sys_name, sys_version, sys_target], "latest"),
] ]
matrix = sys matrix = feat_sys
inherits = [ inherits = [
elem("base", [sys_name, sys_version, sys_target]) elem("runtime", [feat_set, sys_name, sys_version, sys_target])
] ]
contexts = { contexts = {
input = elem("target:base", [sys_name, sys_version, sys_target]) input = elem("target:runtime", [feat_set, sys_name, sys_version, sys_target])
}
args = {
packages = join(" ", [
"valgrind",
])
} }
} }