e2e-test: Add check for Instruction verification failures.
This commit is contained in:
@@ -193,8 +193,18 @@ int main( int argc, char *argv[] )
|
|||||||
&& (strcmp( argv[ 1 ], "new" ) == 0) ) {
|
&& (strcmp( argv[ 1 ], "new" ) == 0) ) {
|
||||||
/* new option syntax */
|
/* new option syntax */
|
||||||
int opt;
|
int opt;
|
||||||
while ( (opt = getopt( argc - 1, argv + 1, "i:p:c:svl:" )) != -1 ) {
|
while ( (opt = getopt( argc - 1, argv + 1, "@:i:p:c:svl:" )) != -1 ) {
|
||||||
switch ( opt ) {
|
switch ( opt ) {
|
||||||
|
/*
|
||||||
|
* This undocumented option does nothing but eat its argument.
|
||||||
|
* Useful in scripting where you prepend something to a
|
||||||
|
* mosh-server argv, and might end up with something like
|
||||||
|
* "mosh-server new -v new -c 256", now you can say
|
||||||
|
* "mosh-server new -v -@ new -c 256" to discard the second
|
||||||
|
* "new".
|
||||||
|
*/
|
||||||
|
case '@':
|
||||||
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
desired_ip = optarg;
|
desired_ip = optarg;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
hold-stdin print-exitstatus \
|
hold-stdin print-exitstatus \
|
||||||
e2e-test e2e-test-server \
|
e2e-test e2e-test-server \
|
||||||
|
mosh-client mosh-server \
|
||||||
$(displaytests) \
|
$(displaytests) \
|
||||||
emulation-attributes.test
|
emulation-attributes.test
|
||||||
|
|
||||||
|
|||||||
+48
-2
@@ -88,6 +88,26 @@ ssh_localhost_check()
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# These two functions are wrappers for mosh-client/mosh-server to turn
|
||||||
|
# on verbosity and log stderr.
|
||||||
|
mosh_client()
|
||||||
|
{
|
||||||
|
if [ -z "$MOSH_CLIENT" -o -z "$MOSH_E2E_TEST" ]; then
|
||||||
|
test_error "mosh_client: variables missing\n"
|
||||||
|
fi
|
||||||
|
exec 2> "${MOSH_E2E_TEST}.client.stderr"
|
||||||
|
exec "$MOSH_CLIENT" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
mosh_server()
|
||||||
|
{
|
||||||
|
if [ -z "$MOSH_SERVER" -o -z "$MOSH_E2E_TEST" ]; then
|
||||||
|
test_error "mosh_server: variables missing\n"
|
||||||
|
fi
|
||||||
|
exec 2> "${MOSH_E2E_TEST}.server.stderr"
|
||||||
|
exec "$MOSH_SERVER" new -v -@ "$@"
|
||||||
|
}
|
||||||
|
|
||||||
# main
|
# main
|
||||||
|
|
||||||
# Set up environment
|
# Set up environment
|
||||||
@@ -101,6 +121,20 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Wrappers.
|
||||||
|
case "$(basename $0)" in
|
||||||
|
mosh-client)
|
||||||
|
mosh_client "$@"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
mosh-server)
|
||||||
|
mosh_server "$@"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
if ! tmux_check; then
|
if ! tmux_check; then
|
||||||
test_skipped "tmux unavailable\n"
|
test_skipped "tmux unavailable\n"
|
||||||
fi
|
fi
|
||||||
@@ -116,6 +150,7 @@ test_args=$@
|
|||||||
# XXX could use AM testsubdir macro instead
|
# XXX could use AM testsubdir macro instead
|
||||||
test_dir=$(basename ${test_name}).d
|
test_dir=$(basename ${test_name}).d
|
||||||
test_script="${test_name}"
|
test_script="${test_name}"
|
||||||
|
|
||||||
rm -rf "${test_dir}"
|
rm -rf "${test_dir}"
|
||||||
mkdir "${test_dir}"
|
mkdir "${test_dir}"
|
||||||
|
|
||||||
@@ -161,8 +196,12 @@ fi
|
|||||||
|
|
||||||
for run in $server_tests; do
|
for run in $server_tests; do
|
||||||
log "Running server test %s.\n" "$run"
|
log "Running server test %s.\n" "$run"
|
||||||
|
# These three variables are for the benefit of the mosh-client and mosh-server wrappers.
|
||||||
|
export MOSH_CLIENT="$PWD/../frontend/mosh-client"
|
||||||
|
export MOSH_SERVER="$PWD/../frontend/mosh-server"
|
||||||
|
export MOSH_E2E_TEST="$PWD/${test_dir}/${run}"
|
||||||
# XXX need to quote special chars in server pathname here somehow
|
# XXX need to quote special chars in server pathname here somehow
|
||||||
sut="../../scripts/mosh --client=../frontend/mosh-client --server=$PWD/../frontend/mosh-server --local --bind-server=127.0.0.1 127.0.0.1"
|
sut="../../scripts/mosh --client=${srcdir}/mosh-client --server=${srcdir}/mosh-server --local --bind-server=127.0.0.1 127.0.0.1"
|
||||||
testarg=$run
|
testarg=$run
|
||||||
if [ "$run" = "direct" ]; then
|
if [ "$run" = "direct" ]; then
|
||||||
sut=""
|
sut=""
|
||||||
@@ -187,7 +226,14 @@ for run in $server_tests; do
|
|||||||
if [ "$server_rv" -ne 0 ]; then
|
if [ "$server_rv" -ne 0 ]; then
|
||||||
test_error "server harness exited with status %s\n" "$server_rv"
|
test_error "server harness exited with status %s\n" "$server_rv"
|
||||||
fi
|
fi
|
||||||
|
# Check for "round-trip" failures
|
||||||
|
if grep -q "round-trip Instruction verification failed" "${test_dir}/${run}.server.stderr"; then
|
||||||
|
test_error "Round-trip Instruction verification failed on server during %s\n" "$run"
|
||||||
|
fi
|
||||||
|
# XXX We'd also like to check for "target state Instruction
|
||||||
|
# verification failed", a new check, but tmux's lack of BCE
|
||||||
|
# support forces mosh to clear lines with spaces and change a
|
||||||
|
# framebuffer in a way that causes this to fire spuriously.
|
||||||
done
|
done
|
||||||
|
|
||||||
for compare in $compare_tests; do
|
for compare in $compare_tests; do
|
||||||
|
|||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
e2e-test
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
e2e-test
|
||||||
Reference in New Issue
Block a user