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

Side by Side Diff: src/trusted/validator_ragel/build.scons

Issue 49183002: Regular instructions golden file test. Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: Created 6 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 json 6 import json
7 import hashlib 7 import hashlib
8 import os 8 import os
9 import platform 9 import platform
10 import sys 10 import sys
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 env.AddNodeToTestSuite( 143 env.AddNodeToTestSuite(
144 validator_py_test, 144 validator_py_test,
145 ['small_tests', 'validator_tests'], 145 ['small_tests', 'validator_tests'],
146 'run_validator_py_test') 146 'run_validator_py_test')
147 147
148 # Source generation: 148 # Source generation:
149 # 149 #
150 # dfagen : Regenerate any autogenerated source files. 150 # dfagen : Regenerate any autogenerated source files.
151 151
152 ragel_targets = set([ 152 ragel_targets = set([
153 'dfagen', 'dfacheckdecoder', 'dfacheckvalidator']) 153 'dfagen', 'dfacheckdecoder', 'dfacheckvalidator', 'dfafullcheckvalidator'])
154 ragel_involved = ragel_targets.intersection(COMMAND_LINE_TARGETS) 154 ragel_involved = ragel_targets.intersection(COMMAND_LINE_TARGETS)
155 155
156 gas = env.MakeUntrustedNativeEnv()['AS'] 156 gas = env.MakeUntrustedNativeEnv()['AS']
157 objdump = env.MakeUntrustedNativeEnv()['OBJDUMP'] 157 objdump = env.MakeUntrustedNativeEnv()['OBJDUMP']
158 158
159 if ragel_involved: 159 if ragel_involved:
160 if not env.Bit('host_linux'): 160 if not env.Bit('host_linux'):
161 raise UserError('Right now DFA generation is only supported on Linux') 161 raise UserError('Right now DFA generation is only supported on Linux')
162 162
163 # Source generation step 1: Build generator of ragel files. 163 # Source generation step 1: Build generator of ragel files.
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 check_decoders.append(check_decoder) 276 check_decoders.append(check_decoder)
277 277
278 # Never run decoder tests in parallel because they can take all CPU. 278 # Never run decoder tests in parallel because they can take all CPU.
279 SideEffect('check_decoder', check_decoders) 279 SideEffect('check_decoder', check_decoders)
280 280
281 env.AlwaysBuild(env.Alias('dfagen', automata)) 281 env.AlwaysBuild(env.Alias('dfagen', automata))
282 env.AlwaysBuild(env.Alias('dfacheckdecoder', check_decoders)) 282 env.AlwaysBuild(env.Alias('dfacheckdecoder', check_decoders))
283 283
284 if python_can_load_dll: 284 if python_can_load_dll:
285 285
286 # Fullcheck includes both [relatively] slow "regular instructions test"
287 # and [relatively] fast "regressions test". Check only includes
288 # [relatively] fast "regressions test".
289 dfafullcheckvalidator_tests = []
286 dfacheckvalidator_tests = [] 290 dfacheckvalidator_tests = []
287 291
288 for bitness, xml in [('32', validator32_xml), ('64', validator64_xml)]: 292 for bitness, xml in [('32', validator32_xml), ('64', validator64_xml)]:
289 superinstruction = env.AutoDepsCommand( 293 superinstruction = env.AutoDepsCommand(
290 'superinstructions_x86_%s.txt' % bitness, 294 'superinstructions_x86_%s.txt' % bitness,
291 ['${PYTHON}', 295 ['${PYTHON}',
292 env.File('verify_validators_dfa.py'), 296 env.File('verify_validators_dfa.py'),
293 xml, 297 xml,
294 '-o', '${TARGET}']) 298 '-o', '${TARGET}'])
295 299
296 superinstruction_verified = env.AutoDepsCommand( 300 superinstruction_verified = env.AutoDepsCommand(
297 'superinstructions_verified_x86_%s.out' % bitness, 301 'superinstructions_verified_x86_%s.out' % bitness,
298 ['${PYTHON}', 302 ['${PYTHON}',
299 env.File('verify_superinstructions.py'), 303 env.File('verify_superinstructions.py'),
300 '--bitness', bitness, 304 '--bitness', bitness,
301 '--gas', gas, 305 '--gas', gas,
302 '--objdump', objdump, 306 '--objdump', objdump,
303 '--validator_dll', validator_dll, 307 '--validator_dll', validator_dll,
304 superinstruction]) 308 superinstruction])
305 309
306 env.AlwaysBuild(superinstruction_verified) 310 env.AlwaysBuild(superinstruction_verified)
311 dfafullcheckvalidator_tests.append(superinstruction_verified)
307 dfacheckvalidator_tests.append(superinstruction_verified) 312 dfacheckvalidator_tests.append(superinstruction_verified)
308 313
314 # Compare list of allowed instructions to python model
309 regular_instructions_test = env.AutoDepsCommand( 315 regular_instructions_test = env.AutoDepsCommand(
310 'regular_instructions_test_x86_%s.out' % bitness, 316 'regular_instructions_test_x86_%s.out' % bitness,
311 ['${PYTHON}', 317 ['${PYTHON}',
312 env.File('verify_regular_instructions.py'), 318 env.File('verify_regular_instructions.py'),
313 xml, 319 xml,
314 '--bitness', bitness, 320 '--bitness', bitness,
315 '--validator_dll', validator_dll, 321 '--validator_dll', validator_dll,
316 '--decoder_dll', decoder_dll]) 322 '--decoder_dll', decoder_dll])
317 323
318 # Never run exhaustive tests in parallel because they can take all CPU. 324 # Never run exhaustive tests in parallel because they can take all CPU.
319 env.AlwaysBuild(regular_instructions_test) 325 env.AlwaysBuild(regular_instructions_test)
320 SideEffect('check_validator', regular_instructions_test) 326 SideEffect('check_validator_full', regular_instructions_test)
321 dfacheckvalidator_tests.append(regular_instructions_test) 327 dfafullcheckvalidator_tests.append(regular_instructions_test)
328
329 # Compress list of instructions and compare it to golden file
330 compress_regular_instructions_test = env.CommandTest(
331 '%sbit_regular.out' % bitness,
332 ['${PYTHON}',
333 env.File('compress_regular_instructions.py'),
334 xml,
335 '--bitness', bitness,
336 '--validator_dll', validator_dll,
337 '--decoder_dll', decoder_dll],
338 size = 'huge', scale_timeout = 16, capture_stderr = False,
339 stdout_golden = env.File('testdata/%sbit_regular.golden' % bitness))
340 SideEffect('check_validator', compress_regular_instructions_test)
341 dfacheckvalidator_tests.append(compress_regular_instructions_test)
322 342
323 env32 = env.Clone(BUILD_TARGET_NAME='x86-32') 343 env32 = env.Clone(BUILD_TARGET_NAME='x86-32')
324 env64 = env.Clone(BUILD_TARGET_NAME='x86-64') 344 env64 = env.Clone(BUILD_TARGET_NAME='x86-64')
325 old_ncval32 = env32.File('$STAGING_DIR/ncval$PROGSUFFIX') 345 old_ncval32 = env32.File('$STAGING_DIR/ncval$PROGSUFFIX')
326 old_ncval64 = env64.File('$STAGING_DIR/ncval$PROGSUFFIX') 346 old_ncval64 = env64.File('$STAGING_DIR/ncval$PROGSUFFIX')
327 347
328 regular_instructions_old_test = env.AutoDepsCommand( 348 regular_instructions_old_test = env.AutoDepsCommand(
329 'regular_instructions_old_test_x86_%s.out' % bitness, 349 'regular_instructions_old_test_x86_%s.out' % bitness,
330 ['${PYTHON}', 350 ['${PYTHON}',
331 env.File('verify_regular_instructions_old.py'), 351 env.File('verify_regular_instructions_old.py'),
332 xml, 352 xml,
333 '--bitness', bitness, 353 '--bitness', bitness,
334 '--gas', gas, 354 '--gas', gas,
335 '--objdump', objdump, 355 '--objdump', objdump,
336 '--validator_dll', validator_dll, 356 '--validator_dll', validator_dll,
337 '--ncval32', old_ncval32, 357 '--ncval32', old_ncval32,
338 '--ncval64', old_ncval64, 358 '--ncval64', old_ncval64,
339 '--errors', '${TARGET}']) 359 '--errors', '${TARGET}'])
340 360
341 # Never run exhaustive tests in parallel because they can take all CPU. 361 # Never run exhaustive tests in parallel because they can take all CPU.
342 env.AlwaysBuild(regular_instructions_old_test) 362 env.AlwaysBuild(regular_instructions_old_test)
343 SideEffect('check_validator', regular_instructions_old_test) 363 SideEffect('check_validator_full', regular_instructions_old_test)
344 dfacheckvalidator_tests.append(regular_instructions_old_test) 364 dfafullcheckvalidator_tests.append(regular_instructions_old_test)
345 365
346 # There are three categories of protected files: validator files, generated 366 # There are three categories of protected files: validator files, generated
347 # files (those of validator files that lie withing 'gen' directory) and 367 # files (those of validator files that lie withing 'gen' directory) and
348 # generating files (programs and input data used to produce generated 368 # generating files (programs and input data used to produce generated
349 # files). 369 # files).
350 # 370 #
351 # When validator files are changed, exhaustive validator tests have to be 371 # When validator files are changed, exhaustive validator tests have to be
352 # rerun. When generating files are changed, dfagen must be run to ensure 372 # rerun. When generating files are changed, dfagen must be run to ensure
353 # that generated files are up to date. Presubmit script uses 373 # that generated files are up to date. Presubmit script uses
354 # protected_files.json to perform these checks. 374 # protected_files.json to perform these checks.
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 canonical_filename = CanonicalizeFilename(filename) 416 canonical_filename = CanonicalizeFilename(filename)
397 protected_files['generating'].append(canonical_filename) 417 protected_files['generating'].append(canonical_filename)
398 with open(target_filename, 'w') as target_file: 418 with open(target_filename, 'w') as target_file:
399 json.dump(protected_files, target_file, sort_keys=True, indent=2) 419 json.dump(protected_files, target_file, sort_keys=True, indent=2)
400 420
401 calculate_hash_sums = env.Command( 421 calculate_hash_sums = env.Command(
402 target='%s/protected_files.json' % gen_dir, 422 target='%s/protected_files.json' % gen_dir,
403 source=protected_files, 423 source=protected_files,
404 action=CalculateHashSums) 424 action=CalculateHashSums)
405 env.Depends(calculate_hash_sums, dfacheckvalidator_tests) 425 env.Depends(calculate_hash_sums, dfacheckvalidator_tests)
426 dfafullcheckvalidator_tests.append(calculate_hash_sums)
427 dfacheckvalidator_tests.append(calculate_hash_sums)
406 428
407 env.Alias('dfacheckvalidator', calculate_hash_sums) 429 env.Alias('dfafullcheckvalidator', dfafullcheckvalidator_tests)
430
431 env.Alias('dfacheckvalidator', dfacheckvalidator_tests)
408 432
409 # Targeted tests: RDFA validator test, dis section checker and spec_val test. 433 # Targeted tests: RDFA validator test, dis section checker and spec_val test.
410 434
411 for bits in ['32', '64']: 435 for bits in ['32', '64']:
412 tests_mask = ( 436 tests_mask = (
413 '${MAIN_DIR}/src/trusted/validator_ragel/testdata/%s/*.test' % bits) 437 '${MAIN_DIR}/src/trusted/validator_ragel/testdata/%s/*.test' % bits)
414 438
415 if env.Bit('regenerate_golden'): 439 if env.Bit('regenerate_golden'):
416 update_option = ['--update'] 440 update_option = ['--update']
417 else: 441 else:
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 497
474 if env.Bit('regenerate_golden'): 498 if env.Bit('regenerate_golden'):
475 # Don't want these tests run in parallel because they write 499 # Don't want these tests run in parallel because they write
476 # to .test files. 500 # to .test files.
477 SideEffect(tests_mask, spec_test) 501 SideEffect(tests_mask, spec_test)
478 502
479 # Spec test uses @dis section in test files, which in turn is updated 503 # Spec test uses @dis section in test files, which in turn is updated
480 # by dis_section_test. 504 # by dis_section_test.
481 if env.Bit('target_x86'): 505 if env.Bit('target_x86'):
482 env.Depends(spec_test, dis_section_test) 506 env.Depends(spec_test, dis_section_test)
OLDNEW
« no previous file with comments | « buildbot/buildbot_standard.py ('k') | src/trusted/validator_ragel/compress_regular_instructions.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698