OLD | NEW |
1 #!/bin/bash | 1 #!/bin/bash |
2 | 2 |
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 # TODO: Get these tests running in a cross-platform fashion from the src_test | 7 # TODO: Get these tests running in a cross-platform fashion from the src_test |
8 # stanza of the entd ebuild. | 8 # stanza of the entd ebuild. |
9 | 9 |
10 USERNAME="user@google.com" | 10 USERNAME="user@google.com" |
11 ALLOW_DIRTY_EXIT=1 | 11 ALLOW_DIRTY_EXIT=1 |
| 12 PKCS11_TEST=1 |
12 grep "Chromium OS" /etc/lsb-release | 13 grep "Chromium OS" /etc/lsb-release |
13 if [ $? == 0 ]; then | 14 if [ $? == 0 ]; then |
14 CHROMEOS=1 | 15 CHROMEOS=1 |
15 ENTD="/usr/sbin/entd" | 16 ENTD="/usr/sbin/entd" |
16 else | 17 else |
17 CHROMEOS=0 | 18 CHROMEOS=0 |
18 ENTD="../../scripts/run_32bit.sh out/i686-pc-linux-gnu/entd --" | 19 ENTD="../../scripts/run_32bit.sh out/i686-pc-linux-gnu/entd --" |
19 fi | 20 fi |
20 | 21 |
21 # If non-zero, print test output on failure | 22 # If non-zero, print test output on failure |
(...skipping 16 matching lines...) Expand all Loading... |
38 # Test by running entd with some command line options and grepping the | 39 # Test by running entd with some command line options and grepping the |
39 # output for an expected pattern. | 40 # output for an expected pattern. |
40 local args="$1" | 41 local args="$1" |
41 local pattern="$2" | 42 local pattern="$2" |
42 local name="$3" | 43 local name="$3" |
43 | 44 |
44 if [ -z "$name" ]; then | 45 if [ -z "$name" ]; then |
45 name=$args | 46 name=$args |
46 fi | 47 fi |
47 | 48 |
| 49 local expected_result="$4" |
| 50 |
| 51 if [ -z "$expected_result" ]; then |
| 52 expected_result=0 |
| 53 fi |
| 54 |
| 55 |
48 if [ ${args:0:2} != "--" ]; then | 56 if [ ${args:0:2} != "--" ]; then |
49 # allow callers to just pass the name of the js file if that's all they need | 57 # allow callers to just pass the name of the js file if that's all they need |
50 args="--policy=test_data/$args" | 58 args="--policy=test_data/$args" |
51 fi | 59 fi |
52 | 60 |
53 local cmd="$ENTD --username=$USERNAME $args" | 61 local cmd="$ENTD --username=$USERNAME $args" |
54 if [ ! -z "$ALLOW_DIRTY_EXIT" ]; then | 62 if [ ! -z "$ALLOW_DIRTY_EXIT" ]; then |
55 cmd="$cmd --allow-dirty-exit" | 63 cmd="$cmd --allow-dirty-exit" |
56 fi | 64 fi |
57 | 65 |
58 local out=$($cmd 2>&1) | 66 if [ ! -z "$PKCS11_TEST" ]; then |
| 67 cmd="$cmd --pkcs11=test" |
| 68 fi |
| 69 |
| 70 local out |
| 71 out=$($cmd 2>&1) |
59 local code=$? | 72 local code=$? |
60 | 73 |
61 TESTS=$(($TESTS +1)) | 74 TESTS=$(($TESTS +1)) |
62 | 75 |
63 if [ $code != 0 ]; then | 76 if [ $code != $expected_result ]; then |
64 logfail "$name: exited with $code" | 77 logfail "$name: exited with $code" |
65 return | 78 return |
66 fi | 79 fi |
67 | 80 |
68 grep -q "$pattern" <(echo $out) | 81 grep -q "$pattern" <(echo $out) |
69 if [ $? != 0 ]; then | 82 if [ $? != 0 ]; then |
70 logfail "$name: pattern not found: '$pattern'" | 83 logfail "$name: pattern not found: '$pattern'" |
71 if [ ! -z "$VERBOSE" ]; then | 84 if [ ! -z "$VERBOSE" ]; then |
72 echo | 85 echo |
73 echo $cmd | 86 echo $cmd |
74 echo | 87 echo |
75 echo "=== OUTPUT START" | 88 echo "=== OUTPUT START" |
76 echo $out | 89 echo $out |
77 echo "=== OUTPUT END" | 90 echo "=== OUTPUT END" |
78 echo | 91 echo |
79 fi | 92 fi |
80 else | 93 else |
81 logpass "$name" | 94 logpass "$name" |
82 fi | 95 fi |
83 } | 96 } |
84 | 97 |
85 # Basic tests. | 98 # Basic tests. |
86 greptest "hello-world.js" 'hello world' | 99 greptest "hello-world.js" 'hello world' |
87 greptest "bad-onload.js" 'throw "expected exception"' | 100 greptest "bad-onload.js" 'throw "expected exception"' '' 1 |
88 greptest "print-username.js" "username: $USERNAME" | 101 greptest "print-username.js" "username: $USERNAME" |
89 greptest "throw-exception.js" 'throw "goodbye world"' | 102 greptest "throw-exception.js" 'throw "goodbye world"' '' 1 |
90 greptest "syslog.js" "entd.syslog.error" | 103 greptest "syslog.js" "entd.syslog.error" |
91 greptest "simple-hostname.js" "LOOKS OK" | 104 greptest "simple-hostname.js" "LOOKS OK" |
92 greptest "simple-onunload.js" "LOOKS OK" | 105 greptest "simple-onunload.js" "LOOKS OK" |
93 | 106 |
94 # Basic tests with longer command lines. | 107 # Basic tests with longer command lines. |
95 greptest "--policy=test_data/print-manifest.js \ | 108 greptest "--policy=test_data/print-manifest.js \ |
96 --manifest=test_data/simple-manifest.json" '{"foo":1,"bar":2}' \ | 109 --manifest=test_data/simple-manifest.json" '{"foo":1,"bar":2}' \ |
97 "print-manifest.js" | 110 "print-manifest.js" |
98 greptest "--policy=test_data/simple-utility.js \ | 111 greptest "--policy=test_data/simple-utility.js \ |
99 --utility=test_data/simple-utility.js" 'utility is set' "simple-utility.js" | 112 --utility=test_data/simple-utility.js" 'utility is set' "simple-utility.js" |
100 greptest "--extension-path=test_data/Extensions" '{"foo":1,"bar":2}' | 113 greptest "--extension-path=test_data/Extensions" '{"foo":1,"bar":2}' |
101 | 114 |
102 # Http tests. | 115 # Http tests. |
103 greptest "http-good.js" "HTTP COMPLETE" | 116 greptest "http-good.js" "HTTP COMPLETE" |
104 greptest "http-badhost.js" "HTTP ERROR: Couldn't resolve" | 117 greptest "http-badhost.js" "HTTP ERROR: Couldn't resolve" |
105 greptest "http-badport.js" "LOOKS OK" | 118 greptest "http-badport.js" "LOOKS OK" |
106 greptest "http-evilhost.js" "Invalid hostname" | 119 greptest "http-evilhost.js" "Invalid hostname" '' 1 |
107 greptest "http-badrequest.js" "First argument must be a Request object" | 120 greptest "http-badrequest.js" "First argument must be a Request object" '' 1 |
108 greptest "http-redirect.js" "HTTP COMPLETE" | 121 greptest "http-redirect.js" "HTTP COMPLETE" |
109 | 122 |
110 # Pkcs11 tests. | 123 # Pkcs11 tests. |
111 greptest 'pkcs11.js '\ | 124 greptest 'pkcs11.js '\ |
112 '--allow-file-io' \ | 125 '--allow-file-io' \ |
113 '{"slot1":{"label":"slot1","keyIdentifier":"key1",'\ | 126 '{"slot1":{"label":"slot1","keyIdentifier":"key1",'\ |
114 '"certificate":{"subject":"Content"}},'\ | 127 '"certificate":{"subject":"Test"}},'\ |
115 '"slot2":{"label":"slot2","keyIdentifier":"key2",'\ | 128 '"slot2":{"label":"slot2","keyIdentifier":"key2",'\ |
116 '"certificate":{"subject":"Content"}}}' \ | 129 '"certificate":{"subject":"Test"}}}' \ |
117 "pkcs11.js" | 130 "pkcs11.js" |
118 greptest 'pkcs11-cert.js '\ | 131 greptest 'pkcs11-cert.js '\ |
119 '--allow-file-io' \ | 132 '--allow-file-io' \ |
120 '{"slot1":{"label":"slot1","certificate":{"subject":"Content"}}}' \ | 133 '{"slot1":{"label":"slot1","certificate":{"subject":"Test"}}}' \ |
121 "pkcs11-cert.js" | 134 "pkcs11-cert.js" |
| 135 greptest "pkcs11-remove.js" "Slot1: undefined" |
| 136 |
| 137 PKCS11_TEST= |
122 greptest 'pkcs11-openssl.js '\ | 138 greptest 'pkcs11-openssl.js '\ |
123 '--pkcs11=openssl --allow-file-io' \ | 139 '--pkcs11=openssl --allow-file-io' \ |
124 'Subject:/C=US/ST=California/L=Mountain View/O=Google Inc/OU=ChromeOS' \ | 140 'Subject:/C=US/ST=California/L=Mountain View/O=Google Inc/OU=ChromeOS' \ |
125 "pkcs11-openssl.js" | 141 "pkcs11-openssl.js" |
126 greptest "pkcs11-remove.js" "Slot1: undefined" | |
127 | 142 |
128 # Pkcs11 opencryptoki tests (requires a TPM (or emulator), so chromeos only) | 143 # Pkcs11 opencryptoki tests (requires a TPM (or emulator), so chromeos only) |
129 if [ "$CHROMEOS" == 1 ]; then | 144 if [ "$CHROMEOS" == 1 ]; then |
130 greptest 'pkcs11-opencryptoki.js '\ | 145 greptest 'pkcs11-opencryptoki.js '\ |
131 '--pkcs11=glaptop --allow-file-io' \ | 146 '--allow-file-io' \ |
132 '"slot1":{"label":"slot1","keyIdentifier":"1234",'\ | 147 '"slot1":{"label":"slot1","keyIdentifier":"1234",'\ |
133 '"certificate":{'\ | 148 '"certificate":{'\ |
134 '"subject":"/C=US/ST=California/L=Mountain View/O=Google Inc/OU=ChromeOS' \ | 149 '"subject":"/C=US/ST=California/L=Mountain View/O=Google Inc/OU=ChromeOS' \ |
135 "pkcs11-opencryptoki.js" | 150 "pkcs11-opencryptoki.js" |
136 greptest 'pkcs11-opencryptoki-delete.js '\ | 151 greptest 'pkcs11-opencryptoki-delete.js '\ |
137 '--pkcs11=glaptop --allow-file-io' \ | 152 '--allow-file-io' \ |
138 'Slots.slot1: undefined' \ | 153 'Slots.slot1: undefined' \ |
139 "pkcs11-opencryptoki-delete.js" | 154 "pkcs11-opencryptoki-delete.js" |
140 fi | 155 fi |
| 156 PKCS11_TEST=1 |
| 157 |
141 # Slightly longer running tests. | 158 # Slightly longer running tests. |
142 greptest "settimeout.js" "string timeout function timeout" | 159 greptest "settimeout.js" "string timeout function timeout" |
143 greptest "cleartimeout.js" "starting timeouts function timeout" | 160 greptest "cleartimeout.js" "starting timeouts function timeout" |
144 | 161 |
145 # Test the callback server; doesn't run as-is on chromeos. | 162 # Test the callback server; doesn't run as-is on chromeos. |
146 if [ "$CHROMEOS" != 1 ]; then | 163 if [ "$CHROMEOS" != 1 ]; then |
147 greptest "simple-shutdown.js" "LOOKS OK" | 164 greptest "simple-shutdown.js" "LOOKS OK" |
148 | 165 |
149 # Fire off this bg task to make an http request | 166 # Fire off this bg task to make an http request |
150 (sleep 2; \ | 167 (sleep 2; \ |
(...skipping 11 matching lines...) Expand all Loading... |
162 | 179 |
163 if [ $FAILURES -gt 0 ]; then | 180 if [ $FAILURES -gt 0 ]; then |
164 echo "TESTS FAILED: $FAILURES" | 181 echo "TESTS FAILED: $FAILURES" |
165 echo | 182 echo |
166 exit 1 | 183 exit 1 |
167 fi | 184 fi |
168 | 185 |
169 echo "All tests passed." | 186 echo "All tests passed." |
170 echo | 187 echo |
171 exit 0 | 188 exit 0 |
OLD | NEW |