ctest: adapt background script

This commit is contained in:
Andy Green 2021-01-25 06:26:10 +00:00
parent d5c90645c4
commit 56f7007185
14 changed files with 96 additions and 65 deletions

View File

@ -918,7 +918,7 @@ lws_create_context(const struct lws_context_creation_info *info)
context->timeout_secs = info->timeout_secs;
else
#endif
context->timeout_secs = 5;
context->timeout_secs = 10;
#if defined(LWS_ROLE_H1) || defined(LWS_ROLE_H2)
if (info->max_http_header_data)

View File

@ -17,8 +17,8 @@ require_lws_config(LWS_WITH_TLS 1 requirements)
if (requirements)
add_executable(${SAMP} ${SRCS})
if (LWS_CTEST_INTERNET_AVAILABLE)
add_test(NAME http-client-h2-rxflow-warmcat COMMAND lws-minimal-http-client-h2-rxflow --ignore-sigterm)
add_test(NAME http-client-h2-rxflow-warmcat-h1 COMMAND lws-minimal-http-client-h2-rxflow --ignore-sigterm --h1)
add_test(NAME http-client-h2-rxflow-warmcat COMMAND lws-minimal-http-client-h2-rxflow)
add_test(NAME http-client-h2-rxflow-warmcat-h1 COMMAND lws-minimal-http-client-h2-rxflow --h1)
set_tests_properties(http-client-h2-rxflow-warmcat
http-client-h2-rxflow-warmcat-h1
PROPERTIES

View File

@ -17,8 +17,8 @@ if (requirements)
add_executable(${SAMP} ${SRCS})
if (LWS_CTEST_INTERNET_AVAILABLE)
add_test(NAME http-client-hugeurl-warmcat COMMAND lws-minimal-http-client-hugeurl --ignore-sigterm)
add_test(NAME http-client-hugeurl-warmcat-h1 COMMAND lws-minimal-http-client-hugeurl --ignore-sigterm --h1)
add_test(NAME http-client-hugeurl-warmcat COMMAND lws-minimal-http-client-hugeurl )
add_test(NAME http-client-hugeurl-warmcat-h1 COMMAND lws-minimal-http-client-hugeurl --h1)
set_tests_properties(http-client-hugeurl-warmcat
http-client-hugeurl-warmcat-h1
PROPERTIES

View File

@ -73,7 +73,7 @@ else()
add_test(NAME st_hcm_srv COMMAND
${CMAKE_SOURCE_DIR}/scripts/ctest-background.sh
hcm_srv $<TARGET_FILE:lws-minimal-http-server-tls>
--port ${PORT_HCM_SRV} --ignore-sigterm)
--port ${PORT_HCM_SRV} )
add_test(NAME ki_hcm_srv COMMAND
${CMAKE_SOURCE_DIR}/scripts/ctest-background-kill.sh
hcm_srv $<TARGET_FILE_NAME:lws-minimal-http-server-tls>
@ -82,7 +82,7 @@ else()
${CMAKE_SOURCE_DIR}/scripts/ctest-background.sh
hcmp_srv $<TARGET_FILE:test-server> -s
-r ${CMAKE_SOURCE_DIR}/destdir/usr/local/share/libwebsockets-test-server/
--port 1${PORT_HCM_SRV} --ignore-sigterm)
--port 1${PORT_HCM_SRV} )
add_test(NAME ki_hcmp_srv COMMAND
${CMAKE_SOURCE_DIR}/scripts/ctest-background-kill.sh
hcmp_srv $<TARGET_FILE_NAME:test-server>
@ -111,7 +111,7 @@ endif()
add_test(NAME http-client-multi COMMAND lws-minimal-http-client-multi
-l --port ${PORT_HCM_SRV})
add_test(NAME http-client-multi-h1 COMMAND lws-minimal-http-client-multi
--h1 -l --port ${PORT_HCM_SRV})
--h1 -l --port ${PORT_HCM_SRV} -d1151)
add_test(NAME http-client-multi-pipe COMMAND lws-minimal-http-client-multi
-p -l --port ${PORT_HCM_SRV})
add_test(NAME http-client-multi-h1-pipe COMMAND lws-minimal-http-client-multi

View File

@ -49,7 +49,7 @@ else()
hcp_srv
$<TARGET_FILE:test-server>
-r ${CMAKE_SOURCE_DIR}/destdir/usr/local/share/libwebsockets-test-server/
-s --port ${PORT_HCP_SRV} --ignore-sigterm)
-s --port ${PORT_HCP_SRV} )
add_test(NAME ki_hcp_srv COMMAND
${CMAKE_SOURCE_DIR}/scripts/ctest-background-kill.sh hcp_srv
$<TARGET_FILE_NAME:test-server> --port ${PORT_HCP_SRV})

View File

