tests/tools/run_python_tests.sh
author Andrey Skvortsov <andrej.skvortzov@gmail.com>
Wed, 13 Mar 2019 15:43:45 +0300
changeset 2543 2befed4d6ca8
parent 2436 82bfc75bcd9d
permissions -rwxr-xr-x
Fix Pyro work with SSL wrapper (sslpsk)

Following error was shown in Beremiz console:
PYRO connecting to URI : PYROS://127.0.0.1:3001#beremiz
Exception while connecting to 'PYROS://127.0.0.1:3001#beremiz': non-zero flags not allowed in calls to recv() on <class 'ssl.SSLSocket'>
Connection failed to PYROS://127.0.0.1:3001#beremiz!

Reason is that Pyro calls socket recv() with MSGWAITALL flag, that causes ValueError exception.

https://docs.python.org/2/library/ssl.html
recv(), recv_into() (but passing a non-zero flags argument is not allowed)
#!/bin/sh



cleanup()
{
    find $PYTEST_DIR -name '*.pyc' -delete
}



print_help()
{
    echo "Usage: run_python_tests.sh [--on-local-xserver]"
    echo ""
    echo "--on-local-xserver"
    echo "                all tests are run on local X-server. "
    echo "                User can see test in action."
    echo "                Any interaction (mouse, keyboard) should be avoided"
    echo "                By default without arguments script runs pytest on virtual X serverf."
    echo ""

    exit 1
}

main()
{
    LC_ALL=ru_RU.utf-8
    PYTEST_DIR=./tests/tools

    if [ ! -d $PYTEST_DIR ]; then
	echo "Script should be run from top directory in repository"
	exit 1;
    fi

    use_xvfb=0
    if [ "$1" != "--on-local-xserver" ]; then
	export DISPLAY=:42
	use_xvfb=1
	Xvfb $DISPLAY -screen 0 1280x1024x24 &
	sleep 1
    fi


    cleanup

    ret=0
    DELAY=400
    KILL_DELAY=$(($DELAY + 30))
    timeout -k $KILL_DELAY $DELAY pytest --timeout=10 ./tests/tools
    ret=$?

    cleanup

    [ $use_xvfb = 1 ] && pkill -9 Xvfb
    exit $ret
}


[ "$1" = "--help" -o "$1" = "-h" ] && print_help
main $@