| 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 |