X-Git-Url: https://git.cworth.org/git?p=apitrace-tests;a=blobdiff_plain;f=mesademos.py;h=28ff62d33386b5cfce8f79c6bd2305708ee19a60;hp=970c39375105022bae8cd4303b22f3d88015e6fd;hb=245f27b225c2b8a374e6c04ebac51d282a293246;hpb=45aeeece678b04dabd5f3f909a2b78eef531baa7 diff --git a/mesademos.py b/mesademos.py index 970c393..28ff62d 100755 --- a/mesademos.py +++ b/mesademos.py @@ -74,29 +74,38 @@ ignored_function_names = set([ ]) -def runtest(demo): +def image_tag(html, image): + url = os.path.relpath(image, options.results) + html.write(' \n' % (url, url)) + + +def runtest(html, demo): + html.write(' \n') app = os.path.join(options.mesa_demos, 'src', demo) dirname, basename = os.path.split(app) - trace = os.path.abspath(demo.replace('/', '-') + '.trace') + trace = os.path.abspath(os.path.join(options.results, demo.replace('/', '-') + '.trace')) env = os.environ.copy() - env['LD_PRELOAD'] = os.path.abspath('glxtrace.so') + 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(1) + p = popen(args, env=env, cwd=dirname) + try: + time.sleep(1) - # http://stackoverflow.com/questions/151407/how-to-get-an-x11-window-from-a-process-id - ref_image = demo.replace('/', '-') + '.ref.png' - subprocess.call('xwd -name \'%s\' | xwdtopnm | pnmtopng > %s' % (args[0], ref_image), shell=True, stdout=subprocess.PIPE) + # http://stackoverflow.com/questions/151407/how-to-get-an-x11-window-from-a-process-id + ref_image = os.path.join(options.results, 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) + finally: + os.kill(p.pid, signal.SIGTERM) - p = popen(['./tracedump', 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+)\(') @@ -113,10 +122,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/' + demo.replace('/', '-') + '.'] + else: + args += ['-sb'] + snapshot_prefix = os.path.join(options.results, demo.replace('/', '-') + '.') + args += ['-s', snapshot_prefix] args += [trace] p = popen(args, stdout=subprocess.PIPE) stdout, _ = p.communicate() @@ -127,10 +139,16 @@ def runtest(demo): if mo: image = mo.group(1) + image_tag(html, ref_image) if image: - delta_image = demo.replace('/', '-') + '.diff.png' - p = popen(["compare", '-metric', 'AE', '-fuzz', '5%', ref_image, image, delta_image]) + delta_image = os.path.join(options.results, demo.replace('/', '-') + '.diff.png') + p = popen(["compare", '-alpha', 'opaque', '-metric', 'AE', '-fuzz', '5%', ref_image, image, delta_image]) _, stderr = p.communicate() + image_tag(html, image) + image_tag(html, delta_image) + + html.write(' \n') + html.flush() tests = [ @@ -139,7 +157,7 @@ tests = [ 'trivial/clear-fbo-scissor', 'trivial/clear-fbo-tex', 'trivial/clear-random', - 'trivial/clear-repeat', + #'trivial/clear-repeat', 'trivial/clear-scissor', 'trivial/clear-undefined', 'trivial/createwin', @@ -666,7 +684,7 @@ tests = [ ] -tests = [ +_tests = [ 'trivial/tri', 'trivial/tri-tex', ] @@ -682,19 +700,35 @@ def main(): 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( + '--results', metavar='PATH', + type='string', dest='results', default='.', + help='results directory [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: - tests = args - for test in tests: - runtest(test) + if not options.mesa_demos: + optparser.error('path to Mesa demos not specified') + if not os.path.exists(options.results): + os.makedirs(options.results) + + html = open(os.path.join(options.results, 'index.html'), 'wt') + html.write('\n') + html.write(' \n') + html.write(' \n') + html.write(' \n') + if not args: + args = tests + for test in args: + runtest(html, test) + html.write('
RefSrcΔ
\n') + html.write(' \n') + html.write('\n') if __name__ == '__main__':