]> git.cworth.org Git - apitrace-tests/blobdiff - mesademos.py
Minor tweaks.
[apitrace-tests] / mesademos.py
index 6b9519e98f6ef47b10d11ee4be74ba5236fcc5cc..7fc17aabde8c7ef06bf35e651682ed014e841c6c 100755 (executable)
@@ -47,6 +47,12 @@ 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)
@@ -77,20 +83,21 @@ def runtest(demo):
     trace = os.path.abspath(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(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
     ref_image = demo.replace('/', '-') + '.ref.png'
-    subprocess.call('xwd -name \'%s\' | xwdtopnm | pnmtopng > %s' % (args[0], ref_image), shell=True, stdout=subprocess.PIPE)
+    #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', 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+)\(')
@@ -107,9 +114,11 @@ def runtest(demo):
                 double_buffer = True
         #print orig_line
 
-    args = ['./glretrace']
+    args = [os.path.join(options.build, 'glretrace')]
     if double_buffer:
         args += ['-db']
+    else:
+        args += ['-sb']
     args += ['-s', '/tmp/' + demo.replace('/', '-') + '.']
     args += [trace]
     p = popen(args, stdout=subprocess.PIPE)
@@ -123,7 +132,7 @@ def runtest(demo):
     
     if image:
         delta_image = demo.replace('/', '-') + '.diff.png'
-        p = popen(["compare", '-metric', 'AE', '-fuzz', '5%', '-extract', '250x250', ref_image, image, delta_image])
+        p = popen(["compare", '-alpha', 'opaque', '-metric', 'AE', '-fuzz', '5%', ref_image, image, delta_image])
         _, stderr = p.communicate()
 
 
@@ -676,19 +685,23 @@ 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(
         '--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 args:
+        for test in args:
+           runtest(test)
+    else:
+        for test in tests:
+           runtest(test)
 
 
 if __name__ == '__main__':