comparison test/Makefile @ 20556:8585e75970c7

8049071: Add jtreg jobs to JPRT for hotspot Reviewed-by: dholmes, iveresov
author mikael
date Thu, 16 Oct 2014 20:20:17 -0400
parents 97ad90b2712c
children a477f1af1bac
comparison
equal deleted inserted replaced
20547:fffbcc20bf61 20556:8585e75970c7
1 # 1 #
2 # Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. 2 # Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 # 4 #
5 # This code is free software; you can redistribute it and/or modify it 5 # This code is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License version 2 only, as 6 # under the terms of the GNU General Public License version 2 only, as
7 # published by the Free Software Foundation. 7 # published by the Free Software Foundation.
21 # questions. 21 # questions.
22 # 22 #
23 # 23 #
24 24
25 # 25 #
26 # Makefile to run various jdk tests 26 # Makefile to run various hotspot tests
27 # 27 #
28 28
29 GETMIXEDPATH=echo 29 GETMIXEDPATH=echo
30 30
31 # Get OS/ARCH specifics 31 # Utilities used
32 OSNAME = $(shell uname -s) 32 AWK = awk
33 ifeq ($(OSNAME), SunOS) 33 CAT = cat
34 CD = cd
35 CHMOD = chmod
36 CP = cp
37 CUT = cut
38 DIRNAME = dirname
39 ECHO = echo
40 EGREP = egrep
41 EXPAND = expand
42 FIND = find
43 MKDIR = mkdir
44 PWD = pwd
45 SED = sed
46 SORT = sort
47 TEE = tee
48 UNAME = uname
49 UNIQ = uniq
50 WC = wc
51 ZIP = zip
52
53 # Get OS name from uname (Cygwin inexplicably adds _NT-5.1)
54 UNAME_S := $(shell $(UNAME) -s | $(CUT) -f1 -d_)
55 ifeq ($(UNAME_S), SunOS)
34 PLATFORM = solaris 56 PLATFORM = solaris
35 SLASH_JAVA = /java 57 SLASH_JAVA = /java
36 ARCH = $(shell uname -p) 58 ARCH = $(shell uname -p)
37 ifeq ($(ARCH), i386) 59 ifeq ($(ARCH), i386)
38 ARCH=i586 60 ARCH=i586
39 endif 61 endif
40 endif 62 endif
41 ifeq ($(OSNAME), Linux) 63 ifeq ($(UNAME_S), Linux)
42 PLATFORM = linux 64 PLATFORM = linux
43 SLASH_JAVA = /java 65 SLASH_JAVA = /java
44 ARCH = $(shell uname -m) 66 ARCH = $(shell uname -m)
45 ifeq ($(ARCH), i386) 67 ifeq ($(ARCH), i386)
46 ARCH = i586 68 ARCH = i586
47 endif 69 endif
48 endif 70 endif
49 ifeq ($(OSNAME), Darwin) 71 ifeq ($(UNAME_S), Darwin)
50 PLATFORM = bsd 72 PLATFORM = bsd
51 SLASH_JAVA = /java 73 SLASH_JAVA = /java
52 ARCH = $(shell uname -m) 74 ARCH = $(shell uname -m)
53 ifeq ($(ARCH), i386) 75 ifeq ($(ARCH), i386)
54 ARCH = i586 76 ARCH = i586
55 endif 77 endif
56 endif 78 endif
57 ifeq ($(findstring BSD,$(OSNAME)), BSD) 79 ifeq ($(findstring BSD,$(UNAME_S)), BSD)
58 PLATFORM = bsd 80 PLATFORM = bsd
59 SLASH_JAVA = /java 81 SLASH_JAVA = /java
60 ARCH = $(shell uname -m) 82 ARCH = $(shell uname -m)
61 ifeq ($(ARCH), i386) 83 ifeq ($(ARCH), i386)
62 ARCH = i586 84 ARCH = i586
63 endif 85 endif
64 endif 86 endif
65 ifeq ($(PLATFORM),) 87 ifeq ($(PLATFORM),)
66 # detect wether we're running in MKS or cygwin 88 # detect whether we're running in MKS or cygwin
67 ifeq ($(OSNAME), Windows_NT) # MKS 89 ifeq ($(UNAME_S), Windows_NT) # MKS
68 GETMIXEDPATH=dosname -s 90 GETMIXEDPATH=dosname -s
69 endif 91 endif
70 ifeq ($(findstring CYGWIN,$(OSNAME)), CYGWIN) 92 ifeq ($(findstring CYGWIN,$(UNAME_S)), CYGWIN)
71 GETMIXEDPATH=cygpath -m -s 93 GETMIXEDPATH=cygpath -m
72 endif 94 endif
73 PLATFORM = windows 95 PLATFORM = windows
74 SLASH_JAVA = J: 96 SLASH_JAVA = J:
75 ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),ia64) 97 ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),ia64)
76 ARCH = ia64 98 ARCH = ia64
90 112
91 ifdef ALT_SLASH_JAVA 113 ifdef ALT_SLASH_JAVA
92 SLASH_JAVA = $(ALT_SLASH_JAVA) 114 SLASH_JAVA = $(ALT_SLASH_JAVA)
93 endif 115 endif
94 116
95 # Utilities used
96 CD = cd
97 CP = cp
98 ECHO = echo
99 MKDIR = mkdir
100 ZIP = zip
101
102 # Root of this test area (important to use full paths in some places) 117 # Root of this test area (important to use full paths in some places)
103 TEST_ROOT := $(shell pwd) 118 TEST_ROOT := $(shell pwd)
104 119
105 # Root of all test results 120 # Root of all test results
106 ifdef ALT_OUTPUTDIR 121 ifdef ALT_OUTPUTDIR
134 ifdef JPRT_ARCHIVE_BUNDLE 149 ifdef JPRT_ARCHIVE_BUNDLE
135 ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE) 150 ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE)
136 endif 151 endif
137 152
138 # How to create the test bundle (pass or fail, we want to create this) 153 # How to create the test bundle (pass or fail, we want to create this)
139 BUNDLE_UP = ( $(MKDIR) -p `dirname $(ARCHIVE_BUNDLE)` \ 154 # Follow command with ";$(BUNDLE_UP_AND_EXIT)", so it always gets executed.
140 && $(CD) $(ABS_TEST_OUTPUT_DIR) \ 155 ZIP_UP_RESULTS = ( $(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)` \
141 && $(ZIP) -q -r $(ARCHIVE_BUNDLE) . ) 156 && $(CD) $(ABS_TEST_OUTPUT_DIR) \
142 BUNDLE_UP_FAILED = ( exitCode=$$? && $(BUNDLE_UP) && exit $${exitCode} ) 157 && $(CHMOD) -R a+r . \
158 && $(ZIP) -q -r $(ARCHIVE_BUNDLE) . )
159
160 # important results files
161 SUMMARY_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport/text/summary.txt")
162 STATS_TXT_NAME = Stats.txt
163 STATS_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/$(STATS_TXT_NAME)")
164 RUNLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/runlist.txt")
165 PASSLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/passlist.txt")
166 FAILLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/faillist.txt")
167 EXITCODE = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/exitcode.txt")
168
169 TESTEXIT = \
170 if [ ! -s $(EXITCODE) ] ; then \
171 $(ECHO) "ERROR: EXITCODE file not filled in."; \
172 $(ECHO) "1" > $(EXITCODE); \
173 fi ; \
174 testExitCode=`$(CAT) $(EXITCODE)`; \
175 $(ECHO) "EXIT CODE: $${testExitCode}"; \
176 exit $${testExitCode}
177
178 BUNDLE_UP_AND_EXIT = \
179 ( \
180 jtregExitCode=$$? && \
181 _summary="$(SUMMARY_TXT)"; \
182 $(RM) -f $(STATS_TXT) $(RUNLIST) $(PASSLIST) $(FAILLIST) $(EXITCODE); \
183 $(ECHO) "$${jtregExitCode}" > $(EXITCODE); \
184 if [ -r "$${_summary}" ] ; then \
185 $(ECHO) "Summary: $(UNIQUE_DIR)" > $(STATS_TXT); \
186 $(EXPAND) $${_summary} | $(EGREP) -v ' Not run\.' > $(RUNLIST); \
187 $(EGREP) ' Passed\.' $(RUNLIST) \
188 | $(EGREP) -v ' Error\.' \
189 | $(EGREP) -v ' Failed\.' > $(PASSLIST); \
190 ( $(EGREP) ' Failed\.' $(RUNLIST); \
191 $(EGREP) ' Error\.' $(RUNLIST); \
192 $(EGREP) -v ' Passed\.' $(RUNLIST) ) \
193 | $(SORT) | $(UNIQ) > $(FAILLIST); \
194 if [ $${jtregExitCode} != 0 -o -s $(FAILLIST) ] ; then \
195 $(EXPAND) $(FAILLIST) \
196 | $(CUT) -d' ' -f1 \
197 | $(SED) -e 's@^@FAILED: @' >> $(STATS_TXT); \
198 if [ $${jtregExitCode} = 0 ] ; then \
199 jtregExitCode=1; \
200 fi; \
201 fi; \
202 runc="`$(CAT) $(RUNLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
203 passc="`$(CAT) $(PASSLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
204 failc="`$(CAT) $(FAILLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
205 exclc="FIXME CODETOOLS-7900176"; \
206 $(ECHO) "TEST STATS: name=$(UNIQUE_DIR) run=$${runc} pass=$${passc} fail=$${failc}" \
207 >> $(STATS_TXT); \
208 else \
209 $(ECHO) "Missing file: $${_summary}" >> $(STATS_TXT); \
210 fi; \
211 if [ -f $(STATS_TXT) ] ; then \
212 $(CAT) $(STATS_TXT); \
213 fi; \
214 $(ZIP_UP_RESULTS) ; \
215 $(TESTEXIT) \
216 )
143 217
144 ################################################################ 218 ################################################################
145 219
146 # Default make rule (runs jtreg_tests) 220 # Default make rule (runs jtreg_tests)
147 all: jtreg_tests 221 all: hotspot_all
148 @$(ECHO) "Testing completed successfully" 222 @$(ECHO) "Testing completed successfully"
149 223
150 # Support "hotspot_" prefixed test make targets too 224 # Support "hotspot_" prefixed test make targets (too)
151 # The hotspot_% targets are for example invoked by the top level Makefile 225 # The hotspot_% targets are used by the top level Makefile
226 # Unless explicitly defined below, hotspot_<x> is interpreted as a jtreg test group name
152 hotspot_%: 227 hotspot_%:
153 $(MAKE) $* 228 $(ECHO) "Running tests: $@"
229 $(MAKE) -j 1 TEST_SELECTION=":$@" UNIQUE_DIR=$@ jtreg_tests;
154 230
155 # Prep for output 231 # Prep for output
156 prep: clean 232 prep: clean
157 @$(MKDIR) -p $(ABS_TEST_OUTPUT_DIR) 233 @$(MKDIR) -p $(ABS_TEST_OUTPUT_DIR)
158 @$(MKDIR) -p `dirname $(ARCHIVE_BUNDLE)` 234 @$(MKDIR) -p `dirname $(ARCHIVE_BUNDLE)`
166 242
167 # jtreg tests 243 # jtreg tests
168 244
169 # Expect JT_HOME to be set for jtreg tests. (home for jtreg) 245 # Expect JT_HOME to be set for jtreg tests. (home for jtreg)
170 ifndef JT_HOME 246 ifndef JT_HOME
171 JT_HOME = $(SLASH_JAVA)/re/jtreg/4.0/promoted/latest/binaries/jtreg 247 JT_HOME = $(SLASH_JAVA)/re/jtreg/4.1/promoted/latest/binaries/jtreg
172 endif 248 ifdef JPRT_JTREG_HOME
173 ifdef JPRT_JTREG_HOME 249 JT_HOME = $(JPRT_JTREG_HOME)
174 JT_HOME = $(JPRT_JTREG_HOME) 250 endif
175 endif 251 endif
176 252
177 # Expect JPRT to set TESTDIRS to the jtreg test dirs 253 # When called from JPRT the TESTDIRS variable is set to the jtreg tests to run
178 JTREG_TESTDIRS = demo/jvmti/gctest demo/jvmti/hprof
179 ifdef TESTDIRS 254 ifdef TESTDIRS
180 JTREG_TESTDIRS = $(TESTDIRS) 255 TEST_SELECTION = $(TESTDIRS)
256 endif
257
258 ifdef CONCURRENCY
259 EXTRA_JTREG_OPTIONS += -concurrency:$(CONCURRENCY)
181 endif 260 endif
182 261
183 # Default JTREG to run 262 # Default JTREG to run
184 JTREG = $(JT_HOME)/bin/jtreg 263 JTREG = $(JT_HOME)/bin/jtreg
264
265 # Only run automatic tests
266 JTREG_BASIC_OPTIONS += -a
267 # Report details on all failed or error tests, times too
268 JTREG_BASIC_OPTIONS += -v:fail,error,time
269 # Retain all files for failing tests
270 JTREG_BASIC_OPTIONS += -retain:fail,error
271 # Ignore tests are not run and completely silent about it
272 JTREG_IGNORE_OPTION = -ignore:quiet
273 JTREG_BASIC_OPTIONS += $(JTREG_IGNORE_OPTION)
274 # Add any extra options
275 JTREG_BASIC_OPTIONS += $(EXTRA_JTREG_OPTIONS)
276 # Set other vm and test options
277 JTREG_TEST_OPTIONS = $(JAVA_ARGS:%=-javaoptions:%) $(JAVA_OPTIONS:%=-vmoption:%) $(JAVA_VM_ARGS:%=-vmoption:%)
185 278
186 # Option to tell jtreg to not run tests marked with "ignore" 279 # Option to tell jtreg to not run tests marked with "ignore"
187 ifeq ($(PLATFORM), windows) 280 ifeq ($(PLATFORM), windows)
188 JTREG_KEY_OPTION = -k:!ignore 281 JTREG_KEY_OPTION = -k:!ignore
189 else 282 else
190 JTREG_KEY_OPTION = -k:\!ignore 283 JTREG_KEY_OPTION = -k:\!ignore
191 endif 284 endif
192 285 JTREG_BASIC_OPTIONS += $(JTREG_KEY_OPTION)
193 #EXTRA_JTREG_OPTIONS = 286
194 287 # Make sure jtreg exists
195 jtreg_tests: prep $(JT_HOME) $(PRODUCT_HOME) $(JTREG) 288 $(JTREG): $(JT_HOME)
196 $(JTREG) -a -v:fail,error \ 289
197 $(JTREG_KEY_OPTION) \ 290 jtreg_tests: prep $(PRODUCT_HOME) $(JTREG)
198 $(EXTRA_JTREG_OPTIONS) \ 291 ( \
199 -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport \ 292 ( JT_HOME=$(shell $(GETMIXEDPATH) "$(JT_HOME)"); \
200 -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTwork \ 293 export JT_HOME; \
201 -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \ 294 $(shell $(GETMIXEDPATH) "$(JTREG)") \
202 $(JAVA_OPTIONS:%=-vmoption:%) \ 295 $(JTREG_BASIC_OPTIONS) \
203 $(JTREG_TESTDIRS) \ 296 -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport") \
204 || $(BUNDLE_UP_FAILED) 297 -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTwork") \
205 $(BUNDLE_UP) 298 -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \
299 $(JTREG_EXCLUSIONS) \
300 $(JTREG_TEST_OPTIONS) \
301 $(TEST_SELECTION) \
302 ) ; \
303 $(BUNDLE_UP_AND_EXIT) \
304 ) 2>&1 | $(TEE) $(ABS_TEST_OUTPUT_DIR)/output.txt ; $(TESTEXIT)
206 305
207 PHONY_LIST += jtreg_tests 306 PHONY_LIST += jtreg_tests
208 307
209 ################################################################ 308 ################################################################
210 309
211 # clienttest (make sure various basic java client options work) 310 # clienttest (make sure various basic java client options work)
212 311
213 clienttest: prep $(PRODUCT_HOME) 312 hotspot_clienttest clienttest: prep $(PRODUCT_HOME)
214 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -version 313 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -version
215 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -help 314 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -help
216 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -X 315 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -X
217 $(RM) $(PRODUCT_HOME)/jre/lib/*/client/classes.jsa 316 $(RM) $(PRODUCT_HOME)/jre/lib/*/client/classes.jsa
218 $(RM) $(PRODUCT_HOME)/jre/bin/client/classes.jsa 317 $(RM) $(PRODUCT_HOME)/jre/bin/client/classes.jsa
219 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -Xshare:dump 318 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -Xshare:dump
220 319
221 PHONY_LIST += clienttest 320 PHONY_LIST += hotspot_clienttest clienttest
222 321
223 ################################################################ 322 ################################################################
224 323
225 # servertest (make sure various basic java server options work) 324 # servertest (make sure various basic java server options work)
226 325
227 servertest: prep $(PRODUCT_HOME) 326 hotspot_servertest servertest: prep $(PRODUCT_HOME)
228 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -version 327 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -version
229 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -help 328 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -help
230 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -X 329 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -X
231 330
232 PHONY_LIST += servertest 331 PHONY_LIST += hotspot_servertest servertest
233 332
234 ################################################################ 333 ################################################################
235 334
236 # internalvmtests (run internal unit tests inside the VM) 335 # internalvmtests (run internal unit tests inside the VM)
237 336
238 internalvmtests: prep $(PRODUCT_HOME) 337 hotspot_internalvmtests internalvmtests: prep $(PRODUCT_HOME)
239 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -XX:+ExecuteInternalVMTests -version 338 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -XX:+ExecuteInternalVMTests -version
240 339
241 PHONY_LIST += internalvmtests 340 PHONY_LIST += hotspot_internalvmtests internalvmtests
242
243 ################################################################
244
245 # wbapitest (make sure the whitebox testing api classes work
246
247 wbapitest: prep $(JT_HOME) $(PRODUCT_HOME) $(JTREG)
248 $(JTREG) -a -v:fail,error \
249 $(JTREG_KEY_OPTION) \
250 $(EXTRA_JTREG_OPTIONS) \
251 -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport \
252 -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTwork \
253 -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \
254 $(JAVA_OPTIONS:%=-vmoption:%) \
255 $(shell $(GETMIXEDPATH) "$(TEST_ROOT)")/sanity \
256 || $(BUNDLE_UP_FAILED)
257 $(BUNDLE_UP)
258
259 PHONY_LIST += wbapitest
260
261 ################################################################
262
263 # packtest
264
265 # Expect JPRT to set JPRT_PACKTEST_HOME.
266 PACKTEST_HOME = /net/jprt-web.sfbay.sun.com/jprt/allproducts/packtest
267 ifdef JPRT_PACKTEST_HOME
268 PACKTEST_HOME = $(JPRT_PACKTEST_HOME)
269 endif
270
271 #EXTRA_PACKTEST_OPTIONS =
272
273 packtest: prep $(PACKTEST_HOME)/ptest $(PRODUCT_HOME)
274 ( $(CD) $(PACKTEST_HOME) && \
275 $(PACKTEST_HOME)/ptest \
276 -t "$(PRODUCT_HOME)" \
277 $(PACKTEST_STRESS_OPTION) \
278 $(EXTRA_PACKTEST_OPTIONS) \
279 -W $(ABS_TEST_OUTPUT_DIR) \
280 $(JAVA_OPTIONS:%=-J %) \
281 ) || $(BUNDLE_UP_FAILED)
282 $(BUNDLE_UP)
283
284 packtest_stress: PACKTEST_STRESS_OPTION=-s
285 packtest_stress: packtest
286
287 PHONY_LIST += packtest packtest_stress
288 341
289 ################################################################ 342 ################################################################
290 343
291 # Phony targets (e.g. these are not filenames) 344 # Phony targets (e.g. these are not filenames)
292 .PHONY: all clean prep $(PHONY_LIST) 345 .PHONY: all clean prep $(PHONY_LIST)
293 346
294 ################################################################ 347 ################################################################
295