pixman/test/scaling-test-bisect.rb
Siarhei Siamashka 21034db1da Scaling test updated to provide better coverage for problematic cases
Now scaling test should reliably detect problems in new scaling code.
Maximum image size reduced to improve performance (more tests can be
run per second) and also simplify detected errors analysis.
2009-05-29 22:23:22 -04:00

39 lines
1.0 KiB
Ruby

#!/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)