[LNT] r310664 - Switch server wrapper for fixed sleep to polling

Chris Matthews via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 10 14:38:38 PDT 2017


Author: cmatthews
Date: Thu Aug 10 14:38:38 2017
New Revision: 310664

URL: http://llvm.org/viewvc/llvm-project?rev=310664&view=rev
Log:
Switch server wrapper for fixed sleep to polling

Sometimes tests fail with connection failed. This is because the server
was not up, or up in time.  Now use curl to poll the server, once
started waiting for a simple endpoint to work.

Modified:
    lnt/trunk/lnt/server/ui/views.py
    lnt/trunk/tests/SharedInputs/server_wrapper.sh

Modified: lnt/trunk/lnt/server/ui/views.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/views.py?rev=310664&r1=310663&r2=310664&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/views.py (original)
+++ lnt/trunk/lnt/server/ui/views.py Thu Aug 10 14:38:38 2017
@@ -1749,3 +1749,11 @@ def explode():
 def gone():
     """This route returns 404. Used for testing 404 page."""
     abort(404, "test")
+
+
+ at frontend.route("/ping")
+def ping():
+    """Simple route to see if server is alive.
+
+    Used by tests to poll on server creation."""
+    return "pong", 200

Modified: lnt/trunk/tests/SharedInputs/server_wrapper.sh
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/SharedInputs/server_wrapper.sh?rev=310664&r1=310663&r2=310664&view=diff
==============================================================================
--- lnt/trunk/tests/SharedInputs/server_wrapper.sh (original)
+++ lnt/trunk/tests/SharedInputs/server_wrapper.sh Thu Aug 10 14:38:38 2017
@@ -26,25 +26,32 @@ main() {
 	[ $# -lt 2 ] &&
 		error "not enough arguments"
 
-	local serverinstance=$1
-	local portnr=$2
+	local server_instance=$1
+	local port_number=$2
 	shift 2
 
-	lnt runserver $serverinstance --hostname localhost --port $portnr >& $serverinstance/server_wrapper_runserver.log &
+	lnt runserver ${server_instance} --hostname localhost --port ${port_number} >& ${server_instance}/server_wrapper_runserver.log &
 	local pid=$!
-	sleep 2 # Give the server some time to start.
+
+	# Poll the server until it is up and running
+	while ! curl http://localhost:${port_number}/ping -m1 -o/dev/null -s ; do
+        # Maybe server is totally dead.
+        kill -0 ${pid} 2> /dev/null || { echo "Server exit detected"; break; }
+        # If not sleep and keep trying.
+        sleep 0.1
+    done
 
 	# Execute command.
 	eval "$@"
 	local rc=$?
 
-	kill -15 $pid
+	kill -15 ${pid}
 	local kill_rc=$?
-	[ $kill_rc -ne 0 ] &&
-	    error "wha happen??  $kill_rc"
+	[ ${kill_rc} -ne 0 ] &&
+	    error "wha happen??  ${kill_rc}"
 	
-	wait $pid
-	exit $rc
+	wait ${pid}
+	exit ${rc}
 }
 
 main "$@"




More information about the llvm-commits mailing list