mirror of
https://gitee.com/jiuyilian/embedded-framework.git
synced 2025-01-06 10:16:51 -05:00
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
|