mirror of
https://repo.or.cz/socat.git
synced 2024-12-23 07:52:32 +00:00
stabilized test IP4MULTICAST_UNIDIR; added tests OPENSSL_SCTPx_FORK; minor improvements
This commit is contained in:
parent
357a7f7984
commit
b53a9afba7
4 changed files with 68 additions and 8 deletions
2
CHANGES
2
CHANGES
|
@ -5,7 +5,7 @@ new features:
|
||||||
address chains consisting of inter and endpoint addresses, linked with
|
address chains consisting of inter and endpoint addresses, linked with
|
||||||
'|' (pipe character)
|
'|' (pipe character)
|
||||||
|
|
||||||
reverting inter addresses
|
reverse inter addresses
|
||||||
|
|
||||||
dual type inter addresses
|
dual type inter addresses
|
||||||
|
|
||||||
|
|
63
test.sh
63
test.sh
|
@ -8044,10 +8044,10 @@ printf "test $F_n $TEST... " $N
|
||||||
$CMD1 2>"${te}1" >"${tf}" &
|
$CMD1 2>"${te}1" >"${tf}" &
|
||||||
pid1="$!"
|
pid1="$!"
|
||||||
waitip4proto $ts1p 1
|
waitip4proto $ts1p 1
|
||||||
usleep $MICROS
|
usleep $((10*MICROS))
|
||||||
echo "$da" |$CMD2 2>>"${te}2"
|
echo "$da" |$CMD2 2>>"${te}2"
|
||||||
rc2="$?"
|
rc2="$?"
|
||||||
usleep $MICROS
|
usleep $((10*MICROS))
|
||||||
kill "$pid1" 2>/dev/null; wait;
|
kill "$pid1" 2>/dev/null; wait;
|
||||||
if [ "$rc2" -ne 0 ]; then
|
if [ "$rc2" -ne 0 ]; then
|
||||||
$PRINTF "$FAILED: $SOCAT:\n"
|
$PRINTF "$FAILED: $SOCAT:\n"
|
||||||
|
@ -10139,6 +10139,65 @@ PORT=$((PORT+1))
|
||||||
N=$((N+1))
|
N=$((N+1))
|
||||||
|
|
||||||
|
|
||||||
|
while read KEYW PF LO
|
||||||
|
do
|
||||||
|
if [ -z "$KEYW" ] || [[ "$KEYW" == \#* ]]; then continue; fi
|
||||||
|
#
|
||||||
|
pf="$(echo $PF |tr A-Z a-z)"
|
||||||
|
proto="$(echo $KEYW |tr A-Z a-z)"
|
||||||
|
NAME=OPENSSL_${KEYW}_FORK
|
||||||
|
case "$TESTS" in
|
||||||
|
*%functions%*|*%openssl%*|*%sctp%*|*%$pf%*|*%$NAME%*)
|
||||||
|
TEST="$NAME: openssl over SCTP with server fork"
|
||||||
|
if ! eval $NUMCOND; then :;
|
||||||
|
elif ! testaddrs openssl >/dev/null; then
|
||||||
|
$PRINTF "test $F_n $TEST... ${YELLOW}OPENSSL not available${NORMAL}\n" $N
|
||||||
|
numCANT=$((numCANT+1))
|
||||||
|
elif ! testaddrs listen sctp $pf >/dev/null || ! runs$pf >/dev/null; then
|
||||||
|
$PRINTF "test $F_n $TEST... ${YELLOW}SCTP/$PF not available${NORMAL}\n" $N
|
||||||
|
numCANT=$((numCANT+1))
|
||||||
|
else
|
||||||
|
gentestcert testsrv
|
||||||
|
tf="$td/test$N.stdout"
|
||||||
|
te="$td/test$N.stderr"
|
||||||
|
tdiff="$td/test$N.diff"
|
||||||
|
da1="test$N $(date) $RANDOM"
|
||||||
|
da2="test$N $(date) $RANDOM"
|
||||||
|
CMD0="$SOCAT $opts ${KEYW}-LISTEN:$PORT,reuseaddr,fork ^OPENSSL-LISTEN,$SOCAT_EGD',cert=testsrv.crt,key=testsrv.key,verify=0|pipe'"
|
||||||
|
CMD1="$SOCAT $opts - openssl,verify=0,$SOCAT_EGD|${KEYW}:$LOCALHOST:$PORT"
|
||||||
|
printf "test $F_n $TEST... " $N
|
||||||
|
eval "$CMD0 2>\"${te}0\" &"
|
||||||
|
pid0=$! # background process id
|
||||||
|
wait${proto}port $PORT
|
||||||
|
(echo "$da1"; sleep 1) |$CMD1 >${tf}1 2>"${te}1"
|
||||||
|
(echo "$da2"; sleep 1) |$CMD1 >${tf}2 2>"${te}2"
|
||||||
|
kill $pid0 2>/dev/null
|
||||||
|
if ! echo "$da2" |diff - "${tf}2" >"$tdiff"; then
|
||||||
|
$PRINTF "$FAILED: $SOCAT:\n"
|
||||||
|
echo "$CMD0 &"
|
||||||
|
echo "$CMD1"
|
||||||
|
cat "${te}0"
|
||||||
|
cat "${te}1"
|
||||||
|
cat "${te}2"
|
||||||
|
cat "$tdiff"
|
||||||
|
numFAIL=$((numFAIL+1))
|
||||||
|
else
|
||||||
|
$PRINTF "$OK\n"
|
||||||
|
if [ -n "$debug" ]; then cat "${te}0" "${te}1" "${te}2"; fi
|
||||||
|
numOK=$((numOK+1))
|
||||||
|
fi
|
||||||
|
wait
|
||||||
|
fi ;; # NUMCOND, feats
|
||||||
|
esac
|
||||||
|
PORT=$((PORT+1))
|
||||||
|
N=$((N+1))
|
||||||
|
#
|
||||||
|
done <<<"
|
||||||
|
SCTP4 IP4 127.0.0.1
|
||||||
|
SCTP6 IP6 [::1]
|
||||||
|
"
|
||||||
|
|
||||||
|
|
||||||
echo "summary: $((N-1)) tests; $numOK ok, $numFAIL failed, $numCANT could not be performed"
|
echo "summary: $((N-1)) tests; $numOK ok, $numFAIL failed, $numCANT could not be performed"
|
||||||
|
|
||||||
if [ "$numFAIL" -gt 0 ]; then
|
if [ "$numFAIL" -gt 0 ]; then
|
||||||
|
|
|
@ -18,10 +18,10 @@ static const char *optiontypenames[] = {
|
||||||
"SHORT", "SIZE_T", "SOCKADDR", "UNSIGNED-INT",
|
"SHORT", "SIZE_T", "SOCKADDR", "UNSIGNED-INT",
|
||||||
"UNSIGNED-LONG","UNSIGNED-SHORT","MODE_T", "GID_T",
|
"UNSIGNED-LONG","UNSIGNED-SHORT","MODE_T", "GID_T",
|
||||||
"UID_T", "INT[3]", "STRUCT-TIMEVAL", "STRUCT-TIMESPEC",
|
"UID_T", "INT[3]", "STRUCT-TIMEVAL", "STRUCT-TIMESPEC",
|
||||||
"DOUBLE", "STRING-NULL", "LONG-LONG", "OFF_T",
|
"DOUBLE", "STRING-NULL", "LONG:LONG", "OFF_T",
|
||||||
"OFF64_T", "INT:INT", "INT:INTP", "INT:BIN",
|
"OFF64_T", "INT:INT", "INT:INTP", "INT:BIN",
|
||||||
"INT:STRING", "INT:INT:INT", "INT:INT:BIN", "INT:INT:STRING",
|
"INT:STRING", "INT:INT:INT", "INT:INT:BIN", "INT:INT:STRING",
|
||||||
"IP4NAME",
|
"IP4NAME", "STRING:STRING",
|
||||||
|
|
||||||
#if HAVE_STRUCT_LINGER
|
#if HAVE_STRUCT_LINGER
|
||||||
"STRUCT-LINGER",
|
"STRUCT-LINGER",
|
||||||
|
|
|
@ -65,6 +65,7 @@ enum e_types {
|
||||||
TYPE_INT_INT_STRING, /* 3 params: first and second are int, 3rd is string */
|
TYPE_INT_INT_STRING, /* 3 params: first and second are int, 3rd is string */
|
||||||
|
|
||||||
TYPE_IP4NAME, /* IPv4 hostname or address */
|
TYPE_IP4NAME, /* IPv4 hostname or address */
|
||||||
|
TYPE_STRING2, /* string:string */
|
||||||
#if HAVE_STRUCT_LINGER
|
#if HAVE_STRUCT_LINGER
|
||||||
TYPE_LINGER, /* struct linger */
|
TYPE_LINGER, /* struct linger */
|
||||||
#endif /* HAVE_STRUCT_LINGER */
|
#endif /* HAVE_STRUCT_LINGER */
|
||||||
|
|
Loading…
Reference in a new issue