Skip to content

Commit

Permalink
add script to run integration tests
Browse files Browse the repository at this point in the history
Signed-off-by: Kristoffer Dalby <[email protected]>
  • Loading branch information
kradalby committed Jul 14, 2023
1 parent 4a0e393 commit 1b344ac
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 2 deletions.
1 change: 1 addition & 0 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@
nfpm
gotestsum
gotests
ksh

# 'dot' is needed for pprof graphs
# go tool pprof -http=: <source>
Expand Down
2 changes: 0 additions & 2 deletions hscontrol/poll.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,6 @@ func (h *Headscale) handlePoll(
) {
logInfo, logErr := logPollFunc(mapRequest, machine, isNoise)

// TODO(kradalby): This is a stepping stone, mapper should be initiated once
// per client or something similar
mapp := mapper.NewMapper(
h.db,
h.privateKey2019,
Expand Down
72 changes: 72 additions & 0 deletions integration/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
#!/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
ocker network prune -f >/dev/null 2>&1

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

0 comments on commit 1b344ac

Please sign in to comment.