Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Side by Side Diff: tools/tests/run.sh

Issue 796813004: Remove tools/tests. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/tests/render_pictures_test.py ('k') | tools/tests/skdiff/.gitignore » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/bin/bash
2
3 # Tests for our tools.
4 #
5 # TODO: currently, this only passes on Linux (which is the platform that
6 # the housekeeper bot runs on, e.g.
7 # http://70.32.156.51:10117/builders/Skia_PerCommit_House_Keeping/builds/1415/st eps/RunToolSelfTests/logs/stdio )
8 # See https://code.google.com/p/skia/issues/detail?id=677
9 # ('make tools/tests/run.sh work cross-platform')
10 # Ideally, these tests should pass on all development platforms...
11 # otherwise, how can developers be expected to test them before committing a
12 # change?
13
14 # cd into .../trunk so all the paths will work
15 cd $(dirname $0)/../..
16
17 # TODO: make it look in Release and/or Debug
18 SKDIFF_BINARY=out/Debug/skdiff
19
20 # Suffixes of the raw bench data files we want to process.
21 BENCHDATA_FILE_SUFFIXES_YES_INDIVIDUAL_TILES=\
22 "data_skp_scale_1.3061_config_8888_mode_tile_256_256_timeIndividualTiles_bbh_rtr ee "\
23 "data_skp_scale_1.3061_config_8888_mode_tile_256_256_timeIndividualTiles"
24 BENCHDATA_FILE_SUFFIXES_NO_INDIVIDUAL_TILES=\
25 "data_skp_multi_4_scale_1.3061_config_8888_mode_tile_256_256 "\
26 "data_skp_scale_1.3061_config_8888_mode_record"
27
28 # Compare contents of all files within directories $1 and $2,
29 # EXCEPT for any dotfiles.
30 # If there are any differences, a description is written to stdout and
31 # we exit with a nonzero return value.
32 # Otherwise, we write nothing to stdout and return.
33 function compare_directories {
34 if [ $# != 2 ]; then
35 echo "compare_directories requires exactly 2 parameters, got $#"
36 exit 1
37 fi
38 diff --recursive --exclude=.* $1 $2
39 if [ $? != 0 ]; then
40 echo "failed in: compare_directories $1 $2"
41 exit 1
42 fi
43 }
44
45 # Run skdiff with arguments in $1 (plus implicit final argument causing skdiff
46 # to write its output, if any, to directory $2/output-actual).
47 # Then compare its results against those in $2/output-expected.
48 function skdiff_test {
49 if [ $# != 2 ]; then
50 echo "skdiff_test requires exactly 2 parameters, got $#"
51 exit 1
52 fi
53 SKDIFF_ARGS="$1"
54 ACTUAL_OUTPUT_DIR="$2/output-actual"
55 EXPECTED_OUTPUT_DIR="$2/output-expected"
56
57 rm -rf $ACTUAL_OUTPUT_DIR
58 mkdir -p $ACTUAL_OUTPUT_DIR
59 COMMAND="$SKDIFF_BINARY $SKDIFF_ARGS $ACTUAL_OUTPUT_DIR"
60 echo "$COMMAND" >$ACTUAL_OUTPUT_DIR/command_line
61 $COMMAND &>$ACTUAL_OUTPUT_DIR/stdout
62 echo $? >$ACTUAL_OUTPUT_DIR/return_value
63
64 compare_directories $EXPECTED_OUTPUT_DIR $ACTUAL_OUTPUT_DIR
65 }
66
67 # Download a subset of the raw bench data for platform $1 at revision $2.
68 # (For the subset, download all files matching any of the suffixes in
69 # whitespace-separated list $3.)
70 # If any of those files already exist locally, we assume that they are
71 # correct and up to date, and we don't download them again.
72 function download_bench_rawdata {
73 if [ $# != 3 ]; then
74 echo "download_bench_rawdata requires exactly 3 parameters, got $#"
75 exit 1
76 fi
77 PLATFORM="$1"
78 REV="$2"
79 FILE_SUFFIXES="$3"
80
81 PLATFORM_DIR="tools/tests/benchalerts/$PLATFORM"
82 RAW_BENCH_DATA_DIR="$PLATFORM_DIR/raw-bench-data"
83 mkdir -p $RAW_BENCH_DATA_DIR
84
85 for FILE_SUFFIX in $FILE_SUFFIXES; do
86 FILE=bench_${REV}_${FILE_SUFFIX}
87 DESTFILE=$RAW_BENCH_DATA_DIR/$FILE
88 if [ ! -f $DESTFILE ];
89 then
90 URL=http://chromium-skia-gm.commondatastorage.googleapis.com/perfdata/${PL ATFORM}/${FILE}
91 echo Downloading $URL ...
92 curl $URL --output $DESTFILE
93 fi
94 done
95 }
96
97 # Run check_bench_regressions.py across the data from platform $1,
98 # writing its output to output-actual and comparing those results against
99 # output-expected.
100 function benchalert_test {
101 if [ $# != 2 ]; then
102 echo "benchalert_test requires exactly 2 parameter, got $#"
103 exit 1
104 fi
105 PLATFORM="$1"
106 REVISION="$2"
107
108 PLATFORM_DIR="tools/tests/benchalerts/$PLATFORM"
109 RAW_BENCH_DATA_DIR="$PLATFORM_DIR/raw-bench-data"
110 ACTUAL_OUTPUT_DIR="$PLATFORM_DIR/output-actual"
111 EXPECTED_OUTPUT_DIR="$PLATFORM_DIR/output-expected"
112
113 # Run check_bench_regressions.py .
114 rm -rf $ACTUAL_OUTPUT_DIR
115 mkdir -p $ACTUAL_OUTPUT_DIR
116 COMMAND="python bench/check_bench_regressions.py -a 25th -b $PLATFORM -d $RAW_ BENCH_DATA_DIR -e $PLATFORM_DIR/expectations.txt -r $REVISION"
117 echo "$COMMAND" >$ACTUAL_OUTPUT_DIR/command_line
118 START_TIMESTAMP=$(date +%s)
119 $COMMAND 2>$ACTUAL_OUTPUT_DIR/stderr
120 echo $? >$ACTUAL_OUTPUT_DIR/return_value
121 END_TIMESTAMP=$(date +%s)
122
123 SECONDS_RUN=$(expr $END_TIMESTAMP - $START_TIMESTAMP)
124 echo "check_bench_regressions.py took $SECONDS_RUN seconds to complete"
125
126 compare_directories $EXPECTED_OUTPUT_DIR $ACTUAL_OUTPUT_DIR
127 }
128
129 # Run jsondiff.py with arguments in $1, recording its output.
130 # Then compare that output to the content of $2/output-expected.
131 function jsondiff_test {
132 if [ $# != 2 ]; then
133 echo "jsondiff_test requires exactly 2 parameters, got $#"
134 exit 1
135 fi
136 ARGS="$1"
137 ACTUAL_OUTPUT_DIR="$2/output-actual"
138 EXPECTED_OUTPUT_DIR="$2/output-expected"
139
140 rm -rf $ACTUAL_OUTPUT_DIR
141 mkdir -p $ACTUAL_OUTPUT_DIR
142 COMMAND="python tools/jsondiff.py $ARGS"
143 echo "$COMMAND" >$ACTUAL_OUTPUT_DIR/command_line
144 $COMMAND &>$ACTUAL_OUTPUT_DIR/stdout
145 echo $? >$ACTUAL_OUTPUT_DIR/return_value
146
147 compare_directories $EXPECTED_OUTPUT_DIR $ACTUAL_OUTPUT_DIR
148 }
149
150
151
152 #
153 # Run skdiff tests...
154 #
155
156 SKDIFF_TESTDIR=tools/tests/skdiff
157
158 # Run skdiff over a variety of file pair types: identical bits, identical pixels , missing from
159 # baseDir, etc.
160 skdiff_test "$SKDIFF_TESTDIR/baseDir $SKDIFF_TESTDIR/comparisonDir" "$SKDIFF_TES TDIR/test1"
161
162 # Run skdiff over the same set of files, but with arguments as used by our build bots:
163 # - return the number of mismatching file pairs (but ignore any files missing fr om either
164 # baseDir or comparisonDir)
165 # - list filenames with each result type to stdout
166 # - don't generate HTML output files
167 skdiff_test "--failonresult DifferentPixels --failonresult DifferentSizes --fail onresult Unknown --failonstatus CouldNotDecode,CouldNotRead any --failonstatus a ny CouldNotDecode,CouldNotRead --listfilenames --nodiffs $SKDIFF_TESTDIR/baseDir $SKDIFF_TESTDIR/comparisonDir" "$SKDIFF_TESTDIR/test2"
168
169 # Run skdiff over just the files that have identical bits.
170 skdiff_test "--nodiffs --match identical-bits $SKDIFF_TESTDIR/baseDir $SKDIFF_TE STDIR/comparisonDir" "$SKDIFF_TESTDIR/identical-bits"
171
172 # Run skdiff over just the files that have identical bits or identical pixels.
173 skdiff_test "--nodiffs --match identical-bits --match identical-pixels $SKDIFF_T ESTDIR/baseDir $SKDIFF_TESTDIR/comparisonDir" "$SKDIFF_TESTDIR/identical-bits-or -pixels"
174
175 #
176 # Run bench alerts tests...
177 #
178
179 # Parse a collection of bench data
180 PLATFORM=Perf-Android-Nexus7-Tegra3-Arm7-Release
181 REVISION=69c9e1a7261a3c8361e2b2c109d6340862149e34
182 download_bench_rawdata $PLATFORM $REVISION "$BENCHDATA_FILE_SUFFIXES_NO_INDIVIDU AL_TILES"
183 download_bench_rawdata $PLATFORM $REVISION "$BENCHDATA_FILE_SUFFIXES_YES_INDIVID UAL_TILES"
184 benchalert_test $PLATFORM $REVISION
185
186 #
187 # Test jsondiff.py ...
188 #
189
190 JSONDIFF_INPUT=tools/tests/jsondiff/input
191 JSONDIFF_OUTPUT=tools/tests/jsondiff/output
192 jsondiff_test "$JSONDIFF_INPUT/old.json $JSONDIFF_INPUT/new.json" "$JSONDIFF_OUT PUT/old-vs-new"
193
194
195 #
196 # Launch all the self-tests which have been written in Python.
197 #
198 # TODO: Over time, we should move all of our tests into Python, and delete
199 # the bash tests above.
200 # See https://code.google.com/p/skia/issues/detail?id=677
201 # ('make tools/tests/run.sh work cross-platform')
202 #
203
204 COMMAND="python tools/test_all.py"
205 echo "$COMMAND"
206 $COMMAND
207 ret=$?
208 if [ $ret -ne 0 ]; then
209 echo "failure in Python self-tests; see stack trace above"
210 exit 1
211 fi
212
213
214 echo "All tests passed."
OLDNEW
« no previous file with comments | « tools/tests/render_pictures_test.py ('k') | tools/tests/skdiff/.gitignore » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698