#!/usr/bin/env ruby if not ARGV[0] or not ARGV[1] then printf("Please provide two 'scaling-test' static binaries in the command line.\n\n") printf("The first should be linked with the correct reference pixman library.\n") printf("The second binrary should be linked with the pixman library to be tested.\n") exit(0) end $MAX = 3000000 $MIN = 1 $AVG = 0 if `#{ARGV[0]} #{$MAX} 2>/dev/null` == `#{ARGV[1]} #{$MAX} 2>/dev/null` then printf("test ok\n") exit(0) end printf("test failed, bisecting...\n") while $MAX != $MIN + 1 do $AVG = (($MIN + $MAX) / 2).to_i res1 = `#{ARGV[0]} #{$AVG} 2>/dev/null` res2 = `#{ARGV[1]} #{$AVG} 2>/dev/null` if res1 != res2 then $MAX = $AVG else $MIN = $AVG end end printf("-- ref --\n") printf("%s\n", `#{ARGV[0]} -#{$MAX}`) printf("-- new --\n") printf("%s\n", `#{ARGV[1]} -#{$MAX}`) printf("\nFailed test number is %d, you can reproduce the problematic conditions\n", $MAX) printf("by running 'scaling-test -%d'\n", $MAX)