Makefile 30.4 KB
Newer Older
D
duke 已提交
1
#
2
# Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
3 4 5 6
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# 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 12 13 14 15 16 17 18 19 20
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
21 22 23
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
24 25 26 27
#

#
# Makefile to run various jdk tests
D
duke 已提交
28 29
#

30 31 32 33 34 35 36 37 38 39
# Empty these to get rid of some default rules
.SUFFIXES:
.SUFFIXES: .java
CO=
GET=

# Utilities used
AWK       = awk
CAT       = cat
CD        = cd
40
CHMOD     = chmod
41 42
CP        = cp
CUT       = cut
43
DIRNAME   = dirname
44 45 46
ECHO      = echo
EGREP     = egrep
EXPAND    = expand
47
FIND      = find
48 49 50 51 52 53 54 55 56 57 58 59
MKDIR     = mkdir
PWD       = pwd
SED       = sed
SORT      = sort
TEE       = tee
UNAME     = uname
UNIQ      = uniq
WC        = wc
ZIP       = zip

# Get OS name from uname
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 65 66 67

# Location of developer shared files
SLASH_JAVA = /java

# Platform specific settings
68 69 70 71
ifeq ($(UNAME_S), SunOS)
  OS_NAME     = solaris
  OS_ARCH    := $(shell $(UNAME) -p)
  OS_VERSION := $(shell $(UNAME) -r)
D
duke 已提交
72
endif
73 74 75
ifeq ($(UNAME_S), Linux)
  OS_NAME     = linux
  OS_ARCH    := $(shell $(UNAME) -m)
76 77 78 79
  # Check for unknown arch, try uname -p if uname -m says unknown
  ifeq ($(OS_ARCH),unknown)
    OS_ARCH    := $(shell $(UNAME) -p)
  endif
80
  OS_VERSION := $(shell $(UNAME) -r)
D
duke 已提交
81
endif
82 83 84 85 86 87 88 89 90
ifeq ($(UNAME_S), Darwin)
  OS_NAME     = macosx
  OS_ARCH    := $(shell $(UNAME) -m)
  # Check for unknown arch, try uname -p if uname -m says unknown
  ifeq ($(OS_ARCH),unknown)
    OS_ARCH    := $(shell $(UNAME) -p)
  endif
  OS_VERSION := $(shell $(UNAME) -r)
endif
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
ifeq ($(OS_NAME),)
  OS_NAME = windows
  # GNU Make or MKS overrides $(PROCESSOR_ARCHITECTURE) to always
  # return "x86". Use the first word of $(PROCESSOR_IDENTIFIER) instead.
  ifeq ($(PROCESSOR_IDENTIFIER),)
    PROC_ARCH:=$(shell $(UNAME) -m)
  else
    PROC_ARCH:=$(word 1, $(PROCESSOR_IDENTIFIER))
  endif
  OS_ARCH:=$(PROC_ARCH)
  SLASH_JAVA = J:
  EXESUFFIX = .exe
  # These need to be different depending on MKS or CYGWIN
  ifeq ($(findstring cygdrive,$(shell ($(CD) C:/ && $(PWD)))), )
    GETMIXEDPATH  = dosname -s
    OS_VERSION   := $(shell $(UNAME) -r)
  else
    GETMIXEDPATH  = cygpath -m -s
    OS_VERSION   := $(shell $(UNAME) -s | $(CUT) -d'-' -f2)
D
duke 已提交
110
  endif
111 112 113 114 115
endif

# Only want major and minor numbers from os version
OS_VERSION := $(shell $(ECHO) "$(OS_VERSION)" | $(CUT) -d'.' -f1,2)

116 117 118 119 120 121 122 123 124 125
# Name to use for x86_64 arch (historically amd64, but should change someday)
OS_ARCH_X64_NAME:=amd64
#OS_ARCH_X64_NAME:=x64

# Alternate arch names (in case this arch is known by a second name)
#   PROBLEM_LISTS may use either name.
OS_ARCH2-amd64:=x64
#OS_ARCH2-x64:=amd64

