test/Makefile

Wed, 21 Jan 2015 12:38:11 +0100

author
goetz
date
Wed, 21 Jan 2015 12:38:11 +0100
changeset 7574
a51071796915
parent 7271
a477f1af1bac
child 7535
7ae4e26cb1e0
child 9629
8119983116f6
permissions
-rw-r--r--

8068013: [TESTBUG] Aix support in hotspot jtreg tests
Reviewed-by: ctornqvi, fzhinkin, farvidsson

duke@435 1 #
mikael@7270 2 # Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
duke@435 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@435 4 #
duke@435 5 # This code is free software; you can redistribute it and/or modify it
duke@435 6 # under the terms of the GNU General Public License version 2 only, as
duke@435 7 # published by the Free Software Foundation.
duke@435 8 #
duke@435 9 # This code is distributed in the hope that it will be useful, but WITHOUT
duke@435 10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@435 11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@435 12 # version 2 for more details (a copy is included in the LICENSE file that
duke@435 13 # accompanied this code).
duke@435 14 #
duke@435 15 # You should have received a copy of the GNU General Public License version
duke@435 16 # 2 along with this work; if not, write to the Free Software Foundation,
duke@435 17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@435 18 #
trims@1907 19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
trims@1907 20 # or visit www.oracle.com if you need additional information or have any
trims@1907 21 # questions.
ohair@763 22 #
duke@435 23 #
duke@435 24
duke@435 25 #
mikael@7270 26 # Makefile to run various hotspot tests
duke@435 27 #
duke@435 28
mgerdin@3664 29 GETMIXEDPATH=echo
mgerdin@3664 30
mikael@7270 31 # Utilities used
mikael@7270 32 AWK = awk
mikael@7270 33 CAT = cat
mikael@7270 34 CD = cd
mikael@7270 35 CHMOD = chmod
mikael@7270 36 CP = cp
mikael@7270 37 CUT = cut
mikael@7270 38 DIRNAME = dirname
mikael@7270 39 ECHO = echo
mikael@7270 40 EGREP = egrep
mikael@7270 41 EXPAND = expand
mikael@7270 42 FIND = find
mikael@7270 43 MKDIR = mkdir
mikael@7270 44 PWD = pwd
mikael@7270 45 SED = sed
mikael@7270 46 SORT = sort
mikael@7270 47 TEE = tee
mikael@7270 48 UNAME = uname
mikael@7270 49 UNIQ = uniq
mikael@7270 50 WC = wc
mikael@7270 51 ZIP = zip
mikael@7270 52
mikael@7270 53 # Get OS name from uname (Cygwin inexplicably adds _NT-5.1)
mikael@7270 54 UNAME_S := $(shell $(UNAME) -s | $(CUT) -f1 -d_)
mikael@7270 55 ifeq ($(UNAME_S), SunOS)
duke@435 56 PLATFORM = solaris
twisti@995 57 SLASH_JAVA = /java
duke@435 58 ARCH = $(shell uname -p)
duke@435 59 ifeq ($(ARCH), i386)
duke@435 60 ARCH=i586
duke@435 61 endif
duke@435 62 endif
mikael@7270 63 ifeq ($(UNAME_S), Linux)
duke@435 64 PLATFORM = linux
twisti@995 65 SLASH_JAVA = /java
duke@435 66 ARCH = $(shell uname -m)
duke@435 67 ifeq ($(ARCH), i386)
ohair@763 68 ARCH = i586
duke@435 69 endif
duke@435 70 endif
mikael@7270 71 ifeq ($(UNAME_S), Darwin)
never@3156 72 PLATFORM = bsd
never@3156 73 SLASH_JAVA = /java
never@3156 74 ARCH = $(shell uname -m)
never@3156 75 ifeq ($(ARCH), i386)
never@3156 76 ARCH = i586
never@3156 77 endif
never@3156 78 endif
mikael@7270 79 ifeq ($(findstring BSD,$(UNAME_S)), BSD)
never@3156 80 PLATFORM = bsd
never@3156 81 SLASH_JAVA = /java
never@3156 82 ARCH = $(shell uname -m)
never@3156 83 ifeq ($(ARCH), i386)
never@3156 84 ARCH = i586
never@3156 85 endif
never@3156 86 endif
mgerdin@3664 87 ifeq ($(PLATFORM),)
mikael@7270 88 # detect whether we're running in MKS or cygwin
mikael@7270 89 ifeq ($(UNAME_S), Windows_NT) # MKS
mgerdin@3664 90 GETMIXEDPATH=dosname -s
mgerdin@3664 91 endif
mikael@7270 92 ifeq ($(findstring CYGWIN,$(UNAME_S)), CYGWIN)
mikael@7270 93 GETMIXEDPATH=cygpath -m
mgerdin@3664 94 endif
duke@435 95 PLATFORM = windows
ohair@763 96 SLASH_JAVA = J:
duke@435 97 ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),ia64)
ohair@763 98 ARCH = ia64
duke@435 99 else
duke@435 100 ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),AMD64)
ohair@763 101 ARCH = x64
duke@435 102 else
duke@435 103 ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),EM64T)
ohair@763 104 ARCH = x64
duke@435 105 else
ohair@763 106 ARCH = i586
duke@435 107 endif
duke@435 108 endif
duke@435 109 endif
ohair@763 110 EXESUFFIX = .exe
duke@435 111 endif
duke@435 112
twisti@995 113 ifdef ALT_SLASH_JAVA
twisti@995 114 SLASH_JAVA = $(ALT_SLASH_JAVA)
twisti@995 115 endif
twisti@995 116
ohair@763 117 # Root of this test area (important to use full paths in some places)
ohair@763 118 TEST_ROOT := $(shell pwd)
ohair@763 119
ohair@763 120 # Root of all test results
twisti@2256 121 ifdef ALT_OUTPUTDIR
twisti@2256 122 ABS_BUILD_ROOT = $(ALT_OUTPUTDIR)/$(PLATFORM)-$(ARCH)
twisti@2256 123 else
twisti@2256 124 ABS_BUILD_ROOT = $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)
twisti@2256 125 endif
ohair@763 126 ABS_TEST_OUTPUT_DIR = $(ABS_BUILD_ROOT)/testoutput
ohair@763 127
ohair@763 128 # Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test)
ohair@763 129 ifndef PRODUCT_HOME
ohair@763 130 # Try to use j2sdk-image if it exists
ohair@763 131 ABS_JDK_IMAGE = $(ABS_BUILD_ROOT)/j2sdk-image
ohair@763 132 PRODUCT_HOME := \
ohair@763 133 $(shell \
ohair@763 134 if [ -d $(ABS_JDK_IMAGE) ] ; then \
ohair@763 135 $(ECHO) "$(ABS_JDK_IMAGE)"; \
ohair@763 136 else \
ohair@763 137 $(ECHO) "$(ABS_BUILD_ROOT)" ; \
ohair@763 138 fi)
duke@435 139 endif
duke@435 140
ohair@763 141 # Expect JPRT to set JAVA_ARGS (e.g. -server etc.)
ohair@763 142 JAVA_OPTIONS =
ohair@763 143 ifdef JAVA_ARGS
ohair@763 144 JAVA_OPTIONS = $(JAVA_ARGS)
ohair@763 145 endif
duke@435 146
ohair@763 147 # Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results)
ohair@763 148 ARCHIVE_BUNDLE = $(ABS_TEST_OUTPUT_DIR)/ARCHIVE_BUNDLE.zip
ohair@763 149 ifdef JPRT_ARCHIVE_BUNDLE
ohair@763 150 ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE)
ohair@763 151 endif
duke@435 152
ohair@763 153 # How to create the test bundle (pass or fail, we want to create this)
mikael@7270 154 # Follow command with ";$(BUNDLE_UP_AND_EXIT)", so it always gets executed.
mikael@7270 155 ZIP_UP_RESULTS = ( $(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)` \
mikael@7270 156 && $(CD) $(ABS_TEST_OUTPUT_DIR) \
mikael@7270 157 && $(CHMOD) -R a+r . \
mikael@7270 158 && $(ZIP) -q -r $(ARCHIVE_BUNDLE) . )
mikael@7270 159
mikael@7270 160 # important results files
mikael@7270 161 SUMMARY_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport/text/summary.txt")
mikael@7270 162 STATS_TXT_NAME = Stats.txt
mikael@7270 163 STATS_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/$(STATS_TXT_NAME)")
mikael@7270 164 RUNLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/runlist.txt")
mikael@7270 165 PASSLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/passlist.txt")
mikael@7270 166 FAILLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/faillist.txt")
mikael@7270 167 EXITCODE = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/exitcode.txt")
mikael@7270 168
mikael@7270 169 TESTEXIT = \
mikael@7270 170 if [ ! -s $(EXITCODE) ] ; then \
mikael@7270 171 $(ECHO) "ERROR: EXITCODE file not filled in."; \
mikael@7270 172 $(ECHO) "1" > $(EXITCODE); \
mikael@7270 173 fi ; \
mikael@7270 174 testExitCode=`$(CAT) $(EXITCODE)`; \
mikael@7270 175 $(ECHO) "EXIT CODE: $${testExitCode}"; \
mikael@7270 176 exit $${testExitCode}
mikael@7270 177
mikael@7270 178 BUNDLE_UP_AND_EXIT = \
mikael@7270 179 ( \
mikael@7270 180 jtregExitCode=$$? && \
mikael@7270 181 _summary="$(SUMMARY_TXT)"; \
mikael@7270 182 $(RM) -f $(STATS_TXT) $(RUNLIST) $(PASSLIST) $(FAILLIST) $(EXITCODE); \
mikael@7270 183 $(ECHO) "$${jtregExitCode}" > $(EXITCODE); \
mikael@7270 184 if [ -r "$${_summary}" ] ; then \
mikael@7270 185 $(ECHO) "Summary: $(UNIQUE_DIR)" > $(STATS_TXT); \
mikael@7270 186 $(EXPAND) $${_summary} | $(EGREP) -v ' Not run\.' > $(RUNLIST); \
mikael@7270 187 $(EGREP) ' Passed\.' $(RUNLIST) \
mikael@7270 188 | $(EGREP) -v ' Error\.' \
mikael@7270 189 | $(EGREP) -v ' Failed\.' > $(PASSLIST); \
mikael@7270 190 ( $(EGREP) ' Failed\.' $(RUNLIST); \
mikael@7270 191 $(EGREP) ' Error\.' $(RUNLIST); \
mikael@7270 192 $(EGREP) -v ' Passed\.' $(RUNLIST) ) \
mikael@7270 193 | $(SORT) | $(UNIQ) > $(FAILLIST); \
mikael@7270 194 if [ $${jtregExitCode} != 0 -o -s $(FAILLIST) ] ; then \
mikael@7270 195 $(EXPAND) $(FAILLIST) \
mikael@7270 196 | $(CUT) -d' ' -f1 \
mikael@7270 197 | $(SED) -e 's@^@FAILED: @' >> $(STATS_TXT); \
mikael@7270 198 if [ $${jtregExitCode} = 0 ] ; then \
mikael@7270 199 jtregExitCode=1; \
mikael@7270 200 fi; \
mikael@7270 201 fi; \
mikael@7270 202 runc="`$(CAT) $(RUNLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
mikael@7270 203 passc="`$(CAT) $(PASSLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
mikael@7270 204 failc="`$(CAT) $(FAILLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
mikael@7270 205 exclc="FIXME CODETOOLS-7900176"; \
mikael@7270 206 $(ECHO) "TEST STATS: name=$(UNIQUE_DIR) run=$${runc} pass=$${passc} fail=$${failc}" \
mikael@7270 207 >> $(STATS_TXT); \
mikael@7270 208 else \
mikael@7270 209 $(ECHO) "Missing file: $${_summary}" >> $(STATS_TXT); \
mikael@7270 210 fi; \
mikael@7270 211 if [ -f $(STATS_TXT) ] ; then \
mikael@7270 212 $(CAT) $(STATS_TXT); \
mikael@7270 213 fi; \
mikael@7270 214 $(ZIP_UP_RESULTS) ; \
mikael@7270 215 $(TESTEXIT) \
mikael@7270 216 )
duke@435 217
ohair@763 218 ################################################################
duke@435 219
ohair@763 220 # Default make rule (runs jtreg_tests)
mikael@7270 221 all: hotspot_all
ohair@763 222 @$(ECHO) "Testing completed successfully"
duke@435 223
mikael@7270 224 # Support "hotspot_" prefixed test make targets (too)
mikael@7270 225 # The hotspot_% targets are used by the top level Makefile
mikael@7270 226 # Unless explicitly defined below, hotspot_<x> is interpreted as a jtreg test group name
mikael@6916 227 hotspot_%:
mikael@7270 228 $(ECHO) "Running tests: $@"
mikael@7270 229 $(MAKE) -j 1 TEST_SELECTION=":$@" UNIQUE_DIR=$@ jtreg_tests;
mikael@6916 230
ohair@763 231 # Prep for output
ohair@763 232 prep: clean
ohair@763 233 @$(MKDIR) -p $(ABS_TEST_OUTPUT_DIR)
ohair@763 234 @$(MKDIR) -p `dirname $(ARCHIVE_BUNDLE)`
duke@435 235
duke@435 236 # Cleanup
duke@435 237 clean:
ohair@763 238 $(RM) -r $(ABS_TEST_OUTPUT_DIR)
ohair@763 239 $(RM) $(ARCHIVE_BUNDLE)
duke@435 240
ohair@763 241 ################################################################
duke@435 242
ohair@763 243 # jtreg tests
ohair@763 244
ohair@763 245 # Expect JT_HOME to be set for jtreg tests. (home for jtreg)
twisti@4941 246 ifndef JT_HOME
mikael@7270 247 JT_HOME = $(SLASH_JAVA)/re/jtreg/4.1/promoted/latest/binaries/jtreg
mikael@7270 248 ifdef JPRT_JTREG_HOME
mikael@7270 249 JT_HOME = $(JPRT_JTREG_HOME)
mikael@7270 250 endif
ohair@763 251 endif
ohair@763 252
mikael@7270 253 # When called from JPRT the TESTDIRS variable is set to the jtreg tests to run
ohair@763 254 ifdef TESTDIRS
mikael@7270 255 TEST_SELECTION = $(TESTDIRS)
mikael@7270 256 endif
mikael@7270 257
mikael@7270 258 ifdef CONCURRENCY
mikael@7270 259 EXTRA_JTREG_OPTIONS += -concurrency:$(CONCURRENCY)
ohair@763 260 endif
ohair@763 261
sla@7204 262 # Default JTREG to run
sla@7204 263 JTREG = $(JT_HOME)/bin/jtreg
ohair@763 264
mikael@7270 265 # Only run automatic tests
mikael@7270 266 JTREG_BASIC_OPTIONS += -a
mikael@7270 267 # Report details on all failed or error tests, times too
mikael@7270 268 JTREG_BASIC_OPTIONS += -v:fail,error,time
mikael@7270 269 # Retain all files for failing tests
mikael@7270 270 JTREG_BASIC_OPTIONS += -retain:fail,error
mikael@7270 271 # Ignore tests are not run and completely silent about it
mikael@7270 272 JTREG_IGNORE_OPTION = -ignore:quiet
mikael@7270 273 JTREG_BASIC_OPTIONS += $(JTREG_IGNORE_OPTION)
mikael@7270 274 # Add any extra options
mikael@7270 275 JTREG_BASIC_OPTIONS += $(EXTRA_JTREG_OPTIONS)
mikael@7270 276 # Set other vm and test options
mikael@7270 277 JTREG_TEST_OPTIONS = $(JAVA_ARGS:%=-javaoptions:%) $(JAVA_OPTIONS:%=-vmoption:%) $(JAVA_VM_ARGS:%=-vmoption:%)
mikael@7270 278
ohair@763 279 # Option to tell jtreg to not run tests marked with "ignore"
ohair@763 280 ifeq ($(PLATFORM), windows)
ohair@763 281 JTREG_KEY_OPTION = -k:!ignore
ohair@763 282 else
ohair@763 283 JTREG_KEY_OPTION = -k:\!ignore
ohair@763 284 endif
mikael@7270 285 JTREG_BASIC_OPTIONS += $(JTREG_KEY_OPTION)
mikael@7270 286
mikael@7270 287 # Make sure jtreg exists
mikael@7270 288 $(JTREG): $(JT_HOME)
ohair@763 289
mikael@7270 290 jtreg_tests: prep $(PRODUCT_HOME) $(JTREG)
mikael@7270 291 ( \
mikael@7270 292 ( JT_HOME=$(shell $(GETMIXEDPATH) "$(JT_HOME)"); \
mikael@7270 293 export JT_HOME; \
mikael@7270 294 $(shell $(GETMIXEDPATH) "$(JTREG)") \
mikael@7270 295 $(JTREG_BASIC_OPTIONS) \
mikael@7270 296 -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport") \
mikael@7270 297 -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTwork") \
mikael@7270 298 -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \
mikael@7270 299 $(JTREG_EXCLUSIONS) \
mikael@7270 300 $(JTREG_TEST_OPTIONS) \
mikael@7270 301 $(TEST_SELECTION) \
mikael@7270 302 ) ; \
mikael@7270 303 $(BUNDLE_UP_AND_EXIT) \
mikael@7270 304 ) 2>&1 | $(TEE) $(ABS_TEST_OUTPUT_DIR)/output.txt ; $(TESTEXIT)
ohair@763 305
ohair@763 306 PHONY_LIST += jtreg_tests
ohair@763 307
ohair@763 308 ################################################################
ohair@763 309
ohair@1216 310 # clienttest (make sure various basic java client options work)
ohair@1216 311
mikael@7270 312 hotspot_clienttest clienttest: prep $(PRODUCT_HOME)
ohair@1216 313 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -version
ohair@1216 314 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -help
ohair@1216 315 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -X
ohair@1216 316 $(RM) $(PRODUCT_HOME)/jre/lib/*/client/classes.jsa
ohair@1216 317 $(RM) $(PRODUCT_HOME)/jre/bin/client/classes.jsa
ohair@1216 318 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -Xshare:dump
ohair@1216 319
mikael@7270 320 PHONY_LIST += hotspot_clienttest clienttest
ohair@1216 321
ohair@1216 322 ################################################################
ohair@1216 323
dholmes@7271 324 # minimaltest (make sure various basic java minimal options work)
dholmes@7271 325
dholmes@7271 326 hotspot_minimaltest minimaltest: prep $(PRODUCT_HOME)
dholmes@7271 327 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -version
dholmes@7271 328 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -help
dholmes@7271 329 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -X
dholmes@7271 330
dholmes@7271 331 PHONY_LIST += hotspot_minimaltest minimaltest
dholmes@7271 332
dholmes@7271 333 ################################################################
dholmes@7271 334
ohair@1216 335 # servertest (make sure various basic java server options work)
ohair@1216 336
mikael@7270 337 hotspot_servertest servertest: prep $(PRODUCT_HOME)
ohair@1216 338 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -version
ohair@1216 339 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -help
ohair@1216 340 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -X
ohair@1216 341
mikael@7270 342 PHONY_LIST += hotspot_servertest servertest
ohair@1216 343
ohair@1216 344 ################################################################
ohair@1216 345
brutisso@3266 346 # internalvmtests (run internal unit tests inside the VM)
brutisso@3266 347
mikael@7270 348 hotspot_internalvmtests internalvmtests: prep $(PRODUCT_HOME)
brutisso@3266 349 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -XX:+ExecuteInternalVMTests -version
brutisso@3266 350
mikael@7270 351 PHONY_LIST += hotspot_internalvmtests internalvmtests
ohair@763 352
ohair@763 353 ################################################################
ohair@763 354
ohair@763 355 # Phony targets (e.g. these are not filenames)
ohair@763 356 .PHONY: all clean prep $(PHONY_LIST)
ohair@763 357
ohair@763 358 ################################################################

mercurial