mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-11-04 01:51:04 +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
 | 
					          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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user