summaryrefslogtreecommitdiff
path: root/tests/virtualfb.sh
diff options
context:
space:
mode:
authordon bright <hugh.m.bright@gmail.com>2013-02-02 23:44:25 (GMT)
committerdon bright <hugh.m.bright@gmail.com>2013-02-02 23:44:25 (GMT)
commit1a545b75f6bd05a0eca42e1f797aa4853aca88d6 (patch)
tree40e76f10e64cfddf64123b677e5d15152e09bdb9 /tests/virtualfb.sh
parenteb30d42b5dd3ed5bb37336ed46a59eabaca81e06 (diff)
workaround cmake 2.8.10 not allowing CTEST_CUSTOM_POST_TEST arguments
Diffstat (limited to 'tests/virtualfb.sh')
-rwxr-xr-xtests/virtualfb.sh70
1 files changed, 54 insertions, 16 deletions
diff --git a/tests/virtualfb.sh b/tests/virtualfb.sh
index 3c0cf0e..e0d8320 100755
--- a/tests/virtualfb.sh
+++ b/tests/virtualfb.sh
@@ -1,22 +1,60 @@
#!/bin/sh
-if [ "`command -v Xvfb`" ]; then
- VFB_BINARY=Xvfb
-fi
+# Toggle the Virtual Framebuffer
+# If started, stop. If stopped, start.
-if [ "`command -v Xvnc`" ]; then
- VFB_BINARY=Xvnc
-fi
+start()
+{
+ if [ "`command -v Xvfb`" ]; then
+ VFB_BINARY=Xvfb
+ fi
+
+ if [ "`command -v Xvnc`" ]; then
+ VFB_BINARY=Xvnc
+ fi
+
+ if [ ! $VFB_BINARY ]; then
+ echo "$0 Failed, cannot find Xvfb or Xvnc"
+ exit 1
+ fi
+
+ VFB_DISPLAY=`echo | awk 'BEGIN{srand();} {printf ":%.0f", rand()*1000+100};'`
+ $VFB_BINARY $VFB_DISPLAY -screen 0 800x600x24 &> ./virtualfb.log &
+ VFB_PID=$!
+
+ echo $VFB_DISPLAY > ./virtualfb.DISPLAY
+ echo $VFB_PID > ./virtualfb.PID
+
+ echo "Started virtual fb, PID=$VFB_PID , DISPLAY=$VFB_DISPLAY"
+ sleep 1
+}
+
+stop()
+{
+ VFB_PID=`cat ./virtualfb.PID`
+ VFB_DISPLAY=`cat ./virtualfb.DISPLAY`
+
+ echo "Stopping virtual fb, PID=$VFB_PID, DISPLAY=$VFB_DISPLAY"
+ kill $VFB_PID
+ LOCKFILE=`echo "/tmp/.X"$VFB_DISPLAY"-lock"`
+ if [ -e $LOCKFILE ]; then
+ rm $LOCKFILE
+ fi
+ rm ./virtualfb.PID
+ rm ./virtualfb.DISPLAY
+}
+
+isrunning()
+{
+ isrunning_result=
+ if [ -e ./virtualfb.PID ]; then isrunning_result=1 ; fi
+ if [ -e ./virtualfb.DISPLAY ]; then isrunning_result=1 ; fi
+}
-if [ ! $VFB_BINARY ]; then
- echo "$0 Failed, cannot find Xvfb or Xvnc"
- exit 1
+isrunning
+if [ $isrunning_result ]; then
+ stop
+else
+ start
fi
-DISPLAY=:98
-$VFB_BINARY $DISPLAY -screen 0 800x600x24 &> virtualfblog &
-echo PID=$! " "
-echo DISPLAY=$DISPLAY
-# trap "kill -KILL $xpid ||:" EXIT
-export DISPLAY
-sleep 3
contact: Jan Huwald // Impressum