101
102 # Root of this test area (important to use full paths in some places)
103 TEST_ROOT := $(shell $(PWD))
104
105 # Root of all test results
106 ifdef TEST_OUTPUT_DIR
107 $(shell $(MKDIR) -p $(TEST_OUTPUT_DIR)/jtreg)
108 ABS_TEST_OUTPUT_DIR := \
109 $(shell $(CD) $(TEST_OUTPUT_DIR)/jtreg && $(PWD))
110 else
111 ifdef ALT_OUTPUTDIR
112 ABS_OUTPUTDIR = $(shell $(CD) $(ALT_OUTPUTDIR) && $(PWD))
113 else
114 ABS_OUTPUTDIR = $(shell $(CD) $(TEST_ROOT)/.. && $(PWD))
115 endif
116
117 ABS_PLATFORM_BUILD_ROOT = $(ABS_OUTPUTDIR)
118 ABS_TEST_OUTPUT_DIR := $(ABS_PLATFORM_BUILD_ROOT)/testoutput/$(UNIQUE_DIR)
119 endif
120
121 # Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test)
122 ifndef PRODUCT_HOME
123 # Try to use images/jdk if it exists
124 ABS_JDK_IMAGE = $(ABS_PLATFORM_BUILD_ROOT)/images/jdk
125 PRODUCT_HOME := \
126 $(shell \
127 if [ -d $(ABS_JDK_IMAGE) ] ; then \
128 $(ECHO) "$(ABS_JDK_IMAGE)"; \
129 else \
130 $(ECHO) "$(ABS_PLATFORM_BUILD_ROOT)"; \
131 fi)
132 PRODUCT_HOME := $(PRODUCT_HOME)
133 endif
134
135 # On Windows, setup the _NT_SYMBOL_PATH if possible.
136 ifeq ($(PLATFORM), windows)
137 ifndef _NT_SYMBOL_PATH
138 ifdef PRODUCT_SYMBOLS_HOME
139 _NT_SYMBOL_PATH := \
140 $(subst $(SPACE),;,$(strip $(call MixedDirs, $(sort $(dir $(wildcard \
141 $(addprefix $(PRODUCT_SYMBOLS_HOME)/bin/, *.pdb */*.pdb)))))))
142 export _NT_SYMBOL_PATH
143 endif
144 endif
145 JTREG_BASIC_OPTIONS += -e:_NT_SYMBOL_PATH='$(_NT_SYMBOL_PATH)'
146 endif
147
148 # Expect JPRT to set JPRT_PRODUCT_ARGS (e.g. -server etc.)
149 # Should be passed into 'java' only.
150 # Could include: -d64 -server -client OR any java option
151 ifdef JPRT_PRODUCT_ARGS
152 JAVA_ARGS = $(JPRT_PRODUCT_ARGS)
153 endif
154
155 # Expect JPRT to set JPRT_PRODUCT_VM_ARGS (e.g. -Xcomp etc.)
156 # Should be passed into anything running the vm (java, javac, javadoc, ...).
157 ifdef JPRT_PRODUCT_VM_ARGS
158 JAVA_VM_ARGS = $(JPRT_PRODUCT_VM_ARGS)
159 endif
160
161 ifneq ($(NATIVE_TEST_PATH), )
162 # jtreg -nativepath <dir>
163 #
164 # Local make tests will be TEST_IMAGE_DIR and JPRT with jprt.use.reg.test.bundle=true
165 # should be JPRT_TESTNATIVE_PATH
166 ifdef TEST_IMAGE_DIR
167 TESTNATIVE_DIR = $(TEST_IMAGE_DIR)
168 else ifdef JPRT_TESTNATIVE_PATH
169 TESTNATIVE_DIR = $(JPRT_TESTNATIVE_PATH)
170 endif
171 ifdef TESTNATIVE_DIR
172 JTREG_NATIVE_PATH = -nativepath:$(shell $(GETMIXEDPATH) "$(TESTNATIVE_DIR)/$(NATIVE_TEST_PATH)")
173 endif
174 endif
175
176 ifeq ($(USE_FAILURE_HANDLER), true)
177 # jtreg failure handler config
178 ifeq ($(FAILURE_HANDLER_DIR), )
179 ifneq ($(TESTNATIVE_DIR), )
180 FAILURE_HANDLER_DIR := $(TESTNATIVE_DIR)/failure_handler
181 endif
182 endif
183 ifneq ($(FAILURE_HANDLER_DIR), )
184 FAILURE_HANDLER_DIR_MIXED := $(shell $(GETMIXEDPATH) "$(FAILURE_HANDLER_DIR)")
185 JTREG_FAILURE_HANDLER_OPTIONS := \
186 -timeoutHandlerDir:$(FAILURE_HANDLER_DIR_MIXED)/jtregFailureHandler.jar \
187 -observerDir:$(FAILURE_HANDLER_DIR_MIXED)/jtregFailureHandler.jar \
188 -timeoutHandler:jdk.test.failurehandler.jtreg.GatherProcessInfoTimeoutHandler \
189 -observer:jdk.test.failurehandler.jtreg.GatherDiagnosticInfoObserver \
191 ifeq ($(PLATFORM), windows)
192 JTREG_FAILURE_HANDLER_OPTIONS += -J-Djava.library.path="$(FAILURE_HANDLER_DIR_MIXED)"
193 endif
194 endif
195 endif
196
197
198 # Optionally create a CDS archive before running tests
199 ifeq ($(GENERATE_CDS_ARCHIVE), true)
200 CDS_ARCHIVE_FILE := $(ABS_TEST_OUTPUT_DIR)/cds_archive.jsa
201
202 $(CDS_ARCHIVE_FILE): $(PRODUCT_HOME)
203 $(PRODUCT_HOME)/bin/java -XX:+UnlockDiagnosticVMOptions \
204 -XX:SharedArchiveFile=$(shell $(GETMIXEDPATH) "$(CDS_ARCHIVE_FILE)") -Xshare:dump
205
206 CDS_VM_ARGS := -XX:+UnlockDiagnosticVMOptions -XX:SharedArchiveFile=$(shell $(GETMIXEDPATH) "$(CDS_ARCHIVE_FILE)")
207 JTREG_TEST_OPTIONS += $(addprefix -vmoption:, $(CDS_VM_ARGS))
208 TEST_PREREQS += $(CDS_ARCHIVE_FILE)
209 endif
210
211 # Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results)
212 ifdef JPRT_ARCHIVE_BUNDLE
213 ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE)
214 endif
215
216 # How to create the test bundle (pass or fail, we want to create this)
217 # Follow command with ";$(BUNDLE_UP_AND_EXIT)", so it always gets executed.
218 ifneq ($(ARCHIVE_BUNDLE), )
219 ZIP_UP_RESULTS = ( $(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)` \
220 && $(CD) $(ABS_TEST_OUTPUT_DIR) \
221 && $(CHMOD) -R a+r . \
222 && $(ZIPEXE) -q -r $(ARCHIVE_BUNDLE) . ) ;
223 CLEAN_ARCHIVE_BUNDLE = @$(RM) $(ARCHIVE_BUNDLE)
224 endif
225
226 # AddressSanitizer
227 ifeq ($(ASAN_ENABLED), yes)
228 export ASAN_OPTIONS="handle_segv=0 detect_leaks=0"
229 JTREG_BASIC_OPTIONS += -e:ASAN_OPTIONS=$(ASAN_OPTIONS)
230 ifneq ($(DEVKIT_LIB_DIR),)
231 export LD_LIBRARY_PATH:=$(LD_LIBRARY_PATH):$(DEVKIT_LIB_DIR)
232 JTREG_BASIC_OPTIONS += -e:LD_LIBRARY_PATH=$(LD_LIBRARY_PATH)
233 endif
234 endif
235
323 -exec $(CHMOD) a+rx {} \; ; \
324 fi
325
326 ifeq ($(CLEAN_BEFORE_PREP), true)
327 prep: clean
328
329 endif
330
331 # Cleanup
332 clean:
333 @$(RM) -r $(ABS_TEST_OUTPUT_DIR)
334 $(CLEAN_ARCHIVE_BUNDLE)
335
336 ################################################################
337
338 # jtreg tests
339
340 # Expect JT_HOME to be set for jtreg tests. (home for jtreg)
341 ifndef JT_HOME
342 JT_HOME = $(SLASH_JAVA)/re/jtreg/$(USE_JTREG_VERSION)/promoted/latest/binaries/jtreg
343 ifdef JPRT_JTREG_HOME
344 JT_HOME = $(JPRT_JTREG_HOME)
345 endif
346 endif
347
348 # Problematic tests to be excluded
349 EXTRA_PROBLEM_LISTS :=
350 PROBLEM_LISTS := ProblemList.txt $(EXTRA_PROBLEM_LISTS)
351
352 # Create exclude list for this platform and arch
353 ifdef NO_EXCLUDES
354 JTREG_EXCLUSIONS =
355 else
356 JTREG_EXCLUSIONS = $(addprefix -exclude:, $(wildcard $(PROBLEM_LISTS)))
357 endif
358
359 # ------------------------------------------------------------------
360
361 # When called from JPRT the TESTDIRS variable is set to the jtreg tests to run
362 ifdef TESTDIRS
363 TEST_SELECTION = $(TESTDIRS)
364 endif
365
366 ifeq ($(UNAME_S), SunOS)
367 NUM_CORES := $(shell LC_MESSAGES=C /usr/sbin/psrinfo -v | grep -c on-line)
368 endif
369 ifeq ($(UNAME_S), Linux)
370 NUM_CORES := $(shell cat /proc/cpuinfo | grep -c processor)
371 endif
372 ifeq ($(UNAME_S), Darwin)
373 NUM_CORES := $(shell /usr/sbin/sysctl -n hw.ncpu)
374 endif
375 ifeq ($(findstring CYGWIN,$(UNAME_S)), CYGWIN)
376 ifneq ($(NUMBER_OF_PROCESSORS), )
377 NUM_CORES := $(NUMBER_OF_PROCESSORS)
378 else
379 ifneq ($(HOTSPOT_BUILD_JOBS), )
380 NUM_CORES := $(HOTSPOT_BUILD_JOBS)
381 else
|
101
102 # Root of this test area (important to use full paths in some places)
103 TEST_ROOT := $(shell $(PWD))
104
105 # Root of all test results
106 ifdef TEST_OUTPUT_DIR
107 $(shell $(MKDIR) -p $(TEST_OUTPUT_DIR)/jtreg)
108 ABS_TEST_OUTPUT_DIR := \
109 $(shell $(CD) $(TEST_OUTPUT_DIR)/jtreg && $(PWD))
110 else
111 ifdef ALT_OUTPUTDIR
112 ABS_OUTPUTDIR = $(shell $(CD) $(ALT_OUTPUTDIR) && $(PWD))
113 else
114 ABS_OUTPUTDIR = $(shell $(CD) $(TEST_ROOT)/.. && $(PWD))
115 endif
116
117 ABS_PLATFORM_BUILD_ROOT = $(ABS_OUTPUTDIR)
118 ABS_TEST_OUTPUT_DIR := $(ABS_PLATFORM_BUILD_ROOT)/testoutput/$(UNIQUE_DIR)
119 endif
120
121 # If unset, set up the PRODUCT_HOME variable to the jdk to test
122 ifndef PRODUCT_HOME
123 # Try to use images/jdk if it exists
124 ABS_JDK_IMAGE = $(ABS_PLATFORM_BUILD_ROOT)/images/jdk
125 PRODUCT_HOME := \
126 $(shell \
127 if [ -d $(ABS_JDK_IMAGE) ] ; then \
128 $(ECHO) "$(ABS_JDK_IMAGE)"; \
129 else \
130 $(ECHO) "$(ABS_PLATFORM_BUILD_ROOT)"; \
131 fi)
132 PRODUCT_HOME := $(PRODUCT_HOME)
133 endif
134
135 # On Windows, setup the _NT_SYMBOL_PATH if possible.
136 ifeq ($(PLATFORM), windows)
137 ifndef _NT_SYMBOL_PATH
138 ifdef PRODUCT_SYMBOLS_HOME
139 _NT_SYMBOL_PATH := \
140 $(subst $(SPACE),;,$(strip $(call MixedDirs, $(sort $(dir $(wildcard \
141 $(addprefix $(PRODUCT_SYMBOLS_HOME)/bin/, *.pdb */*.pdb)))))))
142 export _NT_SYMBOL_PATH
143 endif
144 endif
145 JTREG_BASIC_OPTIONS += -e:_NT_SYMBOL_PATH='$(_NT_SYMBOL_PATH)'
146 endif
147
148 ifneq ($(NATIVE_TEST_PATH), )
149 # jtreg -nativepath <dir>
150 #
151 # Local make tests will be TEST_IMAGE_DIR
152 ifdef TEST_IMAGE_DIR
153 TESTNATIVE_DIR = $(TEST_IMAGE_DIR)
154 endif
155 ifdef TESTNATIVE_DIR
156 JTREG_NATIVE_PATH = -nativepath:$(shell $(GETMIXEDPATH) "$(TESTNATIVE_DIR)/$(NATIVE_TEST_PATH)")
157 endif
158 endif
159
160 ifeq ($(USE_FAILURE_HANDLER), true)
161 # jtreg failure handler config
162 ifeq ($(FAILURE_HANDLER_DIR), )
163 ifneq ($(TESTNATIVE_DIR), )
164 FAILURE_HANDLER_DIR := $(TESTNATIVE_DIR)/failure_handler
165 endif
166 endif
167 ifneq ($(FAILURE_HANDLER_DIR), )
168 FAILURE_HANDLER_DIR_MIXED := $(shell $(GETMIXEDPATH) "$(FAILURE_HANDLER_DIR)")
169 JTREG_FAILURE_HANDLER_OPTIONS := \
170 -timeoutHandlerDir:$(FAILURE_HANDLER_DIR_MIXED)/jtregFailureHandler.jar \
171 -observerDir:$(FAILURE_HANDLER_DIR_MIXED)/jtregFailureHandler.jar \
172 -timeoutHandler:jdk.test.failurehandler.jtreg.GatherProcessInfoTimeoutHandler \
173 -observer:jdk.test.failurehandler.jtreg.GatherDiagnosticInfoObserver \
175 ifeq ($(PLATFORM), windows)
176 JTREG_FAILURE_HANDLER_OPTIONS += -J-Djava.library.path="$(FAILURE_HANDLER_DIR_MIXED)"
177 endif
178 endif
179 endif
180
181
182 # Optionally create a CDS archive before running tests
183 ifeq ($(GENERATE_CDS_ARCHIVE), true)
184 CDS_ARCHIVE_FILE := $(ABS_TEST_OUTPUT_DIR)/cds_archive.jsa
185
186 $(CDS_ARCHIVE_FILE): $(PRODUCT_HOME)
187 $(PRODUCT_HOME)/bin/java -XX:+UnlockDiagnosticVMOptions \
188 -XX:SharedArchiveFile=$(shell $(GETMIXEDPATH) "$(CDS_ARCHIVE_FILE)") -Xshare:dump
189
190 CDS_VM_ARGS := -XX:+UnlockDiagnosticVMOptions -XX:SharedArchiveFile=$(shell $(GETMIXEDPATH) "$(CDS_ARCHIVE_FILE)")
191 JTREG_TEST_OPTIONS += $(addprefix -vmoption:, $(CDS_VM_ARGS))
192 TEST_PREREQS += $(CDS_ARCHIVE_FILE)
193 endif
194
195 # How to create the test bundle (pass or fail, we want to create this)
196 # Follow command with ";$(BUNDLE_UP_AND_EXIT)", so it always gets executed.
197 ifneq ($(ARCHIVE_BUNDLE), )
198 ZIP_UP_RESULTS = ( $(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)` \
199 && $(CD) $(ABS_TEST_OUTPUT_DIR) \
200 && $(CHMOD) -R a+r . \
201 && $(ZIPEXE) -q -r $(ARCHIVE_BUNDLE) . ) ;
202 CLEAN_ARCHIVE_BUNDLE = @$(RM) $(ARCHIVE_BUNDLE)
203 endif
204
205 # AddressSanitizer
206 ifeq ($(ASAN_ENABLED), yes)
207 export ASAN_OPTIONS="handle_segv=0 detect_leaks=0"
208 JTREG_BASIC_OPTIONS += -e:ASAN_OPTIONS=$(ASAN_OPTIONS)
209 ifneq ($(DEVKIT_LIB_DIR),)
210 export LD_LIBRARY_PATH:=$(LD_LIBRARY_PATH):$(DEVKIT_LIB_DIR)
211 JTREG_BASIC_OPTIONS += -e:LD_LIBRARY_PATH=$(LD_LIBRARY_PATH)
212 endif
213 endif
214
302 -exec $(CHMOD) a+rx {} \; ; \
303 fi
304
305 ifeq ($(CLEAN_BEFORE_PREP), true)
306 prep: clean
307
308 endif
309
310 # Cleanup
311 clean:
312 @$(RM) -r $(ABS_TEST_OUTPUT_DIR)
313 $(CLEAN_ARCHIVE_BUNDLE)
314
315 ################################################################
316
317 # jtreg tests
318
319 # Expect JT_HOME to be set for jtreg tests. (home for jtreg)
320 ifndef JT_HOME
321 JT_HOME = $(SLASH_JAVA)/re/jtreg/$(USE_JTREG_VERSION)/promoted/latest/binaries/jtreg
322 endif
323
324 # Problematic tests to be excluded
325 EXTRA_PROBLEM_LISTS :=
326 PROBLEM_LISTS := ProblemList.txt $(EXTRA_PROBLEM_LISTS)
327
328 # Create exclude list for this platform and arch
329 ifdef NO_EXCLUDES
330 JTREG_EXCLUSIONS =
331 else
332 JTREG_EXCLUSIONS = $(addprefix -exclude:, $(wildcard $(PROBLEM_LISTS)))
333 endif
334
335 # ------------------------------------------------------------------
336
337 # The TESTDIRS variable can be used to select the jtreg tests to run
338 ifdef TESTDIRS
339 TEST_SELECTION = $(TESTDIRS)
340 endif
341
342 ifeq ($(UNAME_S), SunOS)
343 NUM_CORES := $(shell LC_MESSAGES=C /usr/sbin/psrinfo -v | grep -c on-line)
344 endif
345 ifeq ($(UNAME_S), Linux)
346 NUM_CORES := $(shell cat /proc/cpuinfo | grep -c processor)
347 endif
348 ifeq ($(UNAME_S), Darwin)
349 NUM_CORES := $(shell /usr/sbin/sysctl -n hw.ncpu)
350 endif
351 ifeq ($(findstring CYGWIN,$(UNAME_S)), CYGWIN)
352 ifneq ($(NUMBER_OF_PROCESSORS), )
353 NUM_CORES := $(NUMBER_OF_PROCESSORS)
354 else
355 ifneq ($(HOTSPOT_BUILD_JOBS), )
356 NUM_CORES := $(HOTSPOT_BUILD_JOBS)
357 else
|