X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=mesademos.py;h=7fc17aabde8c7ef06bf35e651682ed014e841c6c;hb=5263168ed6c8ae77cf87759aa8fae0ab13981a95;hp=beae8b0e9ef2e34ecc0e87c938d863c3eb3cefcb;hpb=30f90f10df5ac7480acb71d1e5b9a3b0b1600aec;p=apitrace-tests diff --git a/mesademos.py b/mesademos.py index beae8b0..7fc17aa 100755 --- a/mesademos.py +++ b/mesademos.py @@ -47,7 +47,14 @@ def ansi_strip(s): def popen(command, *args, **kwargs): + if 'cwd' in kwargs: + sys.stdout.write('cd %s && ' % kwargs['cwd']) + if 'env' in kwargs: + for name, value in kwargs['env'].iteritems(): + if value != os.environ.get(name, None): + sys.stdout.write('%s=%s ' % (name, value)) sys.stdout.write(' '.join(command) + '\n') + sys.stdout.flush() return subprocess.Popen(command, *args, **kwargs) @@ -69,24 +76,28 @@ ignored_function_names = set([ def runtest(demo): - app = os.path.join(options.mesa_demos, demo) + app = os.path.join(options.mesa_demos, 'src', demo) dirname, basename = os.path.split(app) + + trace = os.path.abspath(demo.replace('/', '-') + '.trace') env = os.environ.copy() - env['LD_PRELOAD'] = os.path.abspath('glxtrace.so') - env['TRACE_FILE'] = '/tmp/trace' + env['LD_PRELOAD'] = os.path.abspath(os.path.join(options.build, 'glxtrace.so')) + env['TRACE_FILE'] = trace args = [os.path.join('.', basename)] - p = popen(args, env=env, cwd=dirname, stdout=subprocess.PIPE) - time.sleep(0.5) + p = popen(args, env=env, cwd=dirname) + time.sleep(1) # http://stackoverflow.com/questions/151407/how-to-get-an-x11-window-from-a-process-id - subprocess.call('xwd -name \'%s\' | xwdtopnm | pnmtopng > %s' % (args[0], '/tmp/ref.png'), shell=True, stdout=subprocess.PIPE) + ref_image = demo.replace('/', '-') + '.ref.png' + #subprocess.call(['xwininfo', '-root', '-tree']) + subprocess.call("xwd -name '%s' | xwdtopnm | pnmtopng > '%s'" % (args[0], ref_image), shell=True) os.kill(p.pid, signal.SIGTERM) - p = popen(['./tracedump', '/tmp/trace'], stdout=subprocess.PIPE) + p = popen([os.path.join(options.build, 'tracedump'), trace], stdout=subprocess.PIPE) stdout, _ = p.communicate() call_re = re.compile('^([0-9]+) (\w+)\(') @@ -103,11 +114,13 @@ def runtest(demo): double_buffer = True #print orig_line - args = ['./glretrace'] + args = [os.path.join(options.build, 'glretrace')] if double_buffer: args += ['-db'] - args += ['-s', '/tmp/test_'] - args += ['/tmp/trace'] + else: + args += ['-sb'] + args += ['-s', '/tmp/' + demo.replace('/', '-') + '.'] + args += [trace] p = popen(args, stdout=subprocess.PIPE) stdout, _ = p.communicate() image_re = re.compile('^Wrote (.*\.png)$') @@ -118,7 +131,8 @@ def runtest(demo): image = mo.group(1) if image: - p = popen(["compare", '-metric', 'AE', '-fuzz', '5%', '-extract', '250x250', '/tmp/ref.png', image, '/tmp/delta.png']) + delta_image = demo.replace('/', '-') + '.diff.png' + p = popen(["compare", '-alpha', 'opaque', '-metric', 'AE', '-fuzz', '5%', ref_image, image, delta_image]) _, stderr = p.communicate() @@ -511,7 +525,6 @@ tests = [ #'slang/vstest', 'tests/afsmultiarb', 'tests/antialias', - 'tests/api_speed.py', 'tests/arbfpspec', 'tests/arbfptest1', 'tests/arbfptexture', @@ -667,24 +680,28 @@ def main(): # Parse command line options optparser = optparse.OptionParser( - usage='\n\t%prog [options] ', + usage='\n\t%prog [options] [demo] ...', version='%%prog') optparser.add_option( '--build', metavar='PATH', type='string', dest='build', default='.', - help='path to apitrace build') - + help='path to apitrace build [default=%default]') optparser.add_option( '--mesa-demos', metavar='PATH', type='string', dest='mesa_demos', default=os.environ.get('MESA_DEMOS'), - help='path to mesa demos') + help='path to Mesa demos [default=%default]') (options, args) = optparser.parse_args(sys.argv[1:]) - if args: - optparser.error("incorrect number of arguments") - for test in tests: - runtest('src/' + test) + if not options.mesa_demos: + optparser.error('path to Mesa demos not specified') + + if args: + for test in args: + runtest(test) + else: + for test in tests: + runtest(test) if __name__ == '__main__':