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

Side by Side Diff: SConstruct

Issue 9316125: Adding untrusted crash dump / stack trace tests. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: Turning on for linux32 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
1 #! -*- python -*- 1 #! -*- python -*-
2 # Copyright (c) 2012 The Native Client Authors. All rights reserved. 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 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import atexit 6 import atexit
7 import glob 7 import glob
8 import os 8 import os
9 import platform 9 import platform
10 import shutil 10 import shutil
(...skipping 1440 matching lines...) Expand 10 before | Expand all | Expand 10 after
1451 # This is "built" by src/untrusted/pnacl_support_extension/nacl.scons. 1451 # This is "built" by src/untrusted/pnacl_support_extension/nacl.scons.
1452 return env.Dir('${STAGING_DIR}/pnacl_all') 1452 return env.Dir('${STAGING_DIR}/pnacl_all')
1453 1453
1454 pre_base_env.AddMethod(GetPnaclExtensionNode) 1454 pre_base_env.AddMethod(GetPnaclExtensionNode)
1455 1455
1456 1456
1457 # Compares output_file and golden_file. 1457 # Compares output_file and golden_file.
1458 # If they are different, prints the difference and returns 1. 1458 # If they are different, prints the difference and returns 1.
1459 # Otherwise, returns 0. 1459 # Otherwise, returns 0.
1460 def CheckGoldenFile(golden_file, output_file, 1460 def CheckGoldenFile(golden_file, output_file,
1461 filter_regex, filter_inverse, filter_group_only): 1461 filter_regex=None,
1462 filter_inverse=None, filter_group_only=None):
1462 golden = open(golden_file).read() 1463 golden = open(golden_file).read()
1463 actual = open(output_file).read() 1464 actual = open(output_file).read()
1464 if filter_regex is not None: 1465 if filter_regex is not None:
1465 actual = test_lib.RegexpFilterLines( 1466 actual = test_lib.RegexpFilterLines(
1466 filter_regex, 1467 filter_regex,
1467 filter_inverse, 1468 filter_inverse,
1468 filter_group_only, 1469 filter_group_only,
1469 actual) 1470 actual)
1470 if command_tester.DifferentFromGolden(actual, golden, output_file): 1471 if command_tester.DifferentFromGolden(actual, golden, output_file):
1471 return 1 1472 return 1
1472 return 0 1473 return 0
1473 1474
1474 1475
1475 # Returns action that compares output_file and golden_file. 1476 # Returns action that compares output_file and golden_file.
1476 # This action can be attached to the node with 1477 # This action can be attached to the node with
1477 # env.AddPostAction(target, action) 1478 # env.AddPostAction(target, action)
1478 def GoldenFileCheckAction(env, output_file, golden_file, 1479 def GoldenFileCheckAction(env, output_file, golden_file,
1479 filter_regex=None, filter_inverse=False, 1480 filter_regex=None, filter_inverse=False,
1480 filter_group_only=False): 1481 filter_group_only=False):
1481 def ActionFunc(target, source, env): 1482 def ActionFunc(target, source, env):
1482 return CheckGoldenFile(env.subst(golden_file), env.subst(output_file), 1483 return CheckGoldenFile(env.subst(golden_file), env.subst(output_file),
1483 filter_regex, filter_inverse, filter_group_only) 1484 filter_regex, filter_inverse, filter_group_only)
1484 1485
1485 return env.Action(ActionFunc) 1486 return env.Action(ActionFunc)
1486 1487
1488 pre_base_env.AddMethod(GoldenFileCheckAction)
1489
1490
1491 def UntrustedCrashDumpFilter(env, target, source, nexe=None, nmf=None):
1492 cmd = [
1493 '${PYTHON}',
1494 env.File('$MAIN_DIR/tests/untrusted_crash_dump/decode_dump.py').abspath,
1495 env.subst(source),
1496 env.subst(target),
1497 '--addr2line', '${ADDR2LINE}',
1498 '--toolchain-libs', '${NACL_SDK_LIB}',
1499 ]
1500 if nexe:
1501 cmd += ['--main-nexe', nexe]
1502 if nmf:
1503 cmd += ['--nmf', nmf]
1504 return env.Action(' '.join(cmd))
1505
1506 pre_base_env.AddMethod(UntrustedCrashDumpFilter)
1507
1487 1508
1488 def PPAPIBrowserTester(env, 1509 def PPAPIBrowserTester(env,
1489 target, 1510 target,
1490 url, 1511 url,
1491 files, 1512 files,
1492 nmfs=None, 1513 nmfs=None,
1493 map_files=(), 1514 map_files=(),
1494 extensions=(), 1515 extensions=(),
1495 mime_types=(), 1516 mime_types=(),
1496 timeout=20, 1517 timeout=20,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1554 command.extend(['--extension', extension]) 1575 command.extend(['--extension', extension])
1555 if env.Bit('bitcode'): 1576 if env.Bit('bitcode'):
1556 pnacl_extension = env.GetPnaclExtensionNode() 1577 pnacl_extension = env.GetPnaclExtensionNode()
1557 command.extend(['--extension', pnacl_extension]) 1578 command.extend(['--extension', pnacl_extension])
1558 for dest_path, dep_file in map_files: 1579 for dest_path, dep_file in map_files:
1559 command.extend(['--map_file', dest_path, dep_file]) 1580 command.extend(['--map_file', dest_path, dep_file])
1560 for file_ext, mime_type in mime_types: 1581 for file_ext, mime_type in mime_types:
1561 command.extend(['--mime_type', file_ext, mime_type]) 1582 command.extend(['--mime_type', file_ext, mime_type])
1562 command.extend(['--serving_dir', '${NACL_SDK_LIB}']) 1583 command.extend(['--serving_dir', '${NACL_SDK_LIB}'])
1563 command.extend(['--serving_dir', '${LIB_DIR}']) 1584 command.extend(['--serving_dir', '${LIB_DIR}'])
1585 generated_manifests = []
1564 if not nmfs is None: 1586 if not nmfs is None:
1565 for nmf_file in nmfs: 1587 for nmf_file in nmfs:
1566 generated_manifest = GeneratedManifestNode(env, nmf_file) 1588 generated_manifest = GeneratedManifestNode(env, nmf_file)
1589 generated_manifests.append(generated_manifest)
1567 # We need to add generated manifests to the list of default targets. 1590 # We need to add generated manifests to the list of default targets.
1568 # The manifests should be generated even if the tests are not run - 1591 # The manifests should be generated even if the tests are not run -
1569 # the manifests may be needed for manual testing. 1592 # the manifests may be needed for manual testing.
1570 for group in env['COMPONENT_TEST_PROGRAM_GROUPS']: 1593 for group in env['COMPONENT_TEST_PROGRAM_GROUPS']:
1571 env.Alias(group, generated_manifest) 1594 env.Alias(group, generated_manifest)
1572 # Generated manifests are served in the root of the HTTP server 1595 # Generated manifests are served in the root of the HTTP server
1573 command.extend(['--file', generated_manifest]) 1596 command.extend(['--file', generated_manifest])
1574 if 'browser_test_tool' in ARGUMENTS: 1597 if 'browser_test_tool' in ARGUMENTS:
1575 command.extend(['--tool', ARGUMENTS['browser_test_tool']]) 1598 command.extend(['--tool', ARGUMENTS['browser_test_tool']])
1576 1599
(...skipping 22 matching lines...) Expand all
1599 ('stdout', nacl_exe_stdout), 1622 ('stdout', nacl_exe_stdout),
1600 ('stderr', nacl_exe_stderr)): 1623 ('stderr', nacl_exe_stderr)):
1601 if params is None: 1624 if params is None:
1602 continue 1625 continue
1603 stream_file = env.subst(params['file']) 1626 stream_file = env.subst(params['file'])
1604 command.extend(['--nacl_exe_' + stream, stream_file]) 1627 command.extend(['--nacl_exe_' + stream, stream_file])
1605 golden_file = env.subst(params['golden']) 1628 golden_file = env.subst(params['golden'])
1606 filter_regex = params.get('filter_regex', None) 1629 filter_regex = params.get('filter_regex', None)
1607 filter_inverse = params.get('filter_inverse', False) 1630 filter_inverse = params.get('filter_inverse', False)
1608 filter_group_only = params.get('filter_group_only', False) 1631 filter_group_only = params.get('filter_group_only', False)
1632 decode_crash_dump = params.get('decode_crash_dump', False)
1633 if decode_crash_dump:
1634 if generated_manifests:
1635 nmf_path = generated_manifests[0].abspath
1636 else:
1637 nmf_path = None
1638 decoded = stream_file + '.decoded'
1639 post_actions.append(
1640 env.UntrustedCrashDumpFilter(
1641 decoded, stream_file, nexe=files[0].abspath, nmf=nmf_path))
1642 stream_file = decoded
1609 post_actions.append( 1643 post_actions.append(
1610 GoldenFileCheckAction( 1644 env.GoldenFileCheckAction(
1611 env, stream_file, golden_file, 1645 stream_file, golden_file,
1612 filter_regex, filter_inverse, filter_group_only)) 1646 filter_regex, filter_inverse, filter_group_only))
1613 1647
1614 if ShouldUseVerboseOptions(extra): 1648 if ShouldUseVerboseOptions(extra):
1615 env.MakeVerboseExtraOptions(target, log_verbosity, extra) 1649 env.MakeVerboseExtraOptions(target, log_verbosity, extra)
1616 # Heuristic for when to capture output... 1650 # Heuristic for when to capture output...
1617 capture_output = (extra.pop('capture_output', False) 1651 capture_output = (extra.pop('capture_output', False)
1618 or 'process_output_single' in extra) 1652 or 'process_output_single' in extra)
1619 node = env.CommandTest(target, 1653 node = env.CommandTest(target,
1620 command, 1654 command,
1621 # Set to 'huge' so that the browser tester's timeout 1655 # Set to 'huge' so that the browser tester's timeout
(...skipping 1587 matching lines...) Expand 10 before | Expand all | Expand 10 after
3209 'tests/sysbasic/nacl.scons', 3243 'tests/sysbasic/nacl.scons',
3210 'tests/syscall_return_sandboxing/nacl.scons', 3244 'tests/syscall_return_sandboxing/nacl.scons',
3211 'tests/syscalls/nacl.scons', 3245 'tests/syscalls/nacl.scons',
3212 'tests/threads/nacl.scons', 3246 'tests/threads/nacl.scons',
3213 'tests/time/nacl.scons', 3247 'tests/time/nacl.scons',
3214 'tests/tls/nacl.scons', 3248 'tests/tls/nacl.scons',
3215 'tests/tls_perf/nacl.scons', 3249 'tests/tls_perf/nacl.scons',
3216 'tests/toolchain/nacl.scons', 3250 'tests/toolchain/nacl.scons',
3217 'tests/unittests/shared/platform/nacl.scons', 3251 'tests/unittests/shared/platform/nacl.scons',
3218 'tests/untrusted_check/nacl.scons', 3252 'tests/untrusted_check/nacl.scons',
3253 'tests/untrusted_crash_dump/nacl.scons',
3219 #### ALPHABETICALLY SORTED #### 3254 #### ALPHABETICALLY SORTED ####
3220 ] 3255 ]
3221 3256
3222 # These are tests that are not worthwhile to run in an IRT variant. 3257 # These are tests that are not worthwhile to run in an IRT variant.
3223 # In some cases, that's because they are browser tests which always 3258 # In some cases, that's because they are browser tests which always
3224 # use the IRT. In others, it's because they are special-case tests 3259 # use the IRT. In others, it's because they are special-case tests
3225 # that are incompatible with having an IRT loaded. 3260 # that are incompatible with having an IRT loaded.
3226 nonvariant_tests = [ 3261 nonvariant_tests = [
3227 #### ALPHABETICALLY SORTED #### 3262 #### ALPHABETICALLY SORTED ####
3228 'tests/barebones/nacl.scons', 3263 'tests/barebones/nacl.scons',
3229 'tests/chrome_extension/nacl.scons', 3264 'tests/chrome_extension/nacl.scons',
3230 'tests/exit_status/nacl.scons', 3265 'tests/exit_status/nacl.scons',
3231 'tests/imc_shm_mmap/nacl.scons', 3266 'tests/imc_shm_mmap/nacl.scons',
3232 'tests/imc_sockets/nacl.scons', 3267 'tests/imc_sockets/nacl.scons',
3233 'tests/inbrowser_crash_test/nacl.scons', 3268 'tests/inbrowser_crash_test/nacl.scons',
3269 'tests/inbrowser_untrusted_crash_dump_test/nacl.scons',
3234 'tests/inbrowser_test_runner/nacl.scons', 3270 'tests/inbrowser_test_runner/nacl.scons',
3235 'tests/mach_crash_filter/nacl.scons', 3271 'tests/mach_crash_filter/nacl.scons',
3236 'tests/minnacl/nacl.scons', 3272 'tests/minnacl/nacl.scons',
3237 'tests/multiple_sandboxes/nacl.scons', 3273 'tests/multiple_sandboxes/nacl.scons',
3238 'tests/nacl.scons', 3274 'tests/nacl.scons',
3239 'tests/ppapi/nacl.scons', 3275 'tests/ppapi/nacl.scons',
3240 'tests/ppapi_browser/bad/nacl.scons', 3276 'tests/ppapi_browser/bad/nacl.scons',
3241 'tests/ppapi_browser/crash/nacl.scons', 3277 'tests/ppapi_browser/crash/nacl.scons',
3242 'tests/ppapi_browser/extension_mime_handler/nacl.scons', 3278 'tests/ppapi_browser/extension_mime_handler/nacl.scons',
3243 'tests/ppapi_browser/manifest/nacl.scons', 3279 'tests/ppapi_browser/manifest/nacl.scons',
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
3756 nacl_env.ValidateSdk() 3792 nacl_env.ValidateSdk()
3757 3793
3758 if BROKEN_TEST_COUNT > 0: 3794 if BROKEN_TEST_COUNT > 0:
3759 msg = "There are %d broken tests." % BROKEN_TEST_COUNT 3795 msg = "There are %d broken tests." % BROKEN_TEST_COUNT
3760 if GetOption('brief_comstr'): 3796 if GetOption('brief_comstr'):
3761 msg += " Add --verbose to the command line for more information." 3797 msg += " Add --verbose to the command line for more information."
3762 print msg 3798 print msg
3763 3799
3764 # separate warnings from actual build output 3800 # separate warnings from actual build output
3765 Banner('B U I L D - O U T P U T:') 3801 Banner('B U I L D - O U T P U T:')
OLDNEW
« no previous file with comments | « no previous file | site_scons/site_tools/naclsdk.py » ('j') | tests/untrusted_crash_dump/untrusted_crash_dump.c » ('J')

Powered by Google App Engine
This is Rietveld 408576698