Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(267)

Side by Side Diff: tests/untrusted_crash_dump/nacl.scons

Issue 9316125: Adding untrusted crash dump / stack trace tests. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: taking out of irt tests Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 # -*- python -*-
2 # Copyright (c) 2012 The Native Client Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 Import('env')
7
8 import posixpath
9 import sys
10
11 # Import decode_dump for small testing.
12 sys.path.append(env.Dir('$MAIN_DIR/tests/untrusted_crash_dump').abspath)
13 import decode_dump
14
15 env.Append(CCFLAGS=['-O0', '-fno-omit-frame-pointer', '-g'])
16 env['COMPONENT_STATIC'] = not env.Bit('nacl_glibc')
17
18 # Don't build on anything other than x86-32 for now.
Mark Seaborn 2012/02/13 19:04:08 Nit: This is one of those comments that just parap
bradn 2012/02/13 23:42:03 Done.
19 if not env.Bit('build_x86_32'):
20 Return()
21
22
23 def ValidateCrashDump(target=None, source=None, env=None):
Mark Seaborn 2012/02/13 19:04:08 Please don't embed non-trivial test cases like thi
bradn 2012/02/13 23:42:03 Done.
24 class Options:
25 pass
26 options = Options()
27 options.addr2line = env.subst('${ADDR2LINE}')
28 options.toolchain_libs = env.subst('${NACL_SDK_LIB}')
29 options.main_nexe = source[1].abspath
30 if len(source) > 2:
31 options.nmf = source[2].abspath
32 else:
33 options.nmf = None
34 info = decode_dump.LoadAndDecode(options, source[0].abspath)
35 trace = decode_dump.StackTrace(info)
36 expected = [
37 ('layer5', 21),
38 ('layer4', 26),
39 ('CallMe', 9),
40 ('layer3', 30),
41 ('layer2', 34),
42 ('layer1', 40),
43 ]
44 for i in range(len(expected)):
45 actual = (trace[i]['function'], trace[i]['lineno'])
46 if expected[i] != actual:
47 print >>sys.stderr, '*** EXPECTED %s but got %s' % (
Mark Seaborn 2012/02/13 19:04:08 Why not raise an exception? (Because this is in a
bradn 2012/02/13 23:42:03 Wanted to continue on fail, but yeah moot if not i
48 expected[i], actual)
49 return 1
50 # Check CallMe is from the library.
51 if i == 2:
52 source_file = 'untrusted_crash_dump_lib.c'
53 else:
54 source_file = 'untrusted_crash_dump_test.c'
55 if posixpath.basename(trace[i]['filename']) != source_file:
56 print >>sys.stderr, '*** EXPECTED %s but got %s' % (
57 source_file, trace[i]['filename'])
58 return 1
59 return 0
60
61
62 # Clone env for inbrowser version.
63 env_browser = env.Clone()
64
65
66 untrusted_crash_dump_lib = env.ComponentLibrary(
67 'untrusted_crash_dump_lib',
68 'untrusted_crash_dump_lib.c',
69 EXTRA_LIBS=['${PTHREAD_LIBS}', '${NONIRT_LIBS}'])
70
71 untrusted_crash_dump_test = env.ComponentProgram(
72 'untrusted_crash_dump_test',
73 ['untrusted_crash_dump.c', 'untrusted_crash_dump_test.c'],
74 EXTRA_LIBS=['untrusted_crash_dump_lib',
75 '${PTHREAD_LIBS}', '${NONIRT_LIBS}'])
76
77 env['ENV']['NACL_UNTRUSTED_EXCEPTION_HANDLING'] = '1'
78
79 dump_file = env.File('untrusted_crash_dump_test_core.json')
80 run_test = env.CommandSelLdrTestNacl(
81 'untrusted_crash_dump_test_run.out',
82 untrusted_crash_dump_test,
83 exit_status=166,
84 sel_ldr_flags=['-a', '-E', 'NACLCOREFILE=' + dump_file.abspath])
85 env.AlwaysBuild(run_test)
86 env.SideEffect(dump_file, run_test)
87 node = env.Command('untrusted_crash_dump_test.out',
88 [dump_file, untrusted_crash_dump_test],
89 Action(ValidateCrashDump))
90 env.Depends(node, run_test)
Mark Seaborn 2012/02/13 19:04:08 Is this necessary, if you've declared that node de
bradn 2012/02/13 23:42:03 Indeed, done.
91 env.AddNodeToTestSuite(
92 node, ['small_tests', 'exception_tests'],
93 'run_untrusted_crash_dump_test')
94
95 #
96 # Similar stuff, but in the browser.
97 #
98
99 env_browser.Append(CPPDEFINES=['IN_BROWER=1'])
Mark Seaborn 2012/02/13 19:04:08 Typo means this is presumably not needed.
bradn 2012/02/13 23:42:03 Ah yeah, dropped that in the code :-)
100
101
102 untrusted_crash_dump_lib = env_browser.ComponentLibrary(
103 'inbrowser_untrusted_crash_dump_lib',
104 env_browser.ComponentObject('inbrowser_untrusted_crash_dump_lib',
105 'untrusted_crash_dump_lib.c',
106 ),
107 EXTRA_LIBS=['srpc', 'platform', 'gio', 'imc', 'imc_syscalls',
108 '${PTHREAD_LIBS}', '${NON_PPAPI_BROWSER_LIBS}'])
109
110 untrusted_crash_dump_test = env_browser.ComponentProgram(
111 'inbrowser_untrusted_crash_dump_test',
112 [env_browser.ComponentObject(
113 'inbrowser_untrusted_crash_dump',
114 '${MAIN_DIR}/tests/untrusted_crash_dump/untrusted_crash_dump.c'),
115 env_browser.ComponentObject(
116 'inbrowser_untrusted_crash_dump_test',
117 '${MAIN_DIR}/tests/untrusted_crash_dump/untrusted_crash_dump_test.c')],
118 EXTRA_LIBS=['inbrowser_untrusted_crash_dump_lib',
119 'srpc', 'platform', 'gio', 'imc', 'imc_syscalls',
120 '${PTHREAD_LIBS}', '${NON_PPAPI_BROWSER_LIBS}'])
121
122 # Make sure .so is in place for decoding.
123 if env_browser.Bit('nacl_glibc'):
124 env_browser.Depends(untrusted_crash_dump_test,
125 '$STAGING_DIR/libinbrowser_untrusted_crash_dump_lib.so')
126
127 env_browser['ENV']['NACL_UNTRUSTED_EXCEPTION_HANDLING'] = '1'
128 crash_dump = ('${TARGET_ROOT}/test_results/'
129 'inbrowser_untrusted_crash_dump_test.stdout')
130 run_test = env_browser.PPAPIBrowserTester(
131 'inbrowser_untrusted_crash_dump_test_run.out',
132 url='untrusted_crash_dump.html',
133 nmfs=['untrusted_crash_dump_test.nmf'],
134 nacl_exe_stdout={
135 'file': crash_dump,
136 },
137 files=[untrusted_crash_dump_test,
138 env_browser.File('untrusted_crash_dump.html')])
139 env.AlwaysBuild(run_test)
140 env.SideEffect(crash_dump, run_test)
141 node = env_browser.Command(
142 'inbrowser_untrusted_crash_dump_test.out',
143 [crash_dump, untrusted_crash_dump_test,
144 '${STAGING_DIR}/untrusted_crash_dump_test.nmf'],
145 Action(ValidateCrashDump))
146 env.Depends(node, run_test)
147 env_browser.AddNodeToTestSuite(
148 node, ['chrome_browser_tests', 'exception_tests'],
Mark Seaborn 2012/02/13 19:04:08 Don't add browser tests to exception_tests, please
bradn 2012/02/13 23:42:03 Done.
149 'run_inbrowser_untrusted_crash_dump_test',
150 is_broken=env_browser.PPAPIBrowserTesterIsBroken() or
151 env_browser.Bit('running_on_valgrind') or
152 env_browser.Bit('disable_dynamic_plugin_loading'))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698