summaryrefslogtreecommitdiff
path: root/tests/virtualfb.sh
blob: 5abd804d590adc7eef9bb7c3597e4ff16c589b9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/bin/sh

# Toggle the Virtual Framebuffer
# If started, stop. If stopped, start.

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 was $VFB_PID, DISPLAY was $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
    VFB_PID=`cat ./virtualfb.PID`
    if [ "`ps cax | awk ' { print $1 } ' | grep ^$VFB_PID\$`" ]; then
      isrunning_result=1
    fi
  fi
}

isrunning
if [ $isrunning_result ]; then
  stop
else
  start
fi

contact: Jan Huwald // Impressum