diff options
Diffstat (limited to 'tests')
| -rwxr-xr-x | tests/virtualfb.sh | 33 | 
1 files changed, 32 insertions, 1 deletions
| diff --git a/tests/virtualfb.sh b/tests/virtualfb.sh index 5abd804..06d37bf 100755 --- a/tests/virtualfb.sh +++ b/tests/virtualfb.sh @@ -3,6 +3,8 @@  # Toggle the Virtual Framebuffer  # If started, stop. If stopped, start. +debug= +  start()  {    if [ "`command -v Xvfb`" ]; then @@ -20,7 +22,20 @@ start()    VFB_DISPLAY=`echo | awk 'BEGIN{srand();} {printf ":%.0f", rand()*1000+100};'`    $VFB_BINARY $VFB_DISPLAY -screen 0 800x600x24 &> ./virtualfb.log & -  VFB_PID=$! +  # on some systems $! gives us VFB_BINARY's PID, on others we have to subtract 1 +  VFB_PID_MINUS0=$! +  VFB_PID_MINUS1=$(($VFB_PID_MINUS0 - 1)) + +  if [ "`ps cax | grep $VFB_PID_MINUS0 | grep $VFB_BINARY`" ]; then +    VFB_PID=$VFB_PID_MINUS0 +  elif [ "`ps cax | grep $VFB_PID_MINUS1 | grep $VFB_BINARY`" ]; then +    VFB_PID=$VFB_PID_MINUS1 +  else +    echo started $VFB_BINARY but cannot find process ID in process table +    echo please stop $VFB_BINARY manually +    VFB_PID= +    return +  fi    echo $VFB_DISPLAY > ./virtualfb.DISPLAY    echo $VFB_PID > ./virtualfb.PID @@ -48,13 +63,29 @@ isrunning()  {    isrunning_result=    if [ -e ./virtualfb.PID ]; then +    if [ $debug ]; then echo "found PID file"; fi      VFB_PID=`cat ./virtualfb.PID` +    if [ ! $VFB_PID ]; then +      echo ./virtualfb.PID contained invalid PID number +      return +    fi +    if [ $debug ]; then echo "PID from file:" $VFB_PID; fi +    PS_RESULT=`ps cax | awk ' { print $1 } '` +    GREP_RESULT=`echo $PS_RESULT | grep $VFB_PID` +    if [ $debug ]; then echo "grep ps result: " $GREP_RESULT; fi      if [ "`ps cax | awk ' { print $1 } ' | grep ^$VFB_PID\$`" ]; then +      if [ $debug ]; then echo "found pid in process table."; fi        isrunning_result=1 +    else +      if [ $debug ]; then echo "did not find pid in process table."; fi      fi    fi  } +if [ "`echo $* | grep debug`" ]; then +  debug=1 +fi +  isrunning  if [ $isrunning_result ]; then    stop | 
