100 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env sh
 | 
						|
 | 
						|
run_functional_tests() {
 | 
						|
  echo "Small Response Body:"
 | 
						|
  curl http://localhost:8080/
 | 
						|
 | 
						|
  echo "\n\nEmpty Response:"
 | 
						|
  curl http://localhost:8080/empty
 | 
						|
 | 
						|
  echo "\n\nEcho Body:"
 | 
						|
  curl -XPOST http://localhost:8080/echo -d'Echo test'
 | 
						|
 | 
						|
  echo "\n\nGet Header:"
 | 
						|
  curl http://localhost:8080/host
 | 
						|
 | 
						|
  echo "\n\nRequest Body larger than max in mem size:"
 | 
						|
  dd if=/dev/urandom of=test.dat bs=25165824 count=1 2> /dev/null
 | 
						|
  curl -H'Expect:' --data-binary @test.dat -o r1.dat http://localhost:8080/large
 | 
						|
  diff r1.dat test.dat
 | 
						|
 | 
						|
  echo "\n\nChunked Response:"
 | 
						|
  curl http://localhost:8080/chunked
 | 
						|
 | 
						|
  echo "\n\nChunked Response keep-alive:"
 | 
						|
  curl http://localhost:8080/chunked http://localhost:8080/chunked
 | 
						|
 | 
						|
  echo "\n\nChunked Response close:"
 | 
						|
  curl -H'Connection: close' http://localhost:8080/chunked http://localhost:8080/chunked
 | 
						|
 | 
						|
  echo "\n\nChunked Request keep-alive: (expect empty)"
 | 
						|
  dd if=/dev/urandom of=test.dat bs=262144 count=1 2> /dev/null
 | 
						|
  curl -H'Expect:' -H'Transfer-Encoding: chunked' -XPOST --data-binary @test.dat -o r1.dat http://localhost:8080/chunked-req -o r2.dat http://localhost:8080/chunked-req
 | 
						|
  diff r1.dat test.dat
 | 
						|
  diff r2.dat test.dat
 | 
						|
 | 
						|
  echo "\n\nChunked Request close: (expect empty)"
 | 
						|
  curl -H'Expect:' -H'Transfer-Encoding: chunked' -XPOST --data-binary @test.dat -o r3.dat http://localhost:8080/chunked-req -o r4.dat http://localhost:8080/chunked-req
 | 
						|
  diff r3.dat test.dat
 | 
						|
  diff r4.dat test.dat
 | 
						|
 | 
						|
  echo "\n\nPoll Server:"
 | 
						|
  curl http://localhost:8081/ &
 | 
						|
  sleep 1
 | 
						|
  curl http://localhost:8080/poll
 | 
						|
  sleep 1
 | 
						|
  curl http://localhost:8080/poll
 | 
						|
 | 
						|
  echo "\n\nIterate Headers:"
 | 
						|
  curl -H'User-Agent: test-ua' -H'Foo-Header: foo-bar' http://localhost:8080/headers
 | 
						|
 | 
						|
  echo "\nStress Test keep-alive:"
 | 
						|
  ab -k -c 200 -n 100000 http://127.0.0.1:8080/ > keep-alive.bench
 | 
						|
  cat keep-alive.bench | grep Complete
 | 
						|
  cat keep-alive.bench | grep Non-2xx
 | 
						|
  cat keep-alive.bench 1>&2
 | 
						|
 | 
						|
  echo "\nStress Test close:"
 | 
						|
  ab -c 20 -n 1000 http://127.0.0.1:8080/ > connection-close.bench
 | 
						|
  cat connection-close.bench | grep Complete
 | 
						|
  cat connection-close.bench | grep Non-2xx
 | 
						|
  cat connection-close.bench 1>&2
 | 
						|
 | 
						|
  echo "\nStress Test large body:"
 | 
						|
  dd if=/dev/urandom of=test.dat bs=7388608 count=1 2> /dev/null
 | 
						|
  ab -c 2 -n 10 -p test.dat http://127.0.0.1:8080/echo > large-file.bench
 | 
						|
  cat large-file.bench | grep Complete
 | 
						|
  cat large-file.bench | grep Non-2xx
 | 
						|
  cat large-file.bench 1>&2
 | 
						|
  rm *.dat *.bench
 | 
						|
}
 | 
						|
 | 
						|
run_valgrind_functional_tests() {
 | 
						|
  valgrind --leak-check=full \
 | 
						|
           --show-leak-kinds=all \
 | 
						|
           --track-origins=yes \
 | 
						|
           --verbose \
 | 
						|
           --log-file=valgrind-log.txt \
 | 
						|
           ./http-server &
 | 
						|
  serverpid=$!
 | 
						|
  sleep 3
 | 
						|
  run_functional_tests
 | 
						|
  kill $serverpid
 | 
						|
  sleep 2
 | 
						|
  cat valgrind-log.txt | cut -d = -f 5 | grep ERROR > valgrind-results.txt
 | 
						|
  cat valgrind-log.txt | cut -d = -f 5 | grep 'All heap blocks were freed' >> valgrind-results.txt
 | 
						|
  cat valgrind-log.txt 1>&2
 | 
						|
  diff valgrind-results.txt test/valgrind.txt
 | 
						|
}
 | 
						|
 | 
						|
run_base_functional_tests() {
 | 
						|
  ./build/test/functional/functional-test-server$1 &
 | 
						|
  serverpid=$!
 | 
						|
  sleep 1
 | 
						|
  run_functional_tests > test-results$1.txt
 | 
						|
  kill $serverpid
 | 
						|
  diff test-results$1.txt test/functional/results.txt
 | 
						|
}
 | 
						|
 | 
						|
run_base_functional_tests $1
 |