# Try and use the arch names consistently
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
OS_ARCH:=$(patsubst x64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
OS_ARCH:=$(patsubst X64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
OS_ARCH:=$(patsubst AMD64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
OS_ARCH:=$(patsubst amd64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
OS_ARCH:=$(patsubst x86_64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
OS_ARCH:=$(patsubst 8664,$(OS_ARCH_X64_NAME),$(OS_ARCH))
OS_ARCH:=$(patsubst EM64T,$(OS_ARCH_X64_NAME),$(OS_ARCH))
OS_ARCH:=$(patsubst em64t,$(OS_ARCH_X64_NAME),$(OS_ARCH))
OS_ARCH:=$(patsubst intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
OS_ARCH:=$(patsubst Intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
OS_ARCH:=$(patsubst INTEL64,$(OS_ARCH_X64_NAME),$(OS_ARCH))
OS_ARCH:=$(patsubst IA64,ia64,$(OS_ARCH))
OS_ARCH:=$(patsubst X86,i586,$(OS_ARCH))
OS_ARCH:=$(patsubst x86,i586,$(OS_ARCH))
OS_ARCH:=$(patsubst i386,i586,$(OS_ARCH))
OS_ARCH:=$(patsubst i486,i586,$(OS_ARCH))
OS_ARCH:=$(patsubst i686,i586,$(OS_ARCH))
OS_ARCH:=$(patsubst 386,i586,$(OS_ARCH))
OS_ARCH:=$(patsubst 486,i586,$(OS_ARCH))
OS_ARCH:=$(patsubst 586,i586,$(OS_ARCH))
OS_ARCH:=$(patsubst 686,i586,$(OS_ARCH))
147

148 149 150 151 152 153 154 155 156 157 158
# Default  ARCH_DATA_MODEL settings
ARCH_DATA_MODEL-i586 = 32
ARCH_DATA_MODEL-$(OS_ARCH_X64_NAME) = 64
ARCH_DATA_MODEL-ia64 = 64
ARCH_DATA_MODEL-sparc = 32
ARCH_DATA_MODEL-sparcv9 = 64

# If ARCH_DATA_MODEL is not defined, try and pick a reasonable default
ifndef ARCH_DATA_MODEL
  ARCH_DATA_MODEL:=$(ARCH_DATA_MODEL-$(OS_ARCH))
endif
159 160 161
ifndef ARCH_DATA_MODEL
  ARCH_DATA_MODEL=32
endif
162 163 164 165 166

# Platform directory name
PLATFORM_OS = $(OS_NAME)-$(OS_ARCH)

# Check ARCH_DATA_MODEL, adjust OS_ARCH accordingly on solaris
167
ARCH_DATA_MODEL_ERROR= \
168
  ARCH_DATA_MODEL=$(ARCH_DATA_MODEL) cannot be used with $(PLATFORM_OS)
169
ifeq ($(ARCH_DATA_MODEL),64)
170 171
  ifeq ($(PLATFORM_OS),solaris-i586)
    OS_ARCH=$(OS_ARCH_X64_NAME)
172
  endif
173
  ifeq ($(PLATFORM_OS),solaris-sparc)
174 175 176 177 178 179 180 181 182 183
    OS_ARCH=sparcv9
  endif
  ifeq ($(OS_ARCH),i586)
    x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
  endif
  ifeq ($(OS_ARCH),sparc)
    x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
  endif
else
  ifeq ($(ARCH_DATA_MODEL),32)
184
    ifeq ($(OS_ARCH),$(OS_ARCH_X64_NAME))
185 186 187 188 189 190 191 192
      x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
    endif
    ifeq ($(OS_ARCH),ia64)
      x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
    endif
    ifeq ($(OS_ARCH),sparcv9)
      x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
    endif
193
  else
194
    x:=$(warning "WARNING: $(ARCH_DATA_MODEL_ERROR)")
195
  endif
D
duke 已提交
196 197
endif

198 199 200 201 202 203
# Alternate OS_ARCH name (defaults to OS_ARCH)
OS_ARCH2:=$(OS_ARCH2-$(OS_ARCH))
ifeq ($(OS_ARCH2),)
  OS_ARCH2:=$(OS_ARCH)
endif

D
duke 已提交
204
# Root of this test area (important to use full paths in some places)
205
TEST_ROOT := $(shell $(PWD))
D
duke 已提交
206

207 208 209
# Root of all test results
ifdef ALT_OUTPUTDIR
  ABS_OUTPUTDIR = $(ALT_OUTPUTDIR)
D
duke 已提交
210
else
211
  ABS_OUTPUTDIR = $(TEST_ROOT)/../build/$(PLATFORM_OS)
D
duke 已提交
212
endif
213 214
ABS_PLATFORM_BUILD_ROOT = $(ABS_OUTPUTDIR)
ABS_TEST_OUTPUT_DIR := $(ABS_PLATFORM_BUILD_ROOT)/testoutput/$(UNIQUE_DIR)
D
duke 已提交
215

216 217 218
# Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test)
ifndef PRODUCT_HOME
  # Try to use j2sdk-image if it exists
219 220 221 222 223 224 225
  ABS_JDK_IMAGE = $(ABS_PLATFORM_BUILD_ROOT)/j2sdk-image
  PRODUCT_HOME :=                       		\
    $(shell                             		\
      if [ -d $(ABS_JDK_IMAGE) ] ; then 		\
         $(ECHO) "$(ABS_JDK_IMAGE)";    		\
       else                             		\
         $(ECHO) "$(ABS_PLATFORM_BUILD_ROOT)";		\
226 227 228
       fi)
  PRODUCT_HOME := $(PRODUCT_HOME)
endif
D
duke 已提交
229

230 231
# Expect JPRT to set JPRT_PRODUCT_ARGS (e.g. -server etc.)
#   Should be passed into 'java' only.
232
#   Could include: -d64 -server -client OR any java option
233 234 235
ifdef JPRT_PRODUCT_ARGS
  JAVA_ARGS = $(JPRT_PRODUCT_ARGS)
endif
D
duke 已提交
236

237 238 239 240 241
# Expect JPRT to set JPRT_PRODUCT_VM_ARGS (e.g. -Xcomp etc.)
#   Should be passed into anything running the vm (java, javac, javadoc, ...).
ifdef JPRT_PRODUCT_VM_ARGS
  JAVA_VM_ARGS = $(JPRT_PRODUCT_VM_ARGS)
endif
D
duke 已提交
242

243 244 245 246 247 248 249 250 251 252 253 254 255 256 257
# Check JAVA_ARGS arguments based on ARCH_DATA_MODEL etc.
ifeq ($(OS_NAME),solaris)
  D64_ERROR_MESSAGE=Mismatch between ARCH_DATA_MODEL=$(ARCH_DATA_MODEL) and use of -d64 in JAVA_ARGS=$(JAVA_ARGS)
  ifeq ($(ARCH_DATA_MODEL),32)
    ifneq ($(findstring -d64,$(JAVA_ARGS)),)
      x:=$(warning "WARNING: $(D64_ERROR_MESSAGE)")
    endif
  endif
  ifeq ($(ARCH_DATA_MODEL),64)
    ifeq ($(findstring -d64,$(JAVA_ARGS)),)
      x:=$(warning "WARNING: $(D64_ERROR_MESSAGE)")
    endif
  endif
endif

258 259 260
# Macro to run make and set the shared library permissions
define SharedLibraryPermissions
$(MAKE) SHARED_LIBRARY_DIR=$1 UNIQUE_DIR=$@ shared_library_permissions
261 262
endef

263 264 265 266 267 268 269 270
# Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results)
ARCHIVE_BUNDLE = $(ABS_TEST_OUTPUT_DIR)/ARCHIVE_BUNDLE.zip
ifdef JPRT_ARCHIVE_BUNDLE
  ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE)
endif

# How to create the test bundle (pass or fail, we want to create this)
#   Follow command with ";$(BUNDLE_UP_AND_EXIT)", so it always gets executed.
271
ZIP_UP_RESULTS = ( $(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)`     \
272
	           && $(CD) $(ABS_TEST_OUTPUT_DIR)             \
273
	           && $(CHMOD) -R a+r . \
274
	           && $(ZIP) -q -r $(ARCHIVE_BUNDLE) . )
275 276 277 278 279 280
SUMMARY_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport/text/summary.txt
STATS_TXT_NAME = Stats.txt
STATS_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/$(STATS_TXT_NAME)
RUNLIST   = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/runlist.txt
PASSLIST  = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/passlist.txt
FAILLIST  = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/faillist.txt
281 282 283 284 285 286 287 288 289
EXITCODE  = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/exitcode.txt

TESTEXIT = \
  if [ ! -s $(EXITCODE) ] ; then \
    $(ECHO) "ERROR: EXITCODE file not filled in."; \
    $(ECHO) "1" > $(EXITCODE); \
  fi ; \
  testExitCode=`$(CAT) $(EXITCODE)`; \
  $(ECHO) "EXIT CODE: $${testExitCode}"; \
290
  exit $${testExitCode}
291

292 293
BUNDLE_UP_AND_EXIT = \
( \
294
  jtregExitCode=$$? && \
295
  _summary="$(SUMMARY_TXT)"; \
296 297
  $(RM) -f $(STATS_TXT) $(RUNLIST) $(PASSLIST) $(FAILLIST) $(EXITCODE); \
  $(ECHO) "$${jtregExitCode}" > $(EXITCODE); \
298
  if [ -r "$${_summary}" ] ; then \
299
    $(ECHO) "Summary: $(UNIQUE_DIR)" > $(STATS_TXT); \
300 301 302 303 304 305 306 307
    $(EXPAND) $${_summary} | $(EGREP) -v ' Not run\.' > $(RUNLIST); \
    $(EGREP) ' Passed\.' $(RUNLIST) \
      | $(EGREP) -v ' Error\.' \
      | $(EGREP) -v ' Failed\.' > $(PASSLIST); \
    ( $(EGREP) ' Failed\.' $(RUNLIST); \
      $(EGREP) ' Error\.' $(RUNLIST); \
      $(EGREP) -v ' Passed\.' $(RUNLIST) ) \
      | $(SORT) | $(UNIQ) > $(FAILLIST); \
308
    if [ $${jtregExitCode} != 0 -o -s $(FAILLIST) ] ; then \
309 310 311
      $(EXPAND) $(FAILLIST) \
        | $(CUT) -d' ' -f1 \
        | $(SED) -e 's@^@FAILED: @' >> $(STATS_TXT); \
312 313 314
      if [ $${jtregExitCode} = 0 ] ; then \
        jtregExitCode=1; \
      fi; \
315 316 317 318 319
    fi; \
    runc="`$(CAT) $(RUNLIST)      | $(WC) -l | $(AWK) '{print $$1;}'`"; \
    passc="`$(CAT) $(PASSLIST)    | $(WC) -l | $(AWK) '{print $$1;}'`"; \
    failc="`$(CAT) $(FAILLIST)    | $(WC) -l | $(AWK) '{print $$1;}'`"; \
    exclc="`$(CAT) $(EXCLUDELIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
320
    $(ECHO) "TEST STATS: name=$(UNIQUE_DIR)  run=$${runc}  pass=$${passc}  fail=$${failc}  excluded=$${exclc}" \
321 322 323 324
      >> $(STATS_TXT); \
  else \
    $(ECHO) "Missing file: $${_summary}" >> $(STATS_TXT); \
  fi; \
325 326 327
  if [ -f $(STATS_TXT) ] ; then \
    $(CAT) $(STATS_TXT); \
  fi; \
328
  $(ZIP_UP_RESULTS) ; \
329
  $(TESTEXIT) \
330
)
331 332 333

################################################################

334 335
# Default make rule (runs default jdk tests)
all: jdk_default
336 337 338 339 340
	@$(ECHO) "Testing completed successfully"

# Prep for output
prep: clean
	@$(MKDIR) -p $(ABS_TEST_OUTPUT_DIR)
341
	@$(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)`
D
duke 已提交
342 343 344

# Cleanup
clean:
345 346
	@$(RM) -r $(ABS_TEST_OUTPUT_DIR)
	@$(RM) $(ARCHIVE_BUNDLE)
347 348 349 350 351 352

################################################################

# jtreg tests

# Expect JT_HOME to be set for jtreg tests. (home for jtreg)
353
ifndef JT_HOME
354
  JT_HOME = $(SLASH_JAVA)/re/jtreg/4.1/promoted/latest/binaries/jtreg
355 356 357
  ifdef JPRT_JTREG_HOME
    JT_HOME = $(JPRT_JTREG_HOME)
  endif
358 359 360 361
endif

# Expect JPRT to set TESTDIRS to the jtreg test dirs
ifndef TESTDIRS
362
  TESTDIRS = demo
363 364
endif

365 366 367
# Agentvm settings (default is false)
ifndef USE_JTREG_AGENTVM
  USE_JTREG_AGENTVM=false
368
endif
369 370 371 372
# With agentvm, you cannot use -javaoptions?
ifeq ($(USE_JTREG_AGENTVM),true)
  JTREG_AGENTVM_OPTION = -agentvm
  EXTRA_JTREG_OPTIONS += $(JTREG_AGENTVM_OPTION) $(JAVA_ARGS) $(JAVA_ARGS:%=-vmoption:%)
373 374 375 376 377
  JTREG_TEST_OPTIONS = $(JAVA_VM_ARGS:%=-vmoption:%)
else
  JTREG_TEST_OPTIONS = $(JAVA_ARGS:%=-javaoptions:%) $(JAVA_VM_ARGS:%=-vmoption:%)
endif

378 379 380 381
ifdef CONCURRENCY
  EXTRA_JTREG_OPTIONS += -concurrency:$(CONCURRENCY)
endif

382 383
# Some tests annoy me and fail frequently
PROBLEM_LIST=ProblemList.txt
384
PROBLEM_LISTS=$(PROBLEM_LIST) $(wildcard closed/$(PROBLEM_LIST))
385 386 387 388
EXCLUDELIST=$(ABS_TEST_OUTPUT_DIR)/excludelist.txt

# Create exclude list for this platform and arch
ifdef NO_EXCLUDES
389
$(EXCLUDELIST): $(PROBLEM_LISTS) $(TEST_DEPENDENCIES)
390 391
	@$(ECHO) "NOTHING_EXCLUDED" > $@
else
392
$(EXCLUDELIST): $(PROBLEM_LISTS) $(TEST_DEPENDENCIES)
393
	@$(RM) $@ $@.temp1 $@.temp2
394
	@(($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-all'          ) ;\
395
	  ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(PLATFORM_OS)'          ) ;\
396
	  ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-$(OS_ARCH2)'  ) ;\
397 398
	  ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- '$(OS_NAME)-$(OS_VERSION)') ;\
	  ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-$(OS_ARCH)'      ) ;\
399
	  ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-$(OS_ARCH2)'     ) ;\
400 401
          ($(CAT) $(PROBLEM_LISTS) | $(EGREP) -- 'generic-all'             ) ;\
          ($(ECHO) "#") ;\
402 403
        ) | $(SED) -e 's@^[\ ]*@@' \
          | $(EGREP) -v '^#' > $@.temp1
404
	@for tdir in $(TESTDIRS) SOLARIS_10_SH_BUG_NO_EMPTY_FORS ; do \
405 406 407 408 409 410 411
          ( ( $(CAT) $@.temp1 | $(EGREP) "^$${tdir}" ) ; $(ECHO) "#" ) >> $@.temp2 ; \
        done
	@$(ECHO) "# at least one line" >> $@.temp2
	@( $(EGREP) -v '^#' $@.temp2 ; true ) > $@
	@$(ECHO) "Excluding list contains `$(EXPAND) $@ | $(WC) -l` items"
endif

412 413 414 415
# Select list of directories that exist
define TestDirs
$(foreach i,$1,$(wildcard ${i})) $(foreach i,$1,$(wildcard closed/${i}))
endef
416 417 418 419
# Running batches of tests with or without agentvm
define RunAgentvmBatch
$(ECHO) "Running tests in agentvm mode: $?"
$(MAKE) TEST_DEPENDENCIES="$?" TESTDIRS="$?" USE_JTREG_AGENTVM=true  UNIQUE_DIR=$@ jtreg_tests
420 421
endef
define RunOthervmBatch
422
$(ECHO) "Running tests in othervm mode: $?"
423
$(MAKE) TEST_DEPENDENCIES="$?" TESTDIRS="$?" USE_JTREG_AGENTVM=false UNIQUE_DIR=$@ jtreg_tests
424 425
endef
define SummaryInfo
426
$(ECHO) "########################################################"
427
$(CAT) $(?:%=$(ABS_TEST_OUTPUT_DIR)/%/$(STATS_TXT_NAME))
428
$(ECHO) "########################################################"
429 430 431 432 433
endef

# ------------------------------------------------------------------

# Batches of tests (somewhat arbitrary assigments to jdk_* targets)
434
# NOTE: These *do not* run the same tests as make/jprt.properties
435
JDK_DEFAULT_TARGETS =
436 437 438
JDK_ALL_TARGETS =

# Stable othervm testruns (minus items from PROBLEM_LIST)
439
#   Using agentvm has problems, and doesn't help performance as much as others.
440
JDK_ALL_TARGETS += jdk_awt
441 442
jdk_awt: $(call TestDirs, com/sun/awt java/awt sun/awt \
         javax/imageio javax/print sun/pisces)
443 444
	$(call RunOthervmBatch)

445
# Stable othervm testruns (minus items from PROBLEM_LIST)
446
JDK_ALL_TARGETS += jdk_beans1
447
JDK_DEFAULT_TARGETS += jdk_beans1
448 449
jdk_beans1: $(call TestDirs, \
            java/beans/beancontext java/beans/PropertyChangeSupport \
450
            java/beans/Introspector java/beans/Performance \
451
            java/beans/VetoableChangeSupport java/beans/Statement)
452
	$(call RunOthervmBatch)
453 454

# Stable othervm testruns (minus items from PROBLEM_LIST)
455
#   Using agentvm has serious problems with these tests
456
JDK_ALL_TARGETS += jdk_beans2
457 458 459
jdk_beans2: $(call TestDirs, \
            java/beans/Beans java/beans/EventHandler java/beans/XMLDecoder \
            java/beans/PropertyEditor)
460
	$(call RunOthervmBatch)
461 462

# Stable othervm testruns (minus items from PROBLEM_LIST)
463
#   Using agentvm has serious problems with these tests
464
JDK_ALL_TARGETS += jdk_beans3
465
jdk_beans3: $(call TestDirs, java/beans/XMLEncoder)
466 467
	$(call RunOthervmBatch)

468
# All beans tests
469 470 471
jdk_beans: jdk_beans1 jdk_beans2 jdk_beans3
	@$(SummaryInfo)

472
# Stable agentvm testruns (minus items from PROBLEM_LIST)
473
JDK_ALL_TARGETS += jdk_io
474
JDK_DEFAULT_TARGETS += jdk_io
475
jdk_io: $(call TestDirs, java/io)
476
	$(call RunAgentvmBatch)
477

478
# Stable agentvm testruns (minus items from PROBLEM_LIST)
479
JDK_ALL_TARGETS += jdk_lang
480
JDK_DEFAULT_TARGETS += jdk_lang
481
jdk_lang: $(call TestDirs, java/lang sun/invoke sun/misc vm)
482
	$(call RunAgentvmBatch)
483 484

# Stable othervm testruns (minus items from PROBLEM_LIST)
485
#   Using agentvm has serious problems with these tests
486 487
JDK_ALL_TARGETS += jdk_jmx
jdk_jmx: $(call TestDirs, javax/management com/sun/jmx)
488 489 490
	$(call RunOthervmBatch)

# Stable othervm testruns (minus items from PROBLEM_LIST)
491
#   Using agentvm has serious problems with these tests
492 493
JDK_ALL_TARGETS += jdk_management
jdk_management: $(call TestDirs, com/sun/management sun/management)
494 495
	$(call RunOthervmBatch)

496
# Stable agentvm testruns (minus items from PROBLEM_LIST)
497
JDK_ALL_TARGETS += jdk_math
498
JDK_DEFAULT_TARGETS += jdk_math
499
jdk_math: $(call TestDirs, java/math)
500
	$(call RunAgentvmBatch)
501

S
sherman 已提交
502 503 504 505 506
# Stable agentvm testruns (TestNG)
JDK_DEFAULT_TARGETS += jdk_time
jdk_time: $(call TestDirs, java/time)
	$(call RunOthervmBatch)

507
# Stable agentvm testruns (minus items from PROBLEM_LIST)
508 509 510 511 512 513
JDK_ALL_TARGETS += jdk_other
JDK_DEFAULT_TARGETS += jdk_other
jdk_other: $(call TestDirs, \
          demo/jvmti demo/zipfs sample \
          javax/naming com/sun/jndi \
          javax/script \
514
	  java/sql javax/sql \
515
          javax/smartcardio \
516
	  javax/xml/soap \
M
mullan 已提交
517
	  javax/xml/ws com/sun/internal/ws com/sun/org/glassfish \
518
	  jdk/asm \
519 520 521 522 523
	  com/sun/org/apache/xerces \
          com/sun/corba \
	  com/sun/servicetag \
	  com/sun/tracing \
	  sun/usagetracker)
524
	$(call RunAgentvmBatch)
525

526
# Stable agentvm testruns (minus items from PROBLEM_LIST)
527
JDK_ALL_TARGETS += jdk_net
528
JDK_DEFAULT_TARGETS += jdk_net
529
jdk_net: $(call TestDirs, com/sun/net java/net sun/net com/oracle/net)
530
	$(call RunAgentvmBatch)
531

532
# Stable agentvm testruns (minus items from PROBLEM_LIST)
533
jdk_nio: $(call TestDirs, java/nio sun/nio com/oracle/nio)
534
	$(call SharedLibraryPermissions,java/nio/channels)
535
	$(call RunAgentvmBatch)
536

537
# Stable agentvm testruns (minus items from PROBLEM_LIST)
538
jdk_sctp: $(call TestDirs, com/sun/nio/sctp)
539
	$(call RunAgentvmBatch)
540

541
# Stable othervm testruns (minus items from PROBLEM_LIST)
542
#   Using agentvm has serious problems with these tests
543
JDK_ALL_TARGETS += jdk_rmi
544
jdk_rmi: $(call TestDirs, java/rmi sun/rmi javax/rmi/ssl)
545 546
	$(call RunOthervmBatch)

547
# Stable agentvm testruns (minus items from PROBLEM_LIST)
548
JDK_ALL_TARGETS += jdk_security1
549
JDK_DEFAULT_TARGETS += jdk_security1
550
jdk_security1: $(call TestDirs, java/security)
551
	$(call RunAgentvmBatch)
552

553
# Stable agentvm testruns (minus items from PROBLEM_LIST)
554
JDK_ALL_TARGETS += jdk_security2
555
jdk_security2: $(call TestDirs, javax/crypto javax/xml/crypto com/sun/crypto)
556
	$(call RunAgentvmBatch)
557

558
# Stable agentvm testruns (minus items from PROBLEM_LIST)
559
JDK_ALL_TARGETS += jdk_security3
560
jdk_security3: $(call TestDirs, com/sun/security lib/security javax/security \
561
        sun/security com/sun/org/apache/xml/internal/security \
562
        com/oracle/security)
563
	$(call SharedLibraryPermissions,sun/security)
564
	$(call RunAgentvmBatch)
565

566
# All security tests
567 568 569
jdk_security: jdk_security1 jdk_security2 jdk_security3
	@$(SummaryInfo)

570
# Stable agentvm testruns (minus items from PROBLEM_LIST)
571 572
JDK_ALL_TARGETS += jdk_sound
jdk_sound: $(call TestDirs, javax/sound)
573
	$(call RunAgentvmBatch)
574

575
# Stable othervm testruns (minus items from PROBLEM_LIST)
576
#   Using agentvm has problems, and doesn't help performance as much as others.
577
JDK_ALL_TARGETS += jdk_swing
578 579
jdk_swing: $(call TestDirs, javax/swing sun/java2d \
           demo/jfc com/sun/java/swing)
580 581
	$(call RunOthervmBatch)

582
# Stable agentvm testruns (minus items from PROBLEM_LIST)
583
JDK_ALL_TARGETS += jdk_text
584
JDK_DEFAULT_TARGETS += jdk_text
585
jdk_text: $(call TestDirs, java/text sun/text)
586
	$(call RunAgentvmBatch)
587

588
# Stable agentvm testruns (minus items from PROBLEM_LIST)
589 590
JDK_ALL_TARGETS += jdk_jdi
jdk_jdi: $(call TestDirs, com/sun/jdi)
591
	$(call RunAgentvmBatch)
592 593

# Stable othervm testruns (minus items from PROBLEM_LIST)
594
#   Using agentvm has serious problems with these tests
595 596
JDK_ALL_TARGETS += jdk_tools
jdk_tools: $(call TestDirs, com/sun/tools sun/jvmstat sun/tools tools)
597
	$(call SharedLibraryPermissions,tools/launcher)
598
	$(call RunAgentvmBatch)
599

600 601 602 603 604 605 606 607 608 609
# Stable othervm testruns (minus items from PROBLEM_LIST)
#   Using agentvm has serious problems with these tests
ifdef OPENJDK
jdk_jfr:
else
JDK_ALL_TARGETS += jdk_jfr
jdk_jfr: $(call TestDirs, com/oracle/jfr)
	$(call RunOthervmBatch)
endif

610
# Stable agentvm testruns (minus items from PROBLEM_LIST)
611
JDK_ALL_TARGETS += jdk_util
612
JDK_DEFAULT_TARGETS += jdk_util
613
jdk_util: $(call TestDirs, java/util sun/util)
614
	$(call RunAgentvmBatch)
615 616 617

# ------------------------------------------------------------------

618
# Run default tests
619
# note that this *does not* have the same meaning as jprt.properties :: jprt.make.rule.default.test.targets
620 621 622
jdk_default: $(JDK_DEFAULT_TARGETS)
	@$(SummaryInfo)

623 624 625 626 627 628 629
# Run core tests
# please keep this in sync with jdk/make/jprt.properties :: jprt.make.rule.core.test.targets
jdk_core: jdk_lang jdk_math jdk_util jdk_io jdk_net jdk_nio \
        jdk_security1 jdk_security2 jdk_security3 jdk_rmi \
        jdk_management jdk_jmx jdk_text jdk_tools jdk_jfr jdk_other
	@$(SummaryInfo)

630
# Run all tests
631
# note that this *does not* have the same meaning as jprt.properties :: jprt.make.rule.all.test.targets
632
jdk_all: $(JDK_ALL_TARGETS)
633 634 635
	@$(SummaryInfo)

# These are all phony targets
636
PHONY_LIST += $(JDK_ALL_TARGETS) jdk_default jdk_core jdk_all
637 638 639

# ------------------------------------------------------------------

640 641
# Default JTREG to run (win32 script works for everybody)
JTREG = $(JT_HOME)/win32/bin/jtreg
642
# Add any extra options (agentvm etc.)
643 644 645
JTREG_BASIC_OPTIONS += $(EXTRA_JTREG_OPTIONS)
# Only run automatic tests
JTREG_BASIC_OPTIONS += -a
646 647 648
# Always turn on assertions
JTREG_ASSERT_OPTION = -ea -esa
JTREG_BASIC_OPTIONS += $(JTREG_ASSERT_OPTION)
649 650 651 652 653
# Report details on all failed or error tests, times too
JTREG_BASIC_OPTIONS += -v:fail,error,time
# Retain all files for failing tests
JTREG_BASIC_OPTIONS += -retain:fail,error
# Ignore tests are not run and completely silent about it
654 655
JTREG_IGNORE_OPTION = -ignore:quiet
JTREG_BASIC_OPTIONS += $(JTREG_IGNORE_OPTION)
656
# Multiple by 4 the timeout numbers
657 658
JTREG_TIMEOUT_OPTION =  -timeoutFactor:4
JTREG_BASIC_OPTIONS += $(JTREG_TIMEOUT_OPTION)
659
# Boost the max memory for jtreg to avoid gc thrashing
660 661
JTREG_MEMORY_OPTION = -J-Xmx512m
JTREG_BASIC_OPTIONS += $(JTREG_MEMORY_OPTION)
662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682

# Make sure jtreg exists
$(JTREG): $(JT_HOME)

# Run jtreg
jtreg_tests: prep $(PRODUCT_HOME) $(JTREG) $(EXCLUDELIST)
	@$(EXPAND) $(EXCLUDELIST) \
            | $(CUT) -d' ' -f1 \
            | $(SED) -e 's@^@Excluding: @'
	(                                                                    \
	  ( JT_HOME=$(shell $(GETMIXEDPATH) "$(JT_HOME)");                   \
            export JT_HOME;                                                  \
            $(shell $(GETMIXEDPATH) "$(JTREG)")                              \
              $(JTREG_BASIC_OPTIONS)                                         \
              -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport  \
              -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTwork    \
              -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)")                \
              -exclude:$(shell $(GETMIXEDPATH) "$(EXCLUDELIST)")             \
              $(JTREG_TEST_OPTIONS)                                          \
              $(TESTDIRS)                                                    \
	  ) ; $(BUNDLE_UP_AND_EXIT)                                          \
683
	) 2>&1 | $(TEE) $(ABS_TEST_OUTPUT_DIR)/output.txt ; $(TESTEXIT)
684

685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704
# Rule that may change execute permissions on shared library files.
#  Files in repositories should never have execute permissions, but there
#  are some tests that have pre-built shared libraries, and these windows
#  dll files must have execute permission. Adding execute permission
#  may happen automatically on windows when using certain versions of mercurial
#  but it cannot be guaranteed. And blindly adding execute permission might
#  be seen as a mercurial 'change', so we avoid adding execute permission to
#  repository files. But testing from a plain source tree needs the chmod a+rx.
#  Used on select directories and applying the chmod to all shared libraries
#  not just dll files. On windows, this may not work with MKS if the files
#  were installed with CYGWIN unzip or untar (MKS chmod may not do anything).
#  And with CYGWIN and sshd service, you may need CYGWIN=ntsec for this to work.
#
shared_library_permissions: $(SHARED_LIBRARY_DIR)
	if [ ! -d $(TEST_ROOT)/../.hg ] ; then                          \
	  $(FIND) $< \( -name \*.dll -o -name \*.DLL -o -name \*.so \)  \
	        -exec $(CHMOD) a+rx {} \; ;                             \
        fi

PHONY_LIST += jtreg_tests shared_library_permissions
705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733

################################################################

# packtest

# Expect JPRT to set JPRT_PACKTEST_HOME.
PACKTEST_HOME = /net/jprt-web.sfbay.sun.com/jprt/allproducts/packtest
ifdef JPRT_PACKTEST_HOME
  PACKTEST_HOME = $(JPRT_PACKTEST_HOME)
endif

packtest: prep $(PACKTEST_HOME)/ptest $(PRODUCT_HOME)
	( $(CD) $(PACKTEST_HOME) &&            \
	    $(PACKTEST_HOME)/ptest             \
		 -t "$(PRODUCT_HOME)"          \
	         $(PACKTEST_STRESS_OPTION)     \
		 $(EXTRA_PACKTEST_OPTIONS)     \
		 -W $(ABS_TEST_OUTPUT_DIR)     \
                 $(JAVA_ARGS:%=-J %)           \
                 $(JAVA_VM_ARGS:%=-J %)        \
	 ) ; $(BUNDLE_UP_AND_EXIT)

packtest_stress: PACKTEST_STRESS_OPTION=-s
packtest_stress: packtest

PHONY_LIST += packtest packtest_stress

################################################################

734
# perftest to collect statistics
735 736

# Expect JPRT to set JPRT_PACKTEST_HOME.
737
PERFTEST_HOME = $(TEST_ROOT)/perf
738 739 740 741 742 743 744 745 746 747 748 749 750 751 752
ifdef JPRT_PERFTEST_HOME
  PERFTEST_HOME = $(JPRT_PERFTEST_HOME)
endif

perftest: ( $(PERFTEST_HOME)/perftest          \
                 -t $(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)")               \
                 -w $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)") \
                 -h $(PERFTEST_HOME) \
	 ) ; $(BUNDLE_UP_AND_EXIT)


PHONY_LIST += perftest

################################################################

753 754 755
# vmsqe tests

# Expect JPRT to set JPRT_VMSQE_HOME.
756
VMSQE_HOME = $(SLASH_JAVA)/sqe/comp/vm/testbase/sqe/vm/current/build/latest/vm
757 758 759 760 761 762 763 764 765 766 767
ifdef JPRT_VMSQE_HOME
  VMSQE_HOME = $(JPRT_VMSQE_HOME)
endif

# Expect JPRT to set JPRT_RUNVMSQE_HOME.
RUNVMSQE_HOME = /net/jprt-web.sfbay.sun.com/jprt/allproducts/runvmsqe
ifdef JPRT_RUNVMSQE_HOME
  RUNVMSQE_HOME = $(JPRT_RUNVMSQE_HOME)
endif

# Expect JPRT to set JPRT_TONGA3_HOME.
768
TONGA3_HOME = $(SLASH_JAVA)/sqe/tools/gtee/harness/tonga
769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791
ifdef JPRT_TONGA3_HOME
  TONGA3_HOME = $(JPRT_TONGA3_HOME)
endif

RUNVMSQE_BIN = $(RUNVMSQE_HOME)/bin/runvmsqe

vmsqe_tests: prep $(VMSQE_HOME)/vm $(TONGA3_HOME) $(RUNVMSQE_BIN) $(PRODUCT_HOME)
	$(RM) -r $(ABS_TEST_OUTPUT_DIR)/vmsqe
	( $(CD) $(ABS_TEST_OUTPUT_DIR) &&          \
	    $(RUNVMSQE_BIN)                        \
		 -jdk "$(PRODUCT_HOME)"            \
		 -o "$(ABS_TEST_OUTPUT_DIR)/vmsqe" \
		 -testbase "$(VMSQE_HOME)/vm"      \
		 -tonga "$(TONGA3_HOME)"           \
		 -tongajdk "$(ALT_BOOTDIR)"        \
                 $(JAVA_ARGS)                      \
                 $(JAVA_VM_ARGS)                   \
	         $(RUNVMSQE_TEST_OPTION)           \
		 $(EXTRA_RUNVMSQE_OPTIONS)         \
	 ) ; $(BUNDLE_UP_AND_EXIT)

vmsqe_jdwp: RUNVMSQE_TEST_OPTION=-jdwp
vmsqe_jdwp: vmsqe_tests
D
duke 已提交
792

793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820
vmsqe_jdi: RUNVMSQE_TEST_OPTION=-jdi
vmsqe_jdi: vmsqe_tests

vmsqe_jdb: RUNVMSQE_TEST_OPTION=-jdb
vmsqe_jdb: vmsqe_tests

vmsqe_quick-jdi: RUNVMSQE_TEST_OPTION=-quick-jdi
vmsqe_quick-jdi: vmsqe_tests

vmsqe_sajdi: RUNVMSQE_TEST_OPTION=-sajdi
vmsqe_sajdi: vmsqe_tests

vmsqe_jvmti: RUNVMSQE_TEST_OPTION=-jvmti
vmsqe_jvmti: vmsqe_tests

vmsqe_hprof: RUNVMSQE_TEST_OPTION=-hprof
vmsqe_hprof: vmsqe_tests

vmsqe_monitoring: RUNVMSQE_TEST_OPTION=-monitoring
vmsqe_monitoring: vmsqe_tests

PHONY_LIST += vmsqe_jdwp vmsqe_jdi vmsqe_jdb vmsqe_quick-jdi vmsqe_sajdi \
              vmsqe_jvmti vmsqe_hprof vmsqe_monitoring vmsqe_tests

################################################################

# jck tests

821 822
# Default is to use jck 7 from /java/re
JCK7_DEFAULT_HOME = $(SLASH_JAVA)/re/jck/7/promoted/latest/binaries
823 824

# Expect JPRT to set JPRT_JCK7COMPILER_HOME.
825
JCK7COMPILER_HOME = $(JCK7_DEFAULT_HOME)/JCK-compiler-7
826
ifdef JPRT_JCK7COMPILER_HOME
827
  JCK7COMPILER_HOME = $(JPRT_JCK7COMPILER_HOME)/JCK-compiler-7
828 829 830
endif

# Expect JPRT to set JPRT_JCK7RUNTIME_HOME.
831
JCK7RUNTIME_HOME = $(JCK7_DEFAULT_HOME)/JCK-runtime-7
832
ifdef JPRT_JCK7RUNTIME_HOME
833
  JCK7RUNTIME_HOME = $(JPRT_JCK7RUNTIME_HOME)/JCK-runtime-7
834 835 836
endif

# Expect JPRT to set JPRT_JCK7DEVTOOLS_HOME.
837
JCK7DEVTOOLS_HOME = $(JCK7_DEFAULT_HOME)/JCK-devtools-7
838
ifdef JPRT_JCK7DEVTOOLS_HOME
839
  JCK7DEVTOOLS_HOME = $(JPRT_JCK7DEVTOOLS_HOME)/JCK-devtools-7
840 841
endif

842 843 844
# The jtjck.jar utility to use to run the tests
JTJCK_JAR = $(JCK_HOME)/lib/jtjck.jar
JTJCK_JAVA_ARGS =  -XX:MaxPermSize=256m -Xmx512m
845
JTJCK_OPTIONS = -headless -v
846

847 848
# Default tests to run
ifndef JCK_COMPILER_TESTS
849
  JCK_COMPILER_TESTS =
850 851
endif
ifndef JCK_RUNTIME_TESTS
852
  JCK_RUNTIME_TESTS  =
853 854
endif
ifndef JCK_DEVTOOLS_TESTS
855
  JCK_DEVTOOLS_TESTS =
856
endif
857

858 859 860 861 862 863 864 865 866 867 868 869 870 871
# Generic rule used to run jck tests
_generic_jck_tests: prep $(PRODUCT_HOME) $(EXCLUDELIST)
	@$(EXPAND) $(EXCLUDELIST) \
            | $(CUT) -d' ' -f1 \
            | $(SED) -e 's@^@Excluding: @'
	( $(CD) $(ABS_TEST_OUTPUT_DIR) &&          			   \
	  $(PRODUCT_HOME)/bin/java $(JTJCK_JAVA_ARGS) 			   \
	    -jar "$(JTJCK_JAR)" 					   \
	    $(JTJCK_OPTIONS) 						   \
            -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport  \
            -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTwork    \
            -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)")                \
	    $(TESTDIRS) 						   \
        ) ; $(BUNDLE_UP_AND_EXIT)
872

873 874 875 876 877 878 879 880
# JCK7 compiler tests
jck7compiler:
	$(MAKE) UNIQUE_DIR=$@ \
	        JCK_HOME=$(JCK7COMPILER_HOME) \
	        TESTDIRS="$(JCK_COMPILER_TESTS)" \
                _generic_jck_tests

# JCK7 runtime tests
881
jck7runtime:
882 883 884 885 886 887
	$(MAKE) UNIQUE_DIR=$@ \
	        JCK_HOME=$(JCK7RUNTIME_HOME) \
	        TESTDIRS="$(JCK_RUNTIME_TESTS)" \
                _generic_jck_tests

# JCK7 devtools tests
888
jck7devtools:
889 890 891 892 893 894 895 896 897 898
	$(MAKE) UNIQUE_DIR=$@ \
	        JCK_HOME=$(JCK7DEVTOOLS_HOME) \
                TESTDIRS="$(JCK_DEVTOOLS_TESTS)" \
                _generic_jck_tests

# Run all 3 sets of JCK7 tests
jck_all: jck7runtime jck7devtools jck7compiler

PHONY_LIST += jck_all _generic_jck_tests \
	      jck7compiler jck7runtime jck7devtools
899 900

################################################################
D
duke 已提交
901 902

# Phony targets (e.g. these are not filenames)
903 904 905
.PHONY: all clean prep $(PHONY_LIST)

################################################################