@ -17,8 +17,8 @@ if (requirements)
add_executable(${SAMP} ${SRCS})
# if (LWS_CTEST_INTERNET_AVAILABLE)
# add_test(NAME http-client-warmcat COMMAND lws-minimal-http-client --ignore-sigterm)
# add_test(NAME http-client-warmcat-h1 COMMAND lws-minimal-http-client --ignore-sigterm --h1)
# add_test(NAME http-client-warmcat COMMAND lws-minimal-http-client )
# add_test(NAME http-client-warmcat-h1 COMMAND lws-minimal-http-client --h1)
# set_tests_properties(http-client-warmcat
# http-client-warmcat-h1
# PROPERTIES

View File

@ -19,6 +19,7 @@
#include <libwebsockets.h>
#include <string.h>
#include <signal.h>
#include <errno.h>
static int interrupted;
@ -42,20 +43,43 @@ static const struct lws_http_mount mount = {
/* .basic_auth_login_file */ NULL,
};
#if !defined(WIN32)
void sigint_handler(int sig, siginfo_t *siginfo, void *context)
{
pid_t sender_pid = siginfo->si_pid;
lwsl_err("%s: sig %d from pid %lu\n", __func__, sig, (unsigned long)sender_pid);
interrupted = 1;
}
#else
void sigint_handler(int sig)
{
interrupted = 1;
}
#endif
int main(int argc, const char **argv)
{
struct lws_context_creation_info info;
struct lws_context *context;
#if !defined(WIN32)
struct sigaction siga;
#endif
const char *p;
int n = 0;
signal(SIGINT, sigint_handler);
#if !defined(WIN32)
memset(&siga, 0, sizeof(siga));
siga.sa_sigaction = sigint_handler;
siga.sa_flags |= SA_SIGINFO; // get detail info
// change signal action,
if (sigaction(SIGINT, &siga, NULL) != 0) {
printf("error sigaction()");
return errno;
}
#else
signal(SIGINT, sigint_handler);
#endif
memset(&info, 0, sizeof info); /* otherwise uninitialized garbage */
lws_cmdline_option_handle_builtin(argc, argv, &info);
lwsl_user("LWS minimal http server TLS | visit https://localhost:7681\n");

View File

@ -51,7 +51,7 @@ if (requirements)
add_test(NAME st_ssproxysigv4 COMMAND
${CMAKE_SOURCE_DIR}/scripts/ctest-background.sh
ssproxysigv4 $<TARGET_FILE:lws-minimal-secure-streams-proxy>
-i ${CTEST_SOCKET_PATH} --ignore-sigterm)
-i ${CTEST_SOCKET_PATH} )
set_tests_properties(st_ssproxysigv4 PROPERTIES WORKING_DIRECTORY . FIXTURES_SETUP ssproxysigv4 TIMEOUT 800)
add_test(NAME ki_ssproxysigv4 COMMAND

View File

@ -71,13 +71,13 @@ if (requirements)
add_test(NAME st_ssprxsmd_sspc COMMAND
${CMAKE_SOURCE_DIR}/scripts/ctest-background.sh
ssproxysmd_sspc $<TARGET_FILE:lws-minimal-secure-streams-proxy>
-i ${CTEST_SOCKET_PATH} --ignore-sigterm -d1039)
-i ${CTEST_SOCKET_PATH} -d1039)
set_tests_properties(st_ssprxsmd_sspc PROPERTIES WORKING_DIRECTORY . FIXTURES_SETUP ssproxysmd_sspc TIMEOUT 800)
add_test(NAME ki_ssprxsmd_sspc COMMAND
${CMAKE_SOURCE_DIR}/scripts/ctest-background-kill.sh
ssproxysmd_sspc $<TARGET_FILE:lws-minimal-secure-streams-proxy>
-i ${CTEST_SOCKET_PATH} --ignore-sigterm -d1039)
-i ${CTEST_SOCKET_PATH} -d1039)
set_tests_properties(ki_ssprxsmd_sspc PROPERTIES FIXTURES_CLEANUP ssproxysmd_sspc)
#
@ -114,13 +114,13 @@ if (requirements)
add_test(NAME st_mulssprxsmd_sspc COMMAND
${CMAKE_SOURCE_DIR}/scripts/ctest-background.sh
mulssproxysmd_sspc $<TARGET_FILE:lws-minimal-secure-streams-proxy>
-i ${CTEST_SOCKET_PATH} --ignore-sigterm -d1039)
-i ${CTEST_SOCKET_PATH} -d1039)
set_tests_properties(st_mulssprxsmd_sspc PROPERTIES WORKING_DIRECTORY . FIXTURES_SETUP mulssproxysmd_sspc TIMEOUT 800)
add_test(NAME ki_mulssprxsmd_sspc COMMAND
${CMAKE_SOURCE_DIR}/scripts/ctest-background-kill.sh
mulssproxysmd_sspc $<TARGET_FILE:lws-minimal-secure-streams-proxy>
-i ${CTEST_SOCKET_PATH} --ignore-sigterm -d1039)
-i ${CTEST_SOCKET_PATH} -d1039)
set_tests_properties(ki_mulssprxsmd_sspc PROPERTIES FIXTURES_CLEANUP mulssproxysmd_sspc)
#

View File

