webrtc/test/sanity_check/run_sanity_check
phoglund@webrtc.org 754626b5ea Fixed the sanity_check and started using the new webrtc_test.html file. Added capability for xvfb testing.
The purpose for the xvfb mode is to be able to run tests on the windowless environment on the Chromebot. Given the right input video, we can then write a relatively simple algorithm to analyze the screenshots and thereby conclude that video is playing.

BUG=
TEST=

Review URL: https://webrtc-codereview.appspot.com/447004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1890 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-03-15 09:40:23 +00:00

92 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
#
# Run a test with the WebRTC Chromium build.
# Should work on any machine with a camera.
#
# Pass the argument --xvfb-and-screenshots to run in a xvfb environment and
# capture screenshots from inside the virtual environment. If you don't what
# that is, never mind and run this script without arguments.
#
# Method:
# - Start peerconnection server.
# - Start serving webrtc_test.html off a local web server.
# - Start 2 browser tabs.
# - Tab 1 connects to the server.
# - Tab 2 connects to the server and calls tab 1.
# - Both tabs will capture the webcam you have on the system and start
# sending to each other.
#
set -e
if [ ! -x run_sanity_check ]; then
echo "Error: This script must run from its own directory"
exit 1
fi
# Tweakable parameters:
URLBASE=localhost:3000
CHROME_BINARY=google-chrome
CALLEE="$URLBASE/webrtc_test.html?name=test1&autoconnect=yes"
CALLER="$URLBASE/webrtc_test.html?name=test2&autocall=test1"
FLAGS="--enable-media-stream"
run_chrome_for_user() {
# Run the binary straight up and proceed with cleanup when the user closes
# the browser.
${CHROME_BINARY} $CALLEE $CALLER $FLAGS --user-data-dir=temp/user1
}
run_chrome_in_xvfb_with_screenshots() {
# Run chrome in a virtual window environment and capture screenshots.
# It will run for 30 seconds and then exit.
Xvfb :17 -screen 0 1024x768x24 &
DISPLAY=:17 ${CHROME_BINARY} $CALLEE $CALLER $FLAGS --user-data-dir=temp/user1 &
CHROME=$!
sleep 2
for (( i = 0; i < 6; i++ )) do
FILENAME="IMAGE${i}.png"
DISPLAY=:17 import -window root $FILENAME
sleep 5
done
kill $CHROME || echo "No Chrome process."
}
PROJECT_ROOT=../..
if which lighttpd; then
LOCAL_WEB_SERVER_BINARY=$(which lighttpd)
else
echo "Error: You must install lighttpd first (sudo apt-get install lighttpd)"
exit 1
fi
SERVER_BINARY=${PROJECT_ROOT}/../../peerconnection/trunk/out/Debug/peerconnection_server
if [ ! -e "$SERVER_BINARY" ]; then
echo "Error: You must build peerconnection_server first."
echo "I expected to find a binary at $SERVER_BINARY but found none."
exit 1
fi
# Launch the web server and make it serve the local www/html directory
${LOCAL_WEB_SERVER_BINARY} -D -f lighttpd.conf &
LOCAL_WEB_SERVER=$!
${SERVER_BINARY} &
SERVER=$!
echo "Started server as $SERVER"
# Launch a browser with two tabs:
if [ "$1" == "--xvfb-and-screenshots" ]; then
run_chrome_in_xvfb_with_screenshots
else
run_chrome_for_user
fi
echo "Test finished, cleaning up"
kill $SERVER || echo "No peerconnection_server"
kill $LOCAL_WEB_SERVER || echo "No local web server"