1 #
2 # Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 #
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
7 # published by the Free Software Foundation. Oracle designates this
8 # particular file as subject to the "Classpath" exception as provided
9 # by Oracle in the LICENSE file that accompanied this code.
10 #
11 # This code is distributed in the hope that it will be useful, but WITHOUT
12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 # version 2 for more details (a copy is included in the LICENSE file that
15 # accompanied this code).
16 #
17 # You should have received a copy of the GNU General Public License version
18 # 2 along with this work; if not, write to the Free Software Foundation,
19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 #
21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 # or visit www.oracle.com if you need additional information or have any
23 # questions.
24 #
25
26 #
27 # Makefile to run various jdk tests
28 #
29
30 # Empty these to get rid of some default rules
31 .SUFFIXES:
32 .SUFFIXES: .java
33 CO=
34 GET=
35
36 # Utilities used
37 AWK = awk
38 CAT = cat
39 CD = cd
40 CHMOD = chmod
41 CP = cp
42 CUT = cut
43 DIRNAME = dirname
44 ECHO = echo
45 EGREP = egrep
46 EXPAND = expand
47 FIND = find
48 MKDIR = mkdir
49 PWD = pwd
50 SED = sed
51 SORT = sort
52 TEE = tee
53 UNAME = uname
54 UNIQ = uniq
55 WC = wc
56 ZIP = zip
57
58 # Get OS name from uname
59 UNAME_S := $(shell $(UNAME) -s)
60
61 # Commands to run on paths to make mixed paths for java on windows
62 GETMIXEDPATH=$(ECHO)
63
64 # Location of developer shared files
65 SLASH_JAVA = /java
66
67 # Platform specific settings
68 ifeq ($(UNAME_S), SunOS)
69 OS_NAME = solaris
70 OS_ARCH := $(shell $(UNAME) -p)
71 OS_VERSION := $(shell $(UNAME) -r)
72 endif
73 ifeq ($(UNAME_S), Linux)
74 OS_NAME = linux
75 OS_ARCH := $(shell $(UNAME) -m)
76 # Check for unknown arch, try uname -p if uname -m says unknown
77 ifeq ($(OS_ARCH),unknown)
78 OS_ARCH := $(shell $(UNAME) -p)
79 endif
80 OS_VERSION := $(shell $(UNAME) -r)
81 endif
82 ifeq ($(OS_NAME),)
83 OS_NAME = windows
84 # GNU Make or MKS overrides $(PROCESSOR_ARCHITECTURE) to always
85 # return "x86". Use the first word of $(PROCESSOR_IDENTIFIER) instead.
86 ifeq ($(PROCESSOR_IDENTIFIER),)
87 PROC_ARCH:=$(shell $(UNAME) -m)
88 else
89 PROC_ARCH:=$(word 1, $(PROCESSOR_IDENTIFIER))
90 endif
91 OS_ARCH:=$(PROC_ARCH)
92 SLASH_JAVA = J:
93 EXESUFFIX = .exe
94 # These need to be different depending on MKS or CYGWIN
95 ifeq ($(findstring cygdrive,$(shell ($(CD) C:/ && $(PWD)))), )
96 GETMIXEDPATH = dosname -s
97 OS_VERSION := $(shell $(UNAME) -r)
98 else
99 GETMIXEDPATH = cygpath -m -s
100 OS_VERSION := $(shell $(UNAME) -s | $(CUT) -d'-' -f2)
101 endif
102 endif
103
104 # Only want major and minor numbers from os version
105 OS_VERSION := $(shell $(ECHO) "$(OS_VERSION)" | $(CUT) -d'.' -f1,2)
106
107 # Name to use for x86_64 arch (historically amd64, but should change someday)
108 OS_ARCH_X64_NAME:=amd64
109 #OS_ARCH_X64_NAME:=x64
110
111 # Alternate arch names (in case this arch is known by a second name)
112 # PROBLEM_LISTS may use either name.
113 OS_ARCH2-amd64:=x64
114 #OS_ARCH2-x64:=amd64
115
116 # Try and use the arch names consistently
117 OS_ARCH:=$(patsubst x64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
118 OS_ARCH:=$(patsubst X64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
119 OS_ARCH:=$(patsubst AMD64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
120 OS_ARCH:=$(patsubst amd64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
121 OS_ARCH:=$(patsubst x86_64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
122 OS_ARCH:=$(patsubst 8664,$(OS_ARCH_X64_NAME),$(OS_ARCH))
123 OS_ARCH:=$(patsubst EM64T,$(OS_ARCH_X64_NAME),$(OS_ARCH))
124 OS_ARCH:=$(patsubst em64t,$(OS_ARCH_X64_NAME),$(OS_ARCH))
125 OS_ARCH:=$(patsubst intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
126 OS_ARCH:=$(patsubst Intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
127 OS_ARCH:=$(patsubst INTEL64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
128 OS_ARCH:=$(patsubst IA64,ia64,$(OS_ARCH))
129 OS_ARCH:=$(patsubst X86,i586,$(OS_ARCH))
130 OS_ARCH:=$(patsubst x86,i586,$(OS_ARCH))
131 OS_ARCH:=$(patsubst i386,i586,$(OS_ARCH))
132 OS_ARCH:=$(patsubst i486,i586,$(OS_ARCH))
133 OS_ARCH:=$(patsubst i686,i586,$(OS_ARCH))
134 OS_ARCH:=$(patsubst 386,i586,$(OS_ARCH))
135 OS_ARCH:=$(patsubst 486,i586,$(OS_ARCH))
136 OS_ARCH:=$(patsubst 586,i586,$(OS_ARCH))
137 OS_ARCH:=$(patsubst 686,i586,$(OS_ARCH))
138
139 # Default ARCH_DATA_MODEL settings
140 ARCH_DATA_MODEL-i586 = 32
141 ARCH_DATA_MODEL-$(OS_ARCH_X64_NAME) = 64
142 ARCH_DATA_MODEL-ia64 = 64
143 ARCH_DATA_MODEL-sparc = 32
144 ARCH_DATA_MODEL-sparcv9 = 64
145
146 # If ARCH_DATA_MODEL is not defined, try and pick a reasonable default
147 ifndef ARCH_DATA_MODEL
148 ARCH_DATA_MODEL:=$(ARCH_DATA_MODEL-$(OS_ARCH))
149 endif
150 ifndef ARCH_DATA_MODEL
151 ARCH_DATA_MODEL=32
152 endif
153
154 # Platform directory name
155 PLATFORM_OS = $(OS_NAME)-$(OS_ARCH)
156
157 # Check ARCH_DATA_MODEL, adjust OS_ARCH accordingly on solaris
158 ARCH_DATA_MODEL_ERROR= \
159 ARCH_DATA_MODEL=$(ARCH_DATA_MODEL) cannot be used with $(PLATFORM_OS)
160 ifeq ($(ARCH_DATA_MODEL),64)
161 ifeq ($(PLATFORM_OS),solaris-i586)
162 OS_ARCH=$(OS_ARCH_X64_NAME)
163 endif
164 ifeq ($(PLATFORM_OS),solaris-sparc)
165 OS_ARCH=sparcv9
166 endif
167 ifeq ($(OS_ARCH),i586)
168 x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
169 endif
170 ifeq ($(OS_ARCH),sparc)
171 x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
172 endif
173 else
174 ifeq ($(ARCH_DATA_MODEL),32)
175 ifeq ($(OS_ARCH),$(OS_ARCH_X64_NAME))
176 x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
177 endif
178 ifeq ($(OS_ARCH),ia64)
179 x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
180 endif
181 ifeq ($(OS_ARCH),sparcv9)
182 x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
183 endif
184 else
185 x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
186 endif
187 endif
188
189 # Alternate OS_ARCH name (defaults to OS_ARCH)
190 OS_ARCH2:=$(OS_ARCH2-$(OS_ARCH))
191 ifeq ($(OS_ARCH2),)
192 OS_ARCH2:=$(OS_ARCH)
193 endif
194
195 # Root of this test area (important to use full paths in some places)
196 TEST_ROOT := $(shell $(PWD))
197
198 # Root of all test results
199 ifdef ALT_OUTPUTDIR
200 ABS_OUTPUTDIR = $(ALT_OUTPUTDIR)
201 else
202 ABS_OUTPUTDIR = $(TEST_ROOT)/../build/$(PLATFORM_OS)
203 endif
204 ABS_PLATFORM_BUILD_ROOT = $(ABS_OUTPUTDIR)
205 ABS_TEST_OUTPUT_DIR := $(ABS_PLATFORM_BUILD_ROOT)/testoutput/$(UNIQUE_DIR)
206
207 # Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test)
208 ifndef PRODUCT_HOME
209 # Try to use j2sdk-image or jdk-module-image if it exists
210 ABS_JDK_LEGACY_IMAGE = $(ABS_PLATFORM_BUILD_ROOT)/j2sdk-image
211 ABS_JDK_MODULE_IMAGE = $(ABS_PLATFORM_BUILD_ROOT)/jdk-module-image
212 PRODUCT_HOME := \
213 $(shell \
214 if [ -d $(ABS_JDK_MODULE_IMAGE) ] ; then \
215 $(ECHO) "$(ABS_JDK_MODULE_IMAGE)"; \
216 elif [ -d $(ABS_JDK_LEGACY_IMAGE) ] ; then \
217 $(ECHO) "$(ABS_JDK_LEGACY_IMAGE)"; \
218 else \
219 $(ECHO) "$(ABS_PLATFORM_BUILD_ROOT)"; \
220 fi)
221 PRODUCT_HOME := $(PRODUCT_HOME)
222 endif
223
224 MODULE_BUILD := \
225 $(shell \
226 if [ -d $(PRODUCT_HOME)/lib/modules ] ; then \
227 $(ECHO) "true"; \
228 else \
229 $(ECHO) "false"; \
230 fi)
231
232 # Expect JPRT to set JPRT_PRODUCT_ARGS (e.g. -server etc.)
233 # Should be passed into 'java' only.
234 # Could include: -d64 -server -client OR any java option
235 ifdef JPRT_PRODUCT_ARGS
236 JAVA_ARGS = $(JPRT_PRODUCT_ARGS)
237 endif
238
239 # Expect JPRT to set JPRT_PRODUCT_VM_ARGS (e.g. -Xcomp etc.)
240 # Should be passed into anything running the vm (java, javac, javadoc, ...).
241 ifdef JPRT_PRODUCT_VM_ARGS
242 JAVA_VM_ARGS = $(JPRT_PRODUCT_VM_ARGS)
243 endif
244
245 # Check JAVA_ARGS arguments based on ARCH_DATA_MODEL etc.
246 ifeq ($(OS_NAME),solaris)
247 D64_ERROR_MESSAGE=Mismatch between ARCH_DATA_MODEL=$(ARCH_DATA_MODEL) and use of -d64 in JAVA_ARGS=$(JAVA_ARGS)
248 ifeq ($(ARCH_DATA_MODEL),32)
249 ifneq ($(findstring -d64,$(JAVA_ARGS)),)
250 x:=$(warning "WARNING: $(D64_ERROR_MESSAGE)")
251 endif
252 endif
253 ifeq ($(ARCH_DATA_MODEL),64)
254 ifeq ($(findstring -d64,$(JAVA_ARGS)),)
255 x:=$(warning "WARNING: $(D64_ERROR_MESSAGE)")
256 endif
257 endif
258 endif
259
260 # Macro to run make and set the shared library permissions
261 define SharedLibraryPermissions
262 $(MAKE) SHARED_LIBRARY_DIR=$1 UNIQUE_DIR=$@ shared_library_permissions
263 endef
264
265 # Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results)
266 ARCHIVE_BUNDLE = $(ABS_TEST_OUTPUT_DIR)/ARCHIVE_BUNDLE.zip
267 ifdef JPRT_ARCHIVE_BUNDLE
268 ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE)
269 endif
270
271 # How to create the test bundle (pass or fail, we want to create this)
272 # Follow command with ";$(BUNDLE_UP_AND_EXIT)", so it always gets executed.
273 ZIP_UP_RESULTS = ( $(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)` \
274 && $(CD) $(ABS_TEST_OUTPUT_DIR) \
275 && $(CHMOD) -R a+r . \
276 && $(ZIP) -q -r $(ARCHIVE_BUNDLE) . )
277 SUMMARY_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport/text/summary.txt
278 STATS_TXT_NAME = Stats.txt
279 STATS_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/$(STATS_TXT_NAME)
280 RUNLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/runlist.txt
281 PASSLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/passlist.txt
282 FAILLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/faillist.txt
283 EXITCODE = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/exitcode.txt
284
285 TESTEXIT = \
286 if [ ! -s $(EXITCODE) ] ; then \
287 $(ECHO) "ERROR: EXITCODE file not filled in."; \
288 $(ECHO) "1" > $(EXITCODE); \
289 fi ; \
290 testExitCode=`$(CAT) $(EXITCODE)`; \
291 $(ECHO) "EXIT CODE: $${testExitCode}"; \
292 exit $${testExitCode}
293
294 BUNDLE_UP_AND_EXIT = \
295 ( \
296 jtregExitCode=$$? && \
297 _summary="$(SUMMARY_TXT)"; \
298 $(RM) -f $(STATS_TXT) $(RUNLIST) $(PASSLIST) $(FAILLIST) $(EXITCODE); \
299 $(ECHO) "$${jtregExitCode}" > $(EXITCODE); \
300 if [ -r "$${_summary}" ] ; then \
301 $(ECHO) "Summary: $(UNIQUE_DIR)" > $(STATS_TXT); \
302 $(EXPAND) $${_summary} | $(EGREP) -v ' Not run\.' > $(RUNLIST); \
303 $(EGREP) ' Passed\.' $(RUNLIST) \
304 | $(EGREP) -v ' Error\.' \
305 | $(EGREP) -v ' Failed\.' > $(PASSLIST); \
306 ( $(EGREP) ' Failed\.' $(RUNLIST); \
307 $(EGREP) ' Error\.' $(RUNLIST); \
308 $(EGREP) -v ' Passed\.' $(RUNLIST) ) \
309 | $(SORT) | $(UNIQ) > $(FAILLIST); \
310 if [ $${jtregExitCode} != 0 -o -s $(FAILLIST) ] ; then \
311 $(EXPAND) $(FAILLIST) \
312 | $(CUT) -d' ' -f1 \
313 | $(SED) -e 's@^@FAILED: @' >> $(STATS_TXT); \
314 if [ $${jtregExitCode} = 0 ] ; then \
315 jtregExitCode=1; \
316 fi; \
317 fi; \
318 runc="`$(CAT) $(RUNLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
319 passc="`$(CAT) $(PASSLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
320 failc="`$(CAT) $(FAILLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
321 exclc="`$(CAT) $(EXCLUDELIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
322 $(ECHO) "TEST STATS: name=$(UNIQUE_DIR) run=$${runc} pass=$${passc} fail=$${failc} excluded=$${exclc}" \
323 >> $(STATS_TXT); \
324 else \
325 $(ECHO) "Missing file: $${_summary}" >> $(STATS_TXT); \
326 fi; \
327 if [ -f $(STATS_TXT) ] ; then \
328 $(CAT) $(STATS_TXT); \
329 fi; \
330 $(ZIP_UP_RESULTS) ; \
331 $(TESTEXIT) \
332 )
333
334 ################################################################
335
336 # Default make rule (runs default jdk tests)
337 all: jdk_default
338 @$(ECHO) "Testing completed successfully"
339
340 # Prep for output
341 prep: clean
342 @$(MKDIR) -p $(ABS_TEST_OUTPUT_DIR)
343 @$(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)`
344
345 # Cleanup
346 clean:
347 $(RM) -r $(ABS_TEST_OUTPUT_DIR)
348 $(RM) $(ARCHIVE_BUNDLE)
349
350 ################################################################
351
352 # jtreg tests
353
354 # Expect JT_HOME to be set for jtreg tests. (home for jtreg)
355 ifndef JT_HOME
356 JT_HOME = $(SLASH_JAVA)/re/jtreg/4.1/promoted/latest/binaries/jtreg
357 ifdef JPRT_JTREG_HOME
358 JT_HOME = $(JPRT_JTREG_HOME)
359 endif
360 endif
361
362 # Expect JPRT to set TESTDIRS to the jtreg test dirs
363 ifndef TESTDIRS
364 TESTDIRS = demo
365 endif
366
367 # Agentvm settings (default is false)
368 ifndef USE_JTREG_AGENTVM
369 USE_JTREG_AGENTVM=false
370 endif
371 # With agentvm, you cannot use -javaoptions?
372 ifeq ($(USE_JTREG_AGENTVM),true)
373 JTREG_AGENTVM_OPTION = -agentvm
374 EXTRA_JTREG_OPTIONS += $(JTREG_AGENTVM_OPTION) $(JAVA_ARGS) $(JAVA_ARGS:%=-vmoption:%)
375 JTREG_TEST_OPTIONS = $(JAVA_VM_ARGS:%=-vmoption:%)
376 else
377 JTREG_TEST_OPTIONS = $(JAVA_ARGS:%=-javaoptions:%) $(JAVA_VM_ARGS:%=-vmoption:%)
378 endif
379
380 ifdef CONCURRENCY
381 EXTRA_JTREG_OPTIONS += -concurrency:$(CONCURRENCY)
382 endif
383
384 # exclude modules test when testing legacy image
385 ifeq ($(MODULE_BUILD),false)
386 JTREG_TEST_OPTIONS += -k:\!modules
387 endif
388
389 # Some tests annoy me and fail frequently
390 PROBLEM_LIST=ProblemList.txt
391 PROBLEM_LISTS=$(PROBLEM_LIST) $(wildcard closed/$(PROBLEM_LIST))
392 EXCLUDELIST=$(ABS_TEST_OUTPUT_DIR)/excludelist.txt
393
394 MODULE_IMAGE_PROBLEM_LIST=ModulesProblemList.txt
395 ifeq ($(MODULE_BUILD),true)
396 ifndef NO_EXCLUDES_MODULES
397 PROBLEM_LISTS += $(MODULE_IMAGE_PROBLEM_LIST)
398 PROBLEM_LISTS += $(wildcard closed/$(MODULE_IMAGE_PROBLEM_LIST))
399 endif
400 endif
401
402 # Create exclude list for this platform and arch
403 ifdef NO_EXCLUDES
404 $(EXCLUDELIST): $(PROBLEM_LISTS) $(TEST_DEPENDENCIES)
405 @$(ECHO) "NOTHING_EXCLUDED" > $@
406 else
407 $(EXCLUDELIST): $(PROBLEM_LISTS) $(TEST_DEPENDENCIES)
408 @$(RM) $@ $@.temp1 $@.temp2
409 @(($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-all' ) ;\
410 ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(PLATFORM_OS)' ) ;\
411 ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-$(OS_ARCH2)' ) ;\
412 ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-$(OS_VERSION)') ;\
413 ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-$(OS_ARCH)' ) ;\
414 ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-$(OS_ARCH2)' ) ;\
415 ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-all' ) ;\
416 ($(ECHO) "#") ;\
417 ) | $(SED) -e 's@^[\ ]*@@' \
418 | $(EGREP) -v '^#' > $@.temp1
419 for tdir in $(TESTDIRS) SOLARIS_10_SH_BUG_NO_EMPTY_FORS ; do \
420 ( ( $(CAT) $@.temp1 | $(EGREP) "^$${tdir}" ) ; $(ECHO) "#" ) >> $@.temp2 ; \
421 done
422 @$(ECHO) "# at least one line" >> $@.temp2
423 @( $(EGREP) -v '^#' $@.temp2 ; true ) > $@
424 @$(ECHO) "Excluding list contains `$(EXPAND) $@ | $(WC) -l` items"
425 endif
426
427 # Select list of directories that exist
428 define TestDirs
429 $(foreach i,$1,$(wildcard ${i})) $(foreach i,$1,$(wildcard closed/${i}))
430 endef
431 # Running batches of tests with or without agentvm
432 define RunAgentvmBatch
433 $(ECHO) "Running tests in agentvm mode: $?"
434 $(MAKE) TEST_DEPENDENCIES="$?" TESTDIRS="$?" USE_JTREG_AGENTVM=true UNIQUE_DIR=$@ jtreg_tests
435 endef
436 define RunOthervmBatch
437 $(ECHO) "Running tests in othervm mode: $?"
438 $(MAKE) TEST_DEPENDENCIES="$?" TESTDIRS="$?" USE_JTREG_AGENTVM=false UNIQUE_DIR=$@ jtreg_tests
439 endef
440 define SummaryInfo
441 $(ECHO) "########################################################"
442 $(CAT) $(?:%=$(ABS_TEST_OUTPUT_DIR)/%/$(STATS_TXT_NAME))
443 $(ECHO) "########################################################"
444 endef
445
446 # ------------------------------------------------------------------
447
448 # Batches of tests (somewhat arbitrary assigments to jdk_* targets)
449 JDK_DEFAULT_TARGETS =
450 JDK_ALL_TARGETS =
451
452 # Stable othervm testruns (minus items from PROBLEM_LIST)
453 # Using agentvm has problems, and doesn't help performance as much as others.
454 JDK_ALL_TARGETS += jdk_awt
455 jdk_awt: $(call TestDirs, com/sun/awt java/awt sun/awt \
456 javax/imageio javax/print sun/pisces)
457 $(call RunOthervmBatch)
458
459 # Stable agentvm testruns (minus items from PROBLEM_LIST)
460 JDK_ALL_TARGETS += jdk_beans1
461 JDK_DEFAULT_TARGETS += jdk_beans1
462 jdk_beans1: $(call TestDirs, \
463 java/beans/beancontext java/beans/PropertyChangeSupport \
464 java/beans/Introspector java/beans/Performance \
465 java/beans/VetoableChangeSupport java/beans/Statement)
466 $(call RunAgentvmBatch)
467
468 # Stable othervm testruns (minus items from PROBLEM_LIST)
469 # Using agentvm has serious problems with these tests
470 JDK_ALL_TARGETS += jdk_beans2
471 jdk_beans2: $(call TestDirs, \
472 java/beans/Beans java/beans/EventHandler java/beans/XMLDecoder \
473 java/beans/PropertyEditor)
474 $(call RunOthervmBatch)
475
476 # Stable othervm testruns (minus items from PROBLEM_LIST)
477 # Using agentvm has serious problems with these tests
478 JDK_ALL_TARGETS += jdk_beans3
479 jdk_beans3: $(call TestDirs, java/beans/XMLEncoder)
480 $(call RunOthervmBatch)
481
482 # All beans tests
483 jdk_beans: jdk_beans1 jdk_beans2 jdk_beans3
484 @$(SummaryInfo)
485
486 # Stable agentvm testruns (minus items from PROBLEM_LIST)
487 JDK_ALL_TARGETS += jdk_io
488 JDK_DEFAULT_TARGETS += jdk_io
489 jdk_io: $(call TestDirs, java/io)
490 $(call RunAgentvmBatch)
491
492 # Stable agentvm testruns (minus items from PROBLEM_LIST)
493 JDK_ALL_TARGETS += jdk_lang
494 JDK_DEFAULT_TARGETS += jdk_lang
495 jdk_lang: $(call TestDirs, java/lang)
496 $(call RunAgentvmBatch)
497
498 # Stable othervm testruns (minus items from PROBLEM_LIST)
499 # Using agentvm has serious problems with these tests
500 JDK_ALL_TARGETS += jdk_management1
501 jdk_management1: $(call TestDirs, javax/management)
502 $(call RunOthervmBatch)
503
504 # Stable othervm testruns (minus items from PROBLEM_LIST)
505 # Using agentvm has serious problems with these tests
506 JDK_ALL_TARGETS += jdk_management2
507 jdk_management2: $(call TestDirs, com/sun/jmx com/sun/management sun/management)
508 $(call RunOthervmBatch)
509
510 # All management tests
511 jdk_management: jdk_management1 jdk_management2
512 @$(SummaryInfo)
513
514 # Stable agentvm testruns (minus items from PROBLEM_LIST)
515 JDK_ALL_TARGETS += jdk_math
516 JDK_DEFAULT_TARGETS += jdk_math
517 jdk_math: $(call TestDirs, java/math)
518 $(call RunAgentvmBatch)
519
520 # Stable agentvm testruns (minus items from PROBLEM_LIST)
521 JDK_ALL_TARGETS += jdk_misc
522 JDK_DEFAULT_TARGETS += jdk_misc
523 jdk_misc: $(call TestDirs, \
524 demo/jvmti demo/zipfs javax/naming javax/script \
525 javax/smartcardio com/sun/jndi com/sun/xml sun/misc)
526 $(call RunAgentvmBatch)
527
528 # Stable agentvm testruns (minus items from PROBLEM_LIST)
529 JDK_ALL_TARGETS += jdk_net
530 JDK_DEFAULT_TARGETS += jdk_net
531 jdk_net: $(call TestDirs, com/sun/net java/net sun/net)
532 $(call RunAgentvmBatch)
533
534 # Stable agentvm testruns (minus items from PROBLEM_LIST)
535 JDK_ALL_TARGETS += jdk_nio1
536 JDK_DEFAULT_TARGETS += jdk_nio1
537 jdk_nio1: $(call TestDirs, java/nio/file)
538 $(call RunAgentvmBatch)
539
540 # Stable agentvm testruns (minus items from PROBLEM_LIST)
541 JDK_ALL_TARGETS += jdk_nio2
542 JDK_DEFAULT_TARGETS += jdk_nio2
543 jdk_nio2: $(call TestDirs, java/nio/Buffer java/nio/ByteOrder \
544 java/nio/channels java/nio/MappedByteBuffer)
545 $(call SharedLibraryPermissions,java/nio/channels)
546 $(call RunAgentvmBatch)
547
548 # Stable agentvm testruns (minus items from PROBLEM_LIST)
549 JDK_ALL_TARGETS += jdk_nio3
550 JDK_DEFAULT_TARGETS += jdk_nio3
551 jdk_nio3: $(call TestDirs, sun/nio)
552 $(call RunAgentvmBatch)
553
554 # All nio tests
555 jdk_nio: jdk_nio1 jdk_nio2 jdk_nio3
556 @$(SummaryInfo)
557
558 # Stable agentvm testruns (minus items from PROBLEM_LIST)
559 jdk_sctp: $(call TestDirs, com/sun/nio/sctp)
560 $(call RunAgentvmBatch)
561
562 # Stable othervm testruns (minus items from PROBLEM_LIST)
563 # Using agentvm has serious problems with these tests
564 JDK_ALL_TARGETS += jdk_rmi
565 jdk_rmi: $(call TestDirs, java/rmi javax/rmi sun/rmi)
566 $(call RunOthervmBatch)
567
568 # Stable agentvm testruns (minus items from PROBLEM_LIST)
569 JDK_ALL_TARGETS += jdk_security1
570 JDK_DEFAULT_TARGETS += jdk_security1
571 jdk_security1: $(call TestDirs, java/security)
572 $(call RunAgentvmBatch)
573
574 # Stable agentvm testruns (minus items from PROBLEM_LIST)
575 JDK_ALL_TARGETS += jdk_security2
576 jdk_security2: $(call TestDirs, javax/crypto javax/xml/crypto com/sun/crypto)
577 $(call RunAgentvmBatch)
578
579 # Stable agentvm testruns (minus items from PROBLEM_LIST)
580 JDK_ALL_TARGETS += jdk_security3
581 jdk_security3: $(call TestDirs, com/sun/security lib/security javax/security \
582 sun/security com/sun/org/apache/xml/internal/security \
583 com/oracle/secrity/ucrypto)
584 $(call SharedLibraryPermissions,sun/security)
585 $(call RunAgentvmBatch)
586
587 # All security tests
588 jdk_security: jdk_security1 jdk_security2 jdk_security3
589 @$(SummaryInfo)
590
591 # Stable agentvm testruns (minus items from PROBLEM_LIST)
592 JDK_ALL_TARGETS += jdk_sound
593 jdk_sound: $(call TestDirs, javax/sound)
594 $(call RunAgentvmBatch)
595
596 # Stable othervm testruns (minus items from PROBLEM_LIST)
597 # Using agentvm has problems, and doesn't help performance as much as others.
598 JDK_ALL_TARGETS += jdk_swing
599 jdk_swing: $(call TestDirs, javax/swing sun/java2d \
600 demo/jfc com/sun/java/swing)
601 $(call RunOthervmBatch)
602
603 # Stable agentvm testruns (minus items from PROBLEM_LIST)
604 JDK_ALL_TARGETS += jdk_text
605 JDK_DEFAULT_TARGETS += jdk_text
606 jdk_text: $(call TestDirs, java/text sun/text)
607 $(call RunAgentvmBatch)
608
609 # Stable agentvm testruns (minus items from PROBLEM_LIST)
610 JDK_ALL_TARGETS += jdk_tools1
611 jdk_tools1: $(call TestDirs, com/sun/jdi)
612 $(call RunAgentvmBatch)
613
614 # Stable othervm testruns (minus items from PROBLEM_LIST)
615 # Using agentvm has serious problems with these tests
616 JDK_ALL_TARGETS += jdk_tools2
617 jdk_tools2: $(call TestDirs, \
618 com/sun/tools sun/jvmstat sun/tools tools vm \
619 com/sun/servicetag com/sun/tracing)
620 $(call SharedLibraryPermissions,tools/launcher)
621 $(call RunAgentvmBatch)
622
623 # All tools tests
624 jdk_tools: jdk_tools1 jdk_tools2
625 @$(SummaryInfo)
626
627 # Stable agentvm testruns (minus items from PROBLEM_LIST)
628 JDK_ALL_TARGETS += jdk_util
629 JDK_DEFAULT_TARGETS += jdk_util
630 jdk_util: $(call TestDirs, java/util sun/util)
631 $(call RunAgentvmBatch)
632
633 # jdk_jigsaw is included in jprt.properties but we only want to
634 # run them when testing the jdk-module-image.
635 # java/lang/module and java/lang/reflect/Module tests are tagged
636 # with the "modules" keyword so that they are excluded when testing
637 # legacy image.
638 ifeq ($(MODULE_BUILD),true)
639 JIGSAW_TESTS = org/openjdk/jigsaw
640 endif
641
642 JDK_ALL_TARGETS += jdk_jigsaw
643 JDK_DEFAULT_TARGETS += jdk_jigsaw
644 jdk_jigsaw: java/lang/module $(JIGSAW_TESTS)
645 $(call RunOthervmBatch)
646
647 # ------------------------------------------------------------------
648
649 # Run default tests
650 jdk_default: $(JDK_DEFAULT_TARGETS)
651 @$(SummaryInfo)
652
653 # Run all tests
654 jdk_all: $(JDK_ALL_TARGETS)
655 ifeq ($(MODULE_BUILD),false)
656 FILTER_OUT_LIST+=jdk_jigsaw
657 endif
658
659 @$(SummaryInfo)
660
661 # These are all phony targets
662 PHONY_LIST += $(JDK_ALL_TARGETS)
663
664 # ------------------------------------------------------------------
665
666 # Default JTREG to run (win32 script works for everybody)
667 JTREG = $(JT_HOME)/win32/bin/jtreg
668 # Add any extra options (agentvm etc.)
669 JTREG_BASIC_OPTIONS += $(EXTRA_JTREG_OPTIONS)
670 # Only run automatic tests
671 JTREG_BASIC_OPTIONS += -a
672 # Always turn on assertions
673 JTREG_ASSERT_OPTION = -ea -esa
674 JTREG_BASIC_OPTIONS += $(JTREG_ASSERT_OPTION)
675 # Report details on all failed or error tests, times too
676 JTREG_BASIC_OPTIONS += -v:fail,error,time
677 # Retain all files for failing tests
678 JTREG_BASIC_OPTIONS += -retain:fail,error
679 # Ignore tests are not run and completely silent about it
680 JTREG_IGNORE_OPTION = -ignore:quiet
681 JTREG_BASIC_OPTIONS += $(JTREG_IGNORE_OPTION)
682 # Multiple by 4 the timeout numbers
683 JTREG_TIMEOUT_OPTION = -timeoutFactor:4
684 JTREG_BASIC_OPTIONS += $(JTREG_TIMEOUT_OPTION)
685 # Boost the max memory for jtreg to avoid gc thrashing
686 JTREG_MEMORY_OPTION = -J-Xmx512m
687 JTREG_BASIC_OPTIONS += $(JTREG_MEMORY_OPTION)
688
689 # Make sure jtreg exists
690 $(JTREG): $(JT_HOME)
691
692 # Run jtreg
693 jtreg_tests: prep $(PRODUCT_HOME) $(JTREG) $(EXCLUDELIST)
694 @$(EXPAND) $(EXCLUDELIST) \
695 | $(CUT) -d' ' -f1 \
696 | $(SED) -e 's@^@Excluding: @'
697 ( \
698 ( JT_HOME=$(shell $(GETMIXEDPATH) "$(JT_HOME)"); \
699 export JT_HOME; \
700 $(shell $(GETMIXEDPATH) "$(JTREG)") \
701 $(JTREG_BASIC_OPTIONS) \
702 -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport \
703 -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTwork \
704 -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \
705 -exclude:$(shell $(GETMIXEDPATH) "$(EXCLUDELIST)") \
706 $(JTREG_TEST_OPTIONS) \
707 $(TESTDIRS) \
708 ) ; $(BUNDLE_UP_AND_EXIT) \
709 ) 2>&1 | $(TEE) $(ABS_TEST_OUTPUT_DIR)/output.txt ; $(TESTEXIT)
710
711 # Rule that may change execute permissions on shared library files.
712 # Files in repositories should never have execute permissions, but there
713 # are some tests that have pre-built shared libraries, and these windows
714 # dll files must have execute permission. Adding execute permission
715 # may happen automatically on windows when using certain versions of mercurial
716 # but it cannot be guaranteed. And blindly adding execute permission might
717 # be seen as a mercurial 'change', so we avoid adding execute permission to
718 # repository files. But testing from a plain source tree needs the chmod a+rx.
719 # Used on select directories and applying the chmod to all shared libraries
720 # not just dll files. On windows, this may not work with MKS if the files
721 # were installed with CYGWIN unzip or untar (MKS chmod may not do anything).
722 # And with CYGWIN and sshd service, you may need CYGWIN=ntsec for this to work.
723 #
724 shared_library_permissions: $(SHARED_LIBRARY_DIR)
725 if [ ! -d $(TEST_ROOT)/../.hg ] ; then \
726 $(FIND) $< \( -name \*.dll -o -name \*.DLL -o -name \*.so \) \
727 -exec $(CHMOD) a+rx {} \; ; \
728 fi
729
730 PHONY_LIST += jtreg_tests shared_library_permissions
731
732 ################################################################
733
734 # packtest
735
736 # Expect JPRT to set JPRT_PACKTEST_HOME.
737 PACKTEST_HOME = /net/jprt-web.sfbay.sun.com/jprt/allproducts/packtest
738 ifdef JPRT_PACKTEST_HOME
739 PACKTEST_HOME = $(JPRT_PACKTEST_HOME)
740 endif
741
742 packtest: prep $(PACKTEST_HOME)/ptest $(PRODUCT_HOME)
743 ( $(CD) $(PACKTEST_HOME) && \
744 $(PACKTEST_HOME)/ptest \
745 -t "$(PRODUCT_HOME)" \
746 $(PACKTEST_STRESS_OPTION) \
747 $(EXTRA_PACKTEST_OPTIONS) \
748 -W $(ABS_TEST_OUTPUT_DIR) \
749 $(JAVA_ARGS:%=-J %) \
750 $(JAVA_VM_ARGS:%=-J %) \
751 ) ; $(BUNDLE_UP_AND_EXIT)
752
753 packtest_stress: PACKTEST_STRESS_OPTION=-s
754 packtest_stress: packtest
755
756 PHONY_LIST += packtest packtest_stress
757
758 ################################################################
759
760 # perftest to collect statistics
761
762 # Expect JPRT to set JPRT_PACKTEST_HOME.
763 PERFTEST_HOME = $(TEST_ROOT)/perf
764 ifdef JPRT_PERFTEST_HOME
765 PERFTEST_HOME = $(JPRT_PERFTEST_HOME)
766 endif
767
768 perftest: ( $(PERFTEST_HOME)/perftest \
769 -t $(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \
770 -w $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)") \
771 -h $(PERFTEST_HOME) \
772 ) ; $(BUNDLE_UP_AND_EXIT)
773
774
775 PHONY_LIST += perftest
776
777 ################################################################
778
779 # vmsqe tests
780
781 # Expect JPRT to set JPRT_VMSQE_HOME.
782 VMSQE_HOME = $(SLASH_JAVA)/sqe/comp/vm/testbase/sqe/vm/current/build/latest/vm
783 ifdef JPRT_VMSQE_HOME
784 VMSQE_HOME = $(JPRT_VMSQE_HOME)
785 endif
786
787 # Expect JPRT to set JPRT_RUNVMSQE_HOME.
788 RUNVMSQE_HOME = /net/jprt-web.sfbay.sun.com/jprt/allproducts/runvmsqe
789 ifdef JPRT_RUNVMSQE_HOME
790 RUNVMSQE_HOME = $(JPRT_RUNVMSQE_HOME)
791 endif
792
793 # Expect JPRT to set JPRT_TONGA3_HOME.
794 TONGA3_HOME = $(SLASH_JAVA)/sqe/tools/gtee/harness/tonga
795 ifdef JPRT_TONGA3_HOME
796 TONGA3_HOME = $(JPRT_TONGA3_HOME)
797 endif
798
799 RUNVMSQE_BIN = $(RUNVMSQE_HOME)/bin/runvmsqe
800
801 vmsqe_tests: prep $(VMSQE_HOME)/vm $(TONGA3_HOME) $(RUNVMSQE_BIN) $(PRODUCT_HOME)
802 $(RM) -r $(ABS_TEST_OUTPUT_DIR)/vmsqe
803 ( $(CD) $(ABS_TEST_OUTPUT_DIR) && \
804 $(RUNVMSQE_BIN) \
805 -jdk "$(PRODUCT_HOME)" \
806 -o "$(ABS_TEST_OUTPUT_DIR)/vmsqe" \
807 -testbase "$(VMSQE_HOME)/vm" \
808 -tonga "$(TONGA3_HOME)" \
809 -tongajdk "$(ALT_BOOTDIR)" \
810 $(JAVA_ARGS) \
811 $(JAVA_VM_ARGS) \
812 $(RUNVMSQE_TEST_OPTION) \
813 $(EXTRA_RUNVMSQE_OPTIONS) \
814 ) ; $(BUNDLE_UP_AND_EXIT)
815
816 vmsqe_jdwp: RUNVMSQE_TEST_OPTION=-jdwp
817 vmsqe_jdwp: vmsqe_tests
818
819 vmsqe_jdi: RUNVMSQE_TEST_OPTION=-jdi
820 vmsqe_jdi: vmsqe_tests
821
822 vmsqe_jdb: RUNVMSQE_TEST_OPTION=-jdb
823 vmsqe_jdb: vmsqe_tests
824
825 vmsqe_quick-jdi: RUNVMSQE_TEST_OPTION=-quick-jdi
826 vmsqe_quick-jdi: vmsqe_tests
827
828 vmsqe_sajdi: RUNVMSQE_TEST_OPTION=-sajdi
829 vmsqe_sajdi: vmsqe_tests
830
831 vmsqe_jvmti: RUNVMSQE_TEST_OPTION=-jvmti
832 vmsqe_jvmti: vmsqe_tests
833
834 vmsqe_hprof: RUNVMSQE_TEST_OPTION=-hprof
835 vmsqe_hprof: vmsqe_tests
836
837 vmsqe_monitoring: RUNVMSQE_TEST_OPTION=-monitoring
838 vmsqe_monitoring: vmsqe_tests
839
840 PHONY_LIST += vmsqe_jdwp vmsqe_jdi vmsqe_jdb vmsqe_quick-jdi vmsqe_sajdi \
841 vmsqe_jvmti vmsqe_hprof vmsqe_monitoring vmsqe_tests
842
843 ################################################################
844
845 # jck tests
846
847 # Default is to use jck 7 from /java/re
848 JCK7_DEFAULT_HOME = $(SLASH_JAVA)/re/jck/7/promoted/latest/binaries
849
850 # Expect JPRT to set JPRT_JCK7COMPILER_HOME.
851 JCK7COMPILER_HOME = $(JCK7_DEFAULT_HOME)/JCK-compiler-7
852 ifdef JPRT_JCK7COMPILER_HOME
853 JCK7COMPILER_HOME = $(JPRT_JCK7COMPILER_HOME)/JCK-compiler-7
854 endif
855
856 # Expect JPRT to set JPRT_JCK7RUNTIME_HOME.
857 JCK7RUNTIME_HOME = $(JCK7_DEFAULT_HOME)/JCK-runtime-7
858 ifdef JPRT_JCK7RUNTIME_HOME
859 JCK7RUNTIME_HOME = $(JPRT_JCK7RUNTIME_HOME)/JCK-runtime-7
860 endif
861
862 # Expect JPRT to set JPRT_JCK7DEVTOOLS_HOME.
863 JCK7DEVTOOLS_HOME = $(JCK7_DEFAULT_HOME)/JCK-devtools-7
864 ifdef JPRT_JCK7DEVTOOLS_HOME
865 JCK7DEVTOOLS_HOME = $(JPRT_JCK7DEVTOOLS_HOME)/JCK-devtools-7
866 endif
867
868 # The jtjck.jar utility to use to run the tests
869 JTJCK_JAR = $(JCK_HOME)/lib/jtjck.jar
870 JTJCK_JAVA_ARGS = -XX:MaxPermSize=256m -Xmx512m
871 JTJCK_OPTIONS = -headless -v
872
873 # Default tests to run
874 ifndef JCK_COMPILER_TESTS
875 JCK_COMPILER_TESTS =
876 endif
877 ifndef JCK_RUNTIME_TESTS
878 JCK_RUNTIME_TESTS =
879 endif
880 ifndef JCK_DEVTOOLS_TESTS
881 JCK_DEVTOOLS_TESTS =
882 endif
883
884 # Generic rule used to run jck tests
885 _generic_jck_tests: prep $(PRODUCT_HOME) $(EXCLUDELIST)
886 @$(EXPAND) $(EXCLUDELIST) \
887 | $(CUT) -d' ' -f1 \
888 | $(SED) -e 's@^@Excluding: @'
889 ( $(CD) $(ABS_TEST_OUTPUT_DIR) && \
890 $(PRODUCT_HOME)/bin/java $(JTJCK_JAVA_ARGS) \
891 -jar "$(JTJCK_JAR)" \
892 $(JTJCK_OPTIONS) \
893 -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport \
894 -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTwork \
895 -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \
896 $(TESTDIRS) \
897 ) ; $(BUNDLE_UP_AND_EXIT)
898
899 # JCK7 compiler tests
900 jck7compiler:
901 $(MAKE) UNIQUE_DIR=$@ \
902 JCK_HOME=$(JCK7COMPILER_HOME) \
903 TESTDIRS="$(JCK_COMPILER_TESTS)" \
904 _generic_jck_tests
905
906 # JCK7 runtime tests
907 jck7runtime:
908 $(MAKE) UNIQUE_DIR=$@ \
909 JCK_HOME=$(JCK7RUNTIME_HOME) \
910 TESTDIRS="$(JCK_RUNTIME_TESTS)" \
911 _generic_jck_tests
912
913 # JCK7 devtools tests
914 jck7devtools:
915 $(MAKE) UNIQUE_DIR=$@ \
916 JCK_HOME=$(JCK7DEVTOOLS_HOME) \
917 TESTDIRS="$(JCK_DEVTOOLS_TESTS)" \
918 _generic_jck_tests
919
920 # Run all 3 sets of JCK7 tests
921 jck_all: jck7runtime jck7devtools jck7compiler
922
923 PHONY_LIST += jck_all _generic_jck_tests \
924 jck7compiler jck7runtime jck7devtools
925
926 ################################################################
927
928 # Phony targets (e.g. these are not filenames)
929 .PHONY: all clean prep $(PHONY_LIST)
930
931 ################################################################
932
--- EOF ---