diff --git a/Makefile b/Makefile index 50aa76ee..b1fa44d2 100644 --- a/Makefile +++ b/Makefile @@ -82,13 +82,25 @@ test-e2e: containers/e2e/local-build "$(MAKE)" test-e2e-convert test-e2e-convert: + @echo "Converting go coverage" go tool covdata textfmt \ - -i $(shell find ${PWD}/e2e/coverage/ -mindepth 1 -type d | xargs | sed 's/ /,/g') \ + -i $(shell find ${PWD}/e2e/coverage/go/ -mindepth 1 -type d | xargs | sed 's/ /,/g') \ --pkg $(shell go list ./... | grep -v goauthentik.io/platform/vnd | grep -v goauthentik.io/platform/pkg/pb | xargs | sed 's/ /,/g') \ - -o ${PWD}/coverage_in_container.txt + -o "${PWD}/coverage_in_container.txt" go tool cover \ - -html ${PWD}/coverage_in_container.txt \ - -o ${PWD}/coverage_in_container.html + -html "${PWD}/coverage_in_container.txt" \ + -o "${PWD}/coverage_in_container.html" + @echo "Converting rust coverage" + llvm-profdata merge \ + -sparse \ + -o "${PWD}/rust.profdata" \ + $(shell find ${PWD}/e2e/coverage/rs/ -type f -name '*.profraw') + llvm-cov show \ + -Xdemangler="rustfilt ${PWD}/cache/nss/release/libauthentik_nss.so" \ + -instr-profile="${PWD}/rust.profdata" > coverage_nss.txt + llvm-cov show \ + -Xdemangler="rustfilt ${PWD}/cache/pam/release/libauthentik_pam.so" \ + -instr-profile="${PWD}/rust.profdata" > coverage_pam.txt test-agent: go run -v ./cmd/agent_local/ diff --git a/containers/e2e/Dockerfile b/containers/e2e/Dockerfile index 24996505..5a1d294e 100644 --- a/containers/e2e/Dockerfile +++ b/containers/e2e/Dockerfile @@ -12,8 +12,8 @@ RUN --mount=type=bind,target=/build/bin,src=./bin \ mkdir -p /etc/systemd/system/ak-sysd.service.d && \ mkdir -p /etc/systemd/system/ak-agent.service.d && \ mkdir -p /tmp/ak-coverage && \ - echo '[Service]\nEnvironment="GOCOVERDIR=/tmp/ak-coverage/ak-sysd"' > /etc/systemd/system/ak-sysd.service.d/coverage.conf && \ + echo '[Service]\nEnvironment="GOCOVERDIR=/tmp/ak-coverage/go/ak-sysd"' > /etc/systemd/system/ak-sysd.service.d/coverage.conf && \ cp /etc/systemd/user/ak-agent.service /usr/lib/systemd/system && \ - echo '[Service]\nEnvironment="GOCOVERDIR=/tmp/ak-coverage/ak-agent"\nEnvironment="HOME=/root"\' > /etc/systemd/system/ak-agent.service.d/coverage.conf && \ + echo '[Service]\nEnvironment="GOCOVERDIR=/tmp/ak-coverage/go/ak-agent"\nEnvironment="HOME=/root"\' > /etc/systemd/system/ak-agent.service.d/coverage.conf && \ sed -i 's/false/true/g' /etc/authentik/config.json && \ systemctl enable ak-agent diff --git a/containers/e2e/Makefile b/containers/e2e/Makefile index fa78224b..1df265f2 100644 --- a/containers/e2e/Makefile +++ b/containers/e2e/Makefile @@ -16,7 +16,8 @@ local-build: .PHONY: build-packages build-packages: $(MAKE) -C "${TOP}" agent/package-gnu/linux AK_GO_BUILD_FLAGS=-cover - $(MAKE) -C "${TOP}" -j$(shell nproc) \ + mkdir -p ${TOP}/e2e/coverage/rs + LLVM_PROFILE_FILE="${TOP}/e2e/coverage/rs/default_%m_%p.profraw" $(MAKE) -C "${TOP}" -j$(shell nproc) \ sysd/package-gnu/linux \ cli/package-gnu/linux \ nss/package \ diff --git a/e2e/utils.go b/e2e/utils.go index e5aa9fec..60e43359 100644 --- a/e2e/utils.go +++ b/e2e/utils.go @@ -169,9 +169,9 @@ func testMachine(t testing.TB) testcontainers.Container { // Subdirectories we save coverage in coverageSub := []string{ - "cli", - "ak-sysd", - "ak-agent", + "go/cli", + "go/ak-sysd", + "go/ak-agent", "rs", } for _, sub := range coverageSub { @@ -188,8 +188,8 @@ func testMachine(t testing.TB) testcontainers.Container { }, ExposedPorts: []string{"22"}, Env: map[string]string{ - "GOCOVERDIR": "/tmp/ak-coverage/cli", - // "LLVM_PROFILE_FILE": "/tmp/ak-coverage/rs/default_%m_%p.profraw", + "GOCOVERDIR": "/tmp/ak-coverage/go/cli", + "LLVM_PROFILE_FILE": "/tmp/ak-coverage/rs/default_%m_%p.profraw", }, HostConfigModifier: func(hc *container.HostConfig) { hc.Privileged = true