@ -50,7 +50,7 @@ if (requirements)
add_test(NAME st_sstfproxy COMMAND
${CMAKE_SOURCE_DIR}/scripts/ctest-background.sh
sstfproxy $<TARGET_FILE:lws-minimal-secure-streams-proxy>
-i ${CTEST_SOCKET_PATH} --ignore-sigterm -d1039)
-i ${CTEST_SOCKET_PATH} -d1039)
set_tests_properties(st_sstfproxy PROPERTIES WORKING_DIRECTORY . FIXTURES_SETUP sstfproxy TIMEOUT 800)
add_test(NAME ki_ssproxy COMMAND

View File

@ -51,7 +51,7 @@ if (requirements)
add_test(NAME st_ssproxy COMMAND
${CMAKE_SOURCE_DIR}/scripts/ctest-background.sh
ssproxy $<TARGET_FILE:lws-minimal-secure-streams-proxy>
-i ${CTEST_SOCKET_PATH} --ignore-sigterm)
-i ${CTEST_SOCKET_PATH} )
set_tests_properties(st_ssproxy PROPERTIES WORKING_DIRECTORY . FIXTURES_SETUP ssproxy TIMEOUT 800)
add_test(NAME ki_ssproxy COMMAND

View File

@ -48,7 +48,7 @@ else()
${CMAKE_SOURCE_DIR}/scripts/ctest-background.sh
wcs_srv $<TARGET_FILE:test-server>
-r ${CMAKE_SOURCE_DIR}/destdir/usr/local/share/libwebsockets-test-server/
-s --port ${PORT_WCS_SRV} --ignore-sigterm)
-s --port ${PORT_WCS_SRV} )
add_test(NAME ki_wcs_srv COMMAND
${CMAKE_SOURCE_DIR}/scripts/ctest-background-kill.sh
wcs_srv $<TARGET_FILE_NAME:test-server> --port ${PORT_WCS_SRV})

View File

@ -5,60 +5,63 @@
# $2 - executable
# $3+ - args
echo "$0 $1 $2 $3 $4" >> /tmp/ctklog
echo "$0 $1 $2 $3 $4"
J=`basename $2`.$1.$SAI_INSTANCE_IDX
PI=`cat /tmp/sai-ctest-$J`
echo "Stage 1 kill $J 'kill $PI'" >> /tmp/ctklog
#
# We expect our background process to still be around
# We expect our background process to initially still be around
#
kill -0 $PI 2>&1 >> /tmp/ctklog
kill -0 $PI
GONESKI=$?
set +e
set +E
if [ $GONESKI -eq 0 ] ; then
kill $PI 2>&1 >> /tmp/ctklog
kill -9 $PI 2>&1 >> /tmp/ctklog
echo "Background task $PI: $J"
kill -0 $PI 2>&1
if [ $? -eq 0 ] ; then
#
# but in case it isn't enough, use ps to find the same executable started on the same port
# and kill that
#
A1=$3
if [ -z "$A1" ] ; then
A1=$2
fi
A2=$4
if [ -z "$A2" ] ; then
A2=$2
fi
PSARGS=-Af
Q=`ps -f`
if [ $? -ne 0 ] ; then
PSARGS=`-dAww`
fi
ps $PSARGS >> /tmp/ctklog
# sed is there to match up bsd/osx ps with linux
KL=`ps $PSARGS | grep -v ctest-background-kill | grep -v grep | grep $2 | grep $A1 | grep $A2 | tr -s ' ' | sed "s/^\ //g" | cut -d' ' -f2`
if [ ! -z "$KL" ] ; then
echo "Stage 2 kill $J 'kill $KL'" >> /tmp/ctklog
kill $KL 2>&1 >> /tmp/ctklog
fi
fi
else
echo "Process already dead" >> /tmp/ctklog
if [ $GONESKI -eq 1 ] ; then
echo "Background Process $PI unexpectedly dead already, their log"
cat /tmp/ctest-background-$J
exit 1
fi
exit 0
#exit $GONESKI
echo "Trying SIGTERM..."
kill $PI
#
# 100ms intervals, 100 = 10s
# need to allow time for valgrind case
#
BUDGET=100
while [ $BUDGET -ne 0 ] ; do
sleep 0.1
kill -0 $PI 2>&1
if [ $? -eq 1 ] ; then
echo "Went down OK"
exit 0
fi
BUDGET=$(( $BUDGET - 1 ))
done
echo "Trying SIGKILL..."
kill -9 $PI
#
# 100ms intervals, 100 = 10s
# need to allow time for valgrind case
#
BUDGET=20
while [ $BUDGET -ne 0 ] ; do
sleep 0.1
kill -0 $PI 2>&1
if [ $? -eq 1 ] ; then
echo "Went down OK after SIGKILL"
exit 0
fi
BUDGET=$(( $BUDGET - 1 ))
done
echo "Couldn't kill it"
exit 1

View File

@ -11,6 +11,10 @@ echo $! > /tmp/sai-ctest-$J
# really we want to loop until the listen port is up
# on, eg, rpi it can be blocked at sd card and slow to start
# due to parallel tests and disc cache flush
sleep 1
if [ ! -z "`echo $2 | grep valgrind`" ] ; then
sleep 5
else
sleep 1
fi
exit 0