mirror of
https://github.com/juanfont/headscale.git
synced 2024-11-26 08:53:05 +00:00
add script to run integration tests
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:
parent
e3acc95859
commit
47255d267e
3 changed files with 77 additions and 3 deletions
|
@ -96,6 +96,7 @@
|
||||||
nfpm
|
nfpm
|
||||||
gotestsum
|
gotestsum
|
||||||
gotests
|
gotests
|
||||||
|
ksh
|
||||||
|
|
||||||
# 'dot' is needed for pprof graphs
|
# 'dot' is needed for pprof graphs
|
||||||
# go tool pprof -http=: <source>
|
# go tool pprof -http=: <source>
|
||||||
|
|
|
@ -30,9 +30,8 @@ func (h *Headscale) handlePoll(
|
||||||
mapRequest tailcfg.MapRequest,
|
mapRequest tailcfg.MapRequest,
|
||||||
isNoise bool,
|
isNoise bool,
|
||||||
) {
|
) {
|
||||||
// TODO(kradalby): This is a stepping stone, mapper should be initiated once
|
mapp := mapper.NewMapper(
|
||||||
// per client or something similar
|
h.db,
|
||||||
mapp := mapper.NewMapper(h.db,
|
|
||||||
h.privateKey2019,
|
h.privateKey2019,
|
||||||
isNoise,
|
isNoise,
|
||||||
h.DERPMap,
|
h.DERPMap,
|
||||||
|
|
74
integration/run.sh
Executable file
74
integration/run.sh
Executable file
|
@ -0,0 +1,74 @@
|
||||||
|
#!/usr/bin/env ksh
|
||||||
|
|
||||||
|
run_tests() {
|
||||||
|
test_name=$1
|
||||||
|
num_tests=$2
|
||||||
|
|
||||||
|
success_count=0
|
||||||
|
failure_count=0
|
||||||
|
runtimes=()
|
||||||
|
|
||||||
|
echo "-------------------"
|
||||||
|
echo "Running Tests for $test_name"
|
||||||
|
|
||||||
|
for ((i = 1; i <= num_tests; i++)); do
|
||||||
|
docker network prune -f >/dev/null 2>&1
|
||||||
|
docker rm headscale-test-suite || true
|
||||||
|
docker kill "$(docker ps -q)" || true
|
||||||
|
|
||||||
|
start=$(date +%s)
|
||||||
|
docker run \
|
||||||
|
--tty --rm \
|
||||||
|
--volume ~/.cache/hs-integration-go:/go \
|
||||||
|
--name headscale-test-suite \
|
||||||
|
--volume "$PWD:$PWD" -w "$PWD"/integration \
|
||||||
|
--volume /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
--volume "$PWD"/control_logs:/tmp/control \
|
||||||
|
golang:1 \
|
||||||
|
go test ./... \
|
||||||
|
-tags ts2019 \
|
||||||
|
-failfast \
|
||||||
|
-timeout 120m \
|
||||||
|
-parallel 1 \
|
||||||
|
-run "^$test_name\$" >/dev/null 2>&1
|
||||||
|
status=$?
|
||||||
|
end=$(date +%s)
|
||||||
|
|
||||||
|
runtime=$((end - start))
|
||||||
|
runtimes+=("$runtime")
|
||||||
|
|
||||||
|
if [ "$status" -eq 0 ]; then
|
||||||
|
((success_count++))
|
||||||
|
else
|
||||||
|
((failure_count++))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "-------------------"
|
||||||
|
echo "Test Summary for $test_name"
|
||||||
|
echo "-------------------"
|
||||||
|
echo "Total Tests: $num_tests"
|
||||||
|
echo "Successful Tests: $success_count"
|
||||||
|
echo "Failed Tests: $failure_count"
|
||||||
|
echo "Runtimes in seconds: ${runtimes[*]}"
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check if both arguments are provided
|
||||||
|
if [ $# -ne 2 ]; then
|
||||||
|
echo "Usage: $0 <test_name> <num_tests>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
test_name=$1
|
||||||
|
num_tests=$2
|
||||||
|
|
||||||
|
docker network prune -f
|
||||||
|
|
||||||
|
if [ "$test_name" = "all" ]; then
|
||||||
|
rg --regexp "func (Test.+)\(.*" ./integration/ --replace '$1' --no-line-number --no-filename --no-heading | sort | while read -r test_name; do
|
||||||
|
run_tests "$test_name" "$num_tests"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
run_tests "$test_name" "$num_tests"
|
||||||
|
fi
|
Loading…
Reference in a new issue