~chromium-team/chromium-browser/artful-beta

« back to all changes in this revision

Viewing changes to debian/tests/smoketest-actual

  • Committer: Chad Miller
  • Date: 2013-07-05 15:32:43 UTC
  • mto: This revision was merged to the branch mainline in revision 912.
  • Revision ID: chad.miller@canonical.com-20130705153243-6ar802i7dxk5do15
First attempt at autopkgtests.

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