compat.sh: factor code into run_client() function
diff --git a/tests/compat.sh b/tests/compat.sh
index 77cd389..c961640 100755
--- a/tests/compat.sh
+++ b/tests/compat.sh
@@ -463,6 +463,68 @@
sleep 1
}
+# run_client <name> <cipher>
+run_client() {
+ # run the command and interpret result
+ case $1 in
+ [Oo]pen*)
+ CLIENT_CMD="$OPENSSL s_client $O_CLIENT_ARGS -cipher $2"
+ log "$CLIENT_CMD"
+ OUTPUT="$( ( echo -e 'GET HTTP/1.0'; echo; sleep 1 ) | $CLIENT_CMD 2>&1 )"
+ EXIT=$?
+
+ if [ "$EXIT" == "0" ]; then
+ RESULT=0
+ else
+ SUPPORTED="$( echo $OUTPUT | grep 'Cipher is (NONE)' )"
+ if [ "X$SUPPORTED" != "X" ]; then
+ RESULT=1
+ else
+ RESULT=2
+ fi
+ fi
+ ;;
+
+ [Pp]olar*)
+ CLIENT_CMD="../programs/ssl/ssl_client2 $P_CLIENT_ARGS force_ciphersuite=$2"
+ log "$CLIENT_CMD"
+ OUTPUT="$( $CLIENT_CMD )"
+ EXIT=$?
+
+ case $EXIT in
+ "0") RESULT=0 ;;
+ "2") RESULT=1 ;;
+ *) RESULT=2 ;;
+ esac
+ ;;
+
+ *)
+ echo "error: invalid client name: $1" >&2
+ exit 1
+ ;;
+ esac
+
+ # report and count result
+ let "tests++"
+ echo -n "$SERVER_NAME Server - $1 Client - $2 : $EXIT - "
+ case $RESULT in
+ "0")
+ echo Success
+ ;;
+ "1")
+ echo "Ciphersuite not supported"
+ let "skipped++"
+ ;;
+ "2")
+ echo Failed
+ echo "$SERVER_CMD"
+ echo "$CLIENT_CMD"
+ echo "$OUTPUT"
+ let "failed++"
+ ;;
+ esac
+}
+
for VERIFY in $VERIFIES;
do
@@ -480,84 +542,26 @@
start_server "OpenSSL"
-for i in $P_CIPHERS;
-do
- let "tests++"
- log "../programs/ssl/ssl_client2 $P_CLIENT_ARGS force_ciphersuite=$i"
- RESULT="$( ../programs/ssl/ssl_client2 $P_CLIENT_ARGS force_ciphersuite=$i )"
- EXIT=$?
- echo -n "$SERVER_NAME Server - PolarSSL Client - $i : $EXIT - "
- if [ "$EXIT" = "2" ];
- then
- echo Ciphersuite not supported in client
- let "skipped++"
- elif [ "$EXIT" != "0" ];
- then
- echo Failed
- echo "$SERVER_CMD"
- echo "ssl_client2 force_ciphersuite=$i $P_CLIENT_ARGS"
- echo $RESULT
- let "failed++"
- else
- echo Success
- fi
+for i in $P_CIPHERS; do
+ run_client PolarSSL $i
done
+
kill $PROCESS_ID 2>/dev/null
wait $PROCESS_ID 2>/dev/null
start_server "PolarSSL"
-for i in $O_CIPHERS;
-do
- let "tests++"
- log "$OPENSSL s_client $O_CLIENT_ARGS -cipher $i"
- RESULT="$( ( echo -e 'GET HTTP/1.0'; echo; sleep 1 ) | $OPENSSL s_client $O_CLIENT_ARGS -cipher $i 2>&1 )"
- EXIT=$?
- echo -n "$SERVER_NAME Server - OpenSSL Client - $i : $EXIT - "
-
- if [ "$EXIT" != "0" ];
- then
- SUPPORTED="$( echo $RESULT | grep 'Cipher is (NONE)' )"
- if [ "X$SUPPORTED" != "X" ]
- then
- echo "Ciphersuite not supported in server"
- let "skipped++"
- else
- echo Failed
- echo "$SERVER_CMD"
- echo "$OPENSSL s_client $O_CLIENT_ARGS -cipher $i"
- echo $RESULT
- let "failed++"
- fi
- else
- echo Success
- fi
+for i in $O_CIPHERS; do
+ run_client OpenSSL $i
done
+echo "-----------"
add_polarssl_ciphersuites
-for i in $P_CIPHERS;
-do
- let "tests++"
- log "../programs/ssl/ssl_client2 force_ciphersuite=$i $P_CLIENT_ARGS"
- RESULT="$( ../programs/ssl/ssl_client2 force_ciphersuite=$i $P_CLIENT_ARGS )"
- EXIT=$?
- echo -n "$SERVER_NAME Server - PolarSSL Client - $i : $EXIT - "
- if [ "$EXIT" = "2" ];
- then
- echo Ciphersuite not supported in client
- let "skipped++"
- elif [ "$EXIT" != "0" ];
- then
- echo Failed
- echo "$SERVER_CMD"
- echo "ssl_client2 force_ciphersuite=$i $P_CLIENT_ARGS"
- echo $RESULT
- let "failed++"
- else
- echo Success
- fi
+for i in $P_CIPHERS; do
+ run_client PolarSSL $i
done
+
kill $PROCESS_ID 2>/dev/null
wait $PROCESS_ID 2>/dev/null