diff --git a/.travis.yml b/.travis.yml index 2b230ce5..244c507d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,7 +30,7 @@ install: # - Rscript -e 'covr::coveralls()' script: - - if [ "$COVERITY_SCAN_BRANCH" != 1 -a "$TRAVIS_OS_NAME" = "osx" ]; then mkdir build && cd build && cmake -DOPENSSL_ROOT_DIR="/usr/local/opt/openssl" $CMAKE_ARGS .. && cmake --build .; else if [ "$COVERITY_SCAN_BRANCH" != 1 -a "$TRAVIS_OS_NAME" = "linux" ]; then mkdir build && cd build && if [ "$LWS_METHOD" = "lwsws" ] ; then cmake -DLWS_OPENSSL_LIBRARIES="/usr/local/lib/libssl.so;/usr/local/lib/libcrypto.so" -DLWS_OPENSSL_INCLUDE_DIRS="/usr/local/include/openssl" $CMAKE_ARGS .. && cmake --build . && sudo make install && ../minimal-examples/selftests.sh && ../scripts/h2spec.sh && ../test-apps/attack.sh && ../scripts/h2load.sh && ../scripts/autobahn-test.sh ; else cmake $CMAKE_ARGS .. && cmake --build . ; fi ; fi ; fi + - ./scripts/travis_control.sh sudo: required dist: trusty addons: diff --git a/README.md b/README.md index bc6d1554..081d1729 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ Autobahn Server|480|Testing lws ws client, including permessage-deflate Autobahn Client|480|Testing lws ws server, including permaessage-deflate h2spec|146|Http/2 server compliance suite (in strict mode) h2load|6|Http/2 server load tool (checks 10K / 100K in h1 and h2, at 1, 10, 100 concurrency) +h2load SMP|6|Http/2 and http/1.1 server load checks on SMP server build The over 1,400 tests run on every commit take most of an hour to complete. If any problems are found, it breaks the travis build, generating an email. diff --git a/scripts/h2load-smp.sh b/scripts/h2load-smp.sh new file mode 100755 index 00000000..5eda06ba --- /dev/null +++ b/scripts/h2load-smp.sh @@ -0,0 +1,63 @@ +#!/bin/bash +# +# run from the build dir + +echo +echo "----------------------------------------------" +echo "------- tests: h2load SMP" +echo + +PW=`pwd` + +cd ../minimal-examples/http-server/minimal-http-server-smp +$PW/bin/lws-minimal-http-server-smp -s & +R=$! +sleep 0.5s + +# check h1 with various loads + +h2load -n 10000 -c 1 --h1 https://127.0.0.1:7681 +if [ $? -ne 0 ] ; then + Q=$? + kill $R + wait $R + exit $Q +fi +h2load -n 10000 -c 10 --h1 https://127.0.0.1:7681 +if [ $? -ne 0 ] ; then + Q=$? + kill $R + wait $R + exit $Q +fi +h2load -n 100000 -c 100 --h1 https://127.0.0.1:7681 +if [ $? -ne 0 ] ; then + Q=$? + kill $R + wait $R + exit $Q +fi + +# check h2 with various loads + +h2load -n 10000 -c 1 https://127.0.0.1:7681 +if [ $? -ne 0 ] ; then + Q=$? + kill $R + wait $R + exit $Q +fi +h2load -n 10000 -c 10 https://127.0.0.1:7681 +if [ $? -ne 0 ] ; then + Q=$? + kill $R + wait $R + exit $Q +fi +h2load -n 100000 -c 100 https://127.0.0.1:7681 +Q=$? + +kill $R +wait $R +exit $Q + diff --git a/scripts/travis_control.sh b/scripts/travis_control.sh new file mode 100755 index 00000000..2eef3cf4 --- /dev/null +++ b/scripts/travis_control.sh @@ -0,0 +1,33 @@ +#/bin/bash + +if [ "$COVERITY_SCAN_BRANCH" != 1 -a "$TRAVIS_OS_NAME" = "osx" ]; then + mkdir build && cd build && + cmake -DOPENSSL_ROOT_DIR="/usr/local/opt/openssl" $CMAKE_ARGS .. && + cmake --build . +else + if [ "$COVERITY_SCAN_BRANCH" != 1 -a "$TRAVIS_OS_NAME" = "linux" ]; then + mkdir build && cd build && + if [ "$LWS_METHOD" = "lwsws" ] ; then + cmake -DLWS_OPENSSL_LIBRARIES="/usr/local/lib/libssl.so;/usr/local/lib/libcrypto.so" \ + -DLWS_OPENSSL_INCLUDE_DIRS="/usr/local/include/openssl" $CMAKE_ARGS .. && + cmake --build . && + sudo make install && + ../minimal-examples/selftests.sh && + ../scripts/h2spec.sh && + ../test-apps/attack.sh && + ../scripts/h2load.sh && + ../scripts/autobahn-test.sh + else + if [ "$LWS_METHOD" = "smp" ] ; then + cmake -DLWS_OPENSSL_LIBRARIES="/usr/local/lib/libssl.so;/usr/local/lib/libcrypto.so" \ + -DLWS_OPENSSL_INCLUDE_DIRS="/usr/local/include/openssl" $CMAKE_ARGS .. && + cmake --build . && + ../scripts/h2load-smp.sh + else + cmake $CMAKE_ARGS .. && + cmake --build . + fi + fi + fi +fi + diff --git a/scripts/travis_install.sh b/scripts/travis_install.sh index 0f6287de..4cbc0023 100755 --- a/scripts/travis_install.sh +++ b/scripts/travis_install.sh @@ -21,6 +21,16 @@ then sudo update-ca-certificates fi + if [ "$LWS_METHOD" == "smp" ]; + then + sudo apt-get install -y -qq realpath libjemalloc1 libev4 + wget https://libwebsockets.org/openssl-1.1.0-trusty.tar.bz2 -O/tmp/openssl.tar.bz2 + cd / + sudo tar xf /tmp/openssl.tar.bz2 + sudo ldconfig + sudo update-ca-certificates + fi + if [ "$LWS_METHOD" == "libev" ]; then sudo apt-get install -y -qq libev-dev;