(List (Com {[LIT_CHARS cd]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})] [LIT_CHARS /../..]}) (= scope= flags=0 words=[] bindings=[('SKDIFF_BINARY', {[LIT_CHARS out/Debug/skdiff]})]) (= scope= flags=0 words=[] bindings=[('BENCHDATA_FILE_SUFFIXES_YES_INDIVIDUAL_TILES', {[DQ [LIT_CHARS "data_skp_scale_1.3061_config_8888_mode_tile_256_256_timeIndividualTiles_bbh_rtree "]] [DQ [LIT_CHARS data_skp_scale_1.3061_config_8888_mode_tile_256_256_timeIndividualTiles]]})]) (= scope= flags=0 words=[] bindings=[('BENCHDATA_FILE_SUFFIXES_NO_INDIVIDUAL_TILES', {[DQ [LIT_CHARS "data_skp_multi_4_scale_1.3061_config_8888_mode_tile_256_256 "]] [DQ [LIT_CHARS data_skp_scale_1.3061_config_8888_mode_record]]})]) (FunctionDef compare_directories [] (List (If (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 2]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "compare_directories requires exactly 2 parameters, got "][VarSub #]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS diff]} {[LIT_CHARS --recursive]} {[LIT_CHARS --exclude] [LIT_OTHER "="] [LIT_CHARS .] [LIT_OTHER "*"]} {[VarSub 1]} {[VarSub 2]}) (If (Com {[LIT_OTHER "["]} {[VarSub ?]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "failed in: compare_directories "][VarSub 1][LIT_CHARS " "][VarSub 2]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) ) (FunctionDef skdiff_test [] (List (If (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 2]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "skdiff_test requires exactly 2 parameters, got "][VarSub #]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('SKDIFF_ARGS', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('ACTUAL_OUTPUT_DIR', {[DQ [VarSub 2][LIT_CHARS /output-actual]]})]) (= scope= flags=0 words=[] bindings=[('EXPECTED_OUTPUT_DIR', {[DQ [VarSub 2][LIT_CHARS /output-expected]]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub ACTUAL_OUTPUT_DIR]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub ACTUAL_OUTPUT_DIR]}) (= scope= flags=0 words=[] bindings=[('COMMAND', {[DQ [VarSub SKDIFF_BINARY][LIT_CHARS " "][VarSub SKDIFF_ARGS][LIT_CHARS " "][VarSub ACTUAL_OUTPUT_DIR]]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub COMMAND]]} < (FilenameRedirectNode filename={[VarSub ACTUAL_OUTPUT_DIR] [LIT_CHARS /command_line]} "> 1), > ) (Fork (Com {[VarSub COMMAND]}) ) (Com < (FilenameRedirectNode filename={[VarSub ACTUAL_OUTPUT_DIR] [LIT_CHARS /stdout]} "> 1), > ) (Com {[LIT_CHARS echo]} {[VarSub ?]} < (FilenameRedirectNode filename={[VarSub ACTUAL_OUTPUT_DIR] [LIT_CHARS /return_value]} "> 1), > ) (Com {[LIT_CHARS compare_directories]} {[VarSub EXPECTED_OUTPUT_DIR]} {[VarSub ACTUAL_OUTPUT_DIR]}) ) ) (FunctionDef download_bench_rawdata [] (List (If (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 3]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "download_bench_rawdata requires exactly 3 parameters, got "][VarSub #]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('PLATFORM', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('REV', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('FILE_SUFFIXES', {[DQ [VarSub 3]]})]) (= scope= flags=0 words=[] bindings=[('PLATFORM_DIR', {[DQ [LIT_CHARS tools/tests/benchalerts/][VarSub PLATFORM]]})]) (= scope= flags=0 words=[] bindings=[('RAW_BENCH_DATA_DIR', {[DQ [VarSub PLATFORM_DIR][LIT_CHARS /raw-bench-data]]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub RAW_BENCH_DATA_DIR]}) (For FILE_SUFFIX [{[VarSub FILE_SUFFIXES]}]) (List (= scope= flags=0 words=[] bindings=[('FILE', {[LIT_CHARS bench_] [VarSub REV] [LIT_CHARS _] [VarSub FILE_SUFFIX]})]) (= scope= flags=0 words=[] bindings=[('DESTFILE', {[VarSub RAW_BENCH_DATA_DIR] [LIT_CHARS /] [VarSub FILE]})]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[VarSub DESTFILE]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('URL', {[LIT_CHARS http] [LIT_OTHER ":"] [LIT_CHARS //chromium-skia-gm.commondatastorage.googleapis.com/perfdata/] [VarSub PLATFORM] [LIT_CHARS /] [VarSub FILE]})]) (Com {[LIT_CHARS echo]} {[LIT_CHARS Downloading]} {[VarSub URL]} {[LIT_CHARS ...]}) (Com {[LIT_CHARS curl]} {[VarSub URL]} {[LIT_CHARS --output]} {[VarSub DESTFILE]}) ) ) ) ) ) ) (FunctionDef benchalert_test [] (List (If (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 2]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "benchalert_test requires exactly 2 parameter, got "][VarSub #]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('PLATFORM', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('REVISION', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('PLATFORM_DIR', {[DQ [LIT_CHARS tools/tests/benchalerts/][VarSub PLATFORM]]})]) (= scope= flags=0 words=[] bindings=[('RAW_BENCH_DATA_DIR', {[DQ [VarSub PLATFORM_DIR][LIT_CHARS /raw-bench-data]]})]) (= scope= flags=0 words=[] bindings=[('ACTUAL_OUTPUT_DIR', {[DQ [VarSub PLATFORM_DIR][LIT_CHARS /output-actual]]})]) (= scope= flags=0 words=[] bindings=[('EXPECTED_OUTPUT_DIR', {[DQ [VarSub PLATFORM_DIR][LIT_CHARS /output-expected]]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub ACTUAL_OUTPUT_DIR]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub ACTUAL_OUTPUT_DIR]}) (= scope= flags=0 words=[] bindings=[('COMMAND', {[DQ [LIT_CHARS "python bench/check_bench_regressions.py -a 25th -b "][VarSub PLATFORM][LIT_CHARS " -d "][VarSub RAW_BENCH_DATA_DIR][LIT_CHARS " -e "][VarSub PLATFORM_DIR][LIT_CHARS "/expectations.txt -r "][VarSub REVISION]]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub COMMAND]]} < (FilenameRedirectNode filename={[VarSub ACTUAL_OUTPUT_DIR] [LIT_CHARS /command_line]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('START_TIMESTAMP', {[ComSub (Com {[LIT_CHARS date]} {[LIT_OTHER "+"] [LIT_OTHER "%"] [LIT_CHARS s]})]})]) (Com {[VarSub COMMAND]} < (FilenameRedirectNode filename={[VarSub ACTUAL_OUTPUT_DIR] [LIT_CHARS /stderr]} "> 2), > ) (Com {[LIT_CHARS echo]} {[VarSub ?]} < (FilenameRedirectNode filename={[VarSub ACTUAL_OUTPUT_DIR] [LIT_CHARS /return_value]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('END_TIMESTAMP', {[ComSub (Com {[LIT_CHARS date]} {[LIT_OTHER "+"] [LIT_OTHER "%"] [LIT_CHARS s]})]})]) (= scope= flags=0 words=[] bindings=[('SECONDS_RUN', {[ComSub (Com {[LIT_CHARS expr]} {[VarSub END_TIMESTAMP]} {[LIT_CHARS -]} {[VarSub START_TIMESTAMP]})]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "check_bench_regressions.py took "][VarSub SECONDS_RUN][LIT_CHARS " seconds to complete"]]}) (Com {[LIT_CHARS compare_directories]} {[VarSub EXPECTED_OUTPUT_DIR]} {[VarSub ACTUAL_OUTPUT_DIR]}) ) ) (FunctionDef jsondiff_test [] (List (If (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 2]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "jsondiff_test requires exactly 2 parameters, got "][VarSub #]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('ARGS', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('ACTUAL_OUTPUT_DIR', {[DQ [VarSub 2][LIT_CHARS /output-actual]]})]) (= scope= flags=0 words=[] bindings=[('EXPECTED_OUTPUT_DIR', {[DQ [VarSub 2][LIT_CHARS /output-expected]]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub ACTUAL_OUTPUT_DIR]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub ACTUAL_OUTPUT_DIR]}) (= scope= flags=0 words=[] bindings=[('COMMAND', {[DQ [LIT_CHARS "python tools/jsondiff.py "][VarSub ARGS]]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub COMMAND]]} < (FilenameRedirectNode filename={[VarSub ACTUAL_OUTPUT_DIR] [LIT_CHARS /command_line]} "> 1), > ) (Fork (Com {[VarSub COMMAND]}) ) (Com < (FilenameRedirectNode filename={[VarSub ACTUAL_OUTPUT_DIR] [LIT_CHARS /stdout]} "> 1), > ) (Com {[LIT_CHARS echo]} {[VarSub ?]} < (FilenameRedirectNode filename={[VarSub ACTUAL_OUTPUT_DIR] [LIT_CHARS /return_value]} "> 1), > ) (Com {[LIT_CHARS compare_directories]} {[VarSub EXPECTED_OUTPUT_DIR]} {[VarSub ACTUAL_OUTPUT_DIR]}) ) ) (= scope= flags=0 words=[] bindings=[('SKDIFF_TESTDIR', {[LIT_CHARS tools/tests/skdiff]})]) (Com {[LIT_CHARS skdiff_test]} {[DQ [VarSub SKDIFF_TESTDIR][LIT_CHARS "/baseDir "][VarSub SKDIFF_TESTDIR][LIT_CHARS /comparisonDir]]} {[DQ [VarSub SKDIFF_TESTDIR][LIT_CHARS /test1]]}) (Com {[LIT_CHARS skdiff_test]} {[DQ [LIT_CHARS "--failonresult DifferentPixels --failonresult DifferentSizes --failonresult Unknown --failonstatus CouldNotDecode,CouldNotRead any --failonstatus any CouldNotDecode,CouldNotRead --listfilenames --nodiffs "][VarSub SKDIFF_TESTDIR][LIT_CHARS "/baseDir "][VarSub SKDIFF_TESTDIR][LIT_CHARS /comparisonDir]]} {[DQ [VarSub SKDIFF_TESTDIR][LIT_CHARS /test2]]}) (Com {[LIT_CHARS skdiff_test]} {[DQ [LIT_CHARS "--nodiffs --match identical-bits "][VarSub SKDIFF_TESTDIR][LIT_CHARS "/baseDir "][VarSub SKDIFF_TESTDIR][LIT_CHARS /comparisonDir]]} {[DQ [VarSub SKDIFF_TESTDIR][LIT_CHARS /identical-bits]]}) (Com {[LIT_CHARS skdiff_test]} {[DQ [LIT_CHARS "--nodiffs --match identical-bits --match identical-pixels "][VarSub SKDIFF_TESTDIR][LIT_CHARS "/baseDir "][VarSub SKDIFF_TESTDIR][LIT_CHARS /comparisonDir]]} {[DQ [VarSub SKDIFF_TESTDIR][LIT_CHARS /identical-bits-or-pixels]]}) (= scope= flags=0 words=[] bindings=[('PLATFORM', {[LIT_CHARS Perf-Android-Nexus7-Tegra3-Arm7-Release]})]) (= scope= flags=0 words=[] bindings=[('REVISION', {[LIT_CHARS 69c9e1a7261a3c8361e2b2c109d6340862149e34]})]) (Com {[LIT_CHARS download_bench_rawdata]} {[VarSub PLATFORM]} {[VarSub REVISION]} {[DQ [VarSub BENCHDATA_FILE_SUFFIXES_NO_INDIVIDUAL_TILES]]}) (Com {[LIT_CHARS download_bench_rawdata]} {[VarSub PLATFORM]} {[VarSub REVISION]} {[DQ [VarSub BENCHDATA_FILE_SUFFIXES_YES_INDIVIDUAL_TILES]]}) (Com {[LIT_CHARS benchalert_test]} {[VarSub PLATFORM]} {[VarSub REVISION]}) (= scope= flags=0 words=[] bindings=[('JSONDIFF_INPUT', {[LIT_CHARS tools/tests/jsondiff/input]})]) (= scope= flags=0 words=[] bindings=[('JSONDIFF_OUTPUT', {[LIT_CHARS tools/tests/jsondiff/output]})]) (Com {[LIT_CHARS jsondiff_test]} {[DQ [VarSub JSONDIFF_INPUT][LIT_CHARS "/old.json "][VarSub JSONDIFF_INPUT][LIT_CHARS /new.json]]} {[DQ [VarSub JSONDIFF_OUTPUT][LIT_CHARS /old-vs-new]]}) (= scope= flags=0 words=[] bindings=[('COMMAND', {[DQ [LIT_CHARS "python tools/test_all.py"]]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub COMMAND]]}) (Com {[VarSub COMMAND]}) (= scope= flags=0 words=[] bindings=[('ret', {[VarSub ?]})]) (If (Com {[LIT_OTHER "["]} {[VarSub ret]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "failure in Python self-tests; see stack trace above"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "All tests passed."]]}) )