~chromium-team/chromium-browser/saucy-proposed

« back to all changes in this revision

Viewing changes to debian/tests/smoketest-actual

  • Committer: Chad Miller
  • Date: 2013-07-16 14:50:17 UTC
  • mfrom: (886.1.4 p-saucy-autopkgtests)
  • Revision ID: chad.miller@canonical.com-20130716145017-kv5lbqu515g631bg
* debian/tests/:
  - Add smoketest to verify that chromium runs.
  - Add a empty webapps test file for notes about what parts of webapps will
    or should be tested.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/bash
 
2
 
 
3
# A thin wrapper that sets up an environment, runs a test, and exits with an
 
4
# error if the test does not write a file indicating success.
 
5
# Copyright Canonical, 2013.   Author: Chad MILLER <chad.miller@canonical.com>
 
6
 
 
7
PATH=debian/tmp/usr/lib/chromium-browser:$PATH
 
8
 
 
9
set -o errexit
 
10
set -o nounset
 
11
#set -o xtrace
 
12
 
 
13
failures=""
 
14
 
 
15
python3 -u -m http.server 0 >webserver-out 2>webserver-err &
 
16
webserver_pid=$!
 
17
 
 
18
trap "echo FAILURE" ERR
 
19
trap ":" USR1  # Clean-up after every test
 
20
trap ":" USR2  # Clean-up after every test
 
21
trap "kill -KILL ${webserver_pid} || echo No web server.; kill -USR1 $$ || echo No cleanup 1.; kill -USR2 $$ || echo No cleanup 2." EXIT
 
22
 
 
23
retrylimit=100
 
24
retry=0
 
25
while test "$retry" -lt "$retrylimit"; do
 
26
        retry=$(($retry + 1))
 
27
        sleep 0.1
 
28
        # "Serving HTTP on 0.0.0.0 port 49074 ..."
 
29
        grep "\\.\\.\\." webserver-out >/dev/null || continue
 
30
 
 
31
        webserver_port=$(head -1 webserver-out |cut -d\  -f6)
 
32
        break
 
33
done
 
34
test "$retry" -lt ${retrylimit}
 
35
 
 
36
mkdir profile_storage
 
37
 
 
38
# Now everything is set up for a series of tests.
 
39
 
 
40
echo -n "Test command-line URL retrieves page from server: "
 
41
 
 
42
# TEST one
 
43
# Create a file that our web server can read. Run chromium with that URL and
 
44
# see that the web server receives a request for that file/resource.
 
45
f=one$$.txt
 
46
echo proc$$test >$f
 
47
 
 
48
chromium-browser --window-size=400,200 --window-position=100,100 --user-data-dir=profile_storage http://localhost:${webserver_port}/$f >browser_stdout 2>browser_stderr &
 
49
webclient_pid=$!
 
50
trap "kill -KILL ${webclient_pid}" USR1
 
51
 
 
52
retrylimit=1000
 
53
retry=0
 
54
while test "$retry" -lt "$retrylimit"; do
 
55
        retry=$(($retry + 1))
 
56
        sleep 1  ## FIXME
 
57
        grep $f webserver-err >/dev/null || continue
 
58
        echo okay
 
59
        break
 
60
done
 
61
#kill -USR1 $$  # cleanup
 
62
test "$retry" -lt ${retrylimit} || echo BAD
 
63
test "$retry" -lt ${retrylimit} || failures="one:serveraccess  $failures"
 
64
 
 
65
# TEST two-a two-b
 
66
# While we have a chromium running, let's use it. Test that the processes are constrained by a sandbox.
 
67
 
 
68
echo -n "Test security enclosure: "
 
69
if ps h --ppid ${webclient_pid} -o label |grep _sandbox\$ >/dev/null; then
 
70
        # At least one process's security label ends with "_sandbox".
 
71
 
 
72
        if { ps h -p ${webclient_pid} -o label; ps h --ppid ${webclient_pid} -o label; } |grep unconfined >/dev/null; then
 
73
                # No processes created immediately by chromium are unconstrained 
 
74
                echo BAD
 
75
                failures="two-b:unconfined  $failures"
 
76
        else
 
77
                echo okay
 
78
        fi
 
79
 
 
80
else
 
81
        echo BAD
 
82
        failures="two-a:sandbox  $failures"
 
83
fi
 
84
 
 
85
 
 
86
 
 
87
 
 
88
# All tests are done.
 
89
#
 
90
# Report results
 
91
test -z "$failures" && touch result-success || echo "failure list:  $failures"
 
92
test -z "$failures" || exit 1