mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	add script to run integration tests
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:
		
							parent
							
								
									e3acc95859
								
							
						
					
					
						commit
						47255d267e
					
				| @ -96,6 +96,7 @@ | ||||
|           nfpm | ||||
|           gotestsum | ||||
|           gotests | ||||
|           ksh | ||||
| 
 | ||||
|           # 'dot' is needed for pprof graphs | ||||
|           # go tool pprof -http=: <source> | ||||
|  | ||||
| @ -30,9 +30,8 @@ func (h *Headscale) handlePoll( | ||||
| 	mapRequest tailcfg.MapRequest, | ||||
| 	isNoise bool, | ||||
| ) { | ||||
| 	// TODO(kradalby): This is a stepping stone, mapper should be initiated once
 | ||||
| 	// per client or something similar
 | ||||
| 	mapp := mapper.NewMapper(h.db, | ||||
| 	mapp := mapper.NewMapper( | ||||
| 		h.db, | ||||
| 		h.privateKey2019, | ||||
| 		isNoise, | ||||
| 		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 New Issue
	
	Block a user