Repository : ssh://darcs.haskell.org//srv/darcs/testsuite On branch : master
http://hackage.haskell.org/trac/ghc/changeset/04fc7b801336d8c85a2590f2e8b34ac2ccbc73fc >--------------------------------------------------------------- commit 04fc7b801336d8c85a2590f2e8b34ac2ccbc73fc Author: Ian Lynagh <[email protected]> Date: Sun Sep 18 22:02:20 2011 +0100 Rejig how performance test stats are stored In particular, this allows more specific results to be specified, e.g. if_wordsize(64, stats_num_field('foo', 50, 54)), if_platform('x86_64-apple-darwin', stats_num_field('foo', 62, 66)), >--------------------------------------------------------------- driver/testglobals.py | 4 ++-- driver/testlib.py | 16 ++++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/driver/testglobals.py b/driver/testglobals.py index 4d4d3d4..bdd44a3 100644 --- a/driver/testglobals.py +++ b/driver/testglobals.py @@ -195,8 +195,8 @@ class TestOptions: # ('bytes allocated', # 9300000000, # 9400000000) - self.compiler_stats_num_fields = [] - self.stats_num_fields = [] + self.compiler_stats_num_fields = {} + self.stats_num_fields = {} # should we run this test alone, i.e. not run it in parallel with # any other threads diff --git a/driver/testlib.py b/driver/testlib.py index 73f825a..dcf9752 100644 --- a/driver/testlib.py +++ b/driver/testlib.py @@ -224,13 +224,17 @@ def stats_num_field( field, min, max ): return lambda opts, f=field, x=min, y=max: _stats_num_field(opts, f, x, y); def _stats_num_field( opts, f, x, y ): - opts.stats_num_fields = opts.stats_num_fields + [(f, x, y)] + # copy the dictionary, as the config gets shared between all tests + opts.stats_num_fields = opts.stats_num_fields.copy() + opts.stats_num_fields[f] = (x, y) def compiler_stats_num_field( field, min, max ): return lambda opts, f=field, x=min, y=max: _compiler_stats_num_field(opts, f, x, y); def _compiler_stats_num_field( opts, f, x, y ): - opts.compiler_stats_num_fields = opts.compiler_stats_num_fields + [(f, x, y)] + # copy the dictionary, as the config gets shared between all tests + opts.compiler_stats_num_fields = opts.compiler_stats_num_fields.copy() + opts.compiler_stats_num_fields[f] = (x, y) # ----- @@ -907,12 +911,12 @@ def multi_compile_and_run( name, way, top_mod, extra_mods, extra_hc_opts ): def checkStats(stats_file, num_fields): result = passed() - if num_fields != []: + if len(num_fields) > 0: f = open(in_testdir(stats_file)) contents = f.read() f.close() - for (field, min, max) in num_fields: + for (field, (min, max)) in num_fields.items(): m = re.search('\("' + field + '", "([0-9]+)"\)', contents) if m == None: print 'Failed to find field: ', field @@ -978,7 +982,7 @@ def simple_build( name, way, extra_hc_opts, should_fail, top_mod, link, addsuf, to_do = '-c' # just compile stats_file = name + '.comp.stats' - if opts.compiler_stats_num_fields != []: + if len(opts.compiler_stats_num_fields) > 0: extra_hc_opts += ' +RTS -V0 -t' + stats_file + ' --machine-readable -RTS' if getTestOpts().compile_cmd_prefix == '': @@ -1054,7 +1058,7 @@ def simple_run( name, way, prog, args ): my_rts_flags = rts_flags(way) stats_file = name + '.stats' - if opts.stats_num_fields != []: + if len(opts.stats_num_fields) > 0: args += ' +RTS -V0 -t' + stats_file + ' --machine-readable -RTS' if opts.no_stdin: _______________________________________________ Cvs-ghc mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-ghc
