test/Makefile

Thu, 24 May 2018 19:57:44 +0800

author
aoqi
date
Thu, 24 May 2018 19:57:44 +0800
changeset 8867
34020d024017
parent 7535
7ae4e26cb1e0
child 9637
eef07cd490d4
permissions
-rw-r--r--

[Code Reorganization] delete Trailing whitespace

aoqi@0 1 #
mikael@7270 2 # Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
aoqi@0 4 #
aoqi@0 5 # This code is free software; you can redistribute it and/or modify it
aoqi@0 6 # under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 # published by the Free Software Foundation.
aoqi@0 8 #
aoqi@0 9 # This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 12 # version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 13 # accompanied this code).
aoqi@0 14 #
aoqi@0 15 # You should have received a copy of the GNU General Public License version
aoqi@0 16 # 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
aoqi@0 18 #
aoqi@0 19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 20 # or visit www.oracle.com if you need additional information or have any
aoqi@0 21 # questions.
aoqi@0 22 #
aoqi@0 23 #
aoqi@0 24
aoqi@0 25 #
mikael@7270 26 # Makefile to run various hotspot tests
aoqi@0 27 #
aoqi@0 28
aoqi@0 29 GETMIXEDPATH=echo
aoqi@0 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)
aoqi@0 56 PLATFORM = solaris
aoqi@0 57 SLASH_JAVA = /java
aoqi@0 58 ARCH = $(shell uname -p)
aoqi@0 59 ifeq ($(ARCH), i386)
aoqi@0 60 ARCH=i586
aoqi@0 61 endif
aoqi@0 62 endif
mikael@7270 63 ifeq ($(UNAME_S), Linux)
aoqi@0 64 PLATFORM = linux
aoqi@0 65 SLASH_JAVA = /java
aoqi@0 66 ARCH = $(shell uname -m)
aoqi@0 67 ifeq ($(ARCH), i386)
aoqi@0 68 ARCH = i586
aoqi@0 69 endif
aoqi@0 70 endif
mikael@7270 71 ifeq ($(UNAME_S), Darwin)
aoqi@0 72 PLATFORM = bsd
aoqi@0 73 SLASH_JAVA = /java
aoqi@0 74 ARCH = $(shell uname -m)
aoqi@0 75 ifeq ($(ARCH), i386)
aoqi@0 76 ARCH = i586
aoqi@0 77 endif
aoqi@0 78 endif
mikael@7270 79 ifeq ($(findstring BSD,$(UNAME_S)), BSD)
aoqi@0 80 PLATFORM = bsd
aoqi@0 81 SLASH_JAVA = /java
aoqi@0 82 ARCH = $(shell uname -m)
aoqi@0 83 ifeq ($(ARCH), i386)
aoqi@0 84 ARCH = i586
aoqi@0 85 endif
aoqi@0 86 endif
aoqi@0 87 ifeq ($(PLATFORM),)
mikael@7270 88 # detect whether we're running in MKS or cygwin
mikael@7270 89 ifeq ($(UNAME_S), Windows_NT) # MKS
aoqi@0 90 GETMIXEDPATH=dosname -s
aoqi@0 91 endif
mikael@7270 92 ifeq ($(findstring CYGWIN,$(UNAME_S)), CYGWIN)
mikael@7270 93 GETMIXEDPATH=cygpath -m
aoqi@0 94 endif
aoqi@0 95 PLATFORM = windows
aoqi@0 96 SLASH_JAVA = J:
aoqi@0 97 ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),ia64)
aoqi@0 98 ARCH = ia64
aoqi@0 99 else
aoqi@0 100 ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),AMD64)
aoqi@0 101 ARCH = x64
aoqi@0 102 else
aoqi@0 103 ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),EM64T)
aoqi@0 104 ARCH = x64
aoqi@0 105 else
aoqi@0 106 ARCH = i586
aoqi@0 107 endif
aoqi@0 108 endif
aoqi@0 109 endif
aoqi@0 110 EXESUFFIX = .exe
aoqi@0 111 endif
aoqi@0 112
aoqi@0 113 ifdef ALT_SLASH_JAVA
aoqi@0 114 SLASH_JAVA = $(ALT_SLASH_JAVA)
aoqi@0 115 endif
aoqi@0 116
aoqi@0 117 # Root of this test area (important to use full paths in some places)
aoqi@0 118 TEST_ROOT := $(shell pwd)
aoqi@0 119
aoqi@0 120 # Root of all test results
aoqi@0 121 ifdef ALT_OUTPUTDIR
aoqi@0 122 ABS_BUILD_ROOT = $(ALT_OUTPUTDIR)/$(PLATFORM)-$(ARCH)
aoqi@0 123 else
aoqi@0 124 ABS_BUILD_ROOT = $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)
aoqi@0 125 endif
aoqi@0 126 ABS_TEST_OUTPUT_DIR = $(ABS_BUILD_ROOT)/testoutput
aoqi@0 127
aoqi@0 128 # Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test)
aoqi@0 129 ifndef PRODUCT_HOME
aoqi@0 130 # Try to use j2sdk-image if it exists
aoqi@0 131 ABS_JDK_IMAGE = $(ABS_BUILD_ROOT)/j2sdk-image
aoqi@0 132 PRODUCT_HOME := \
aoqi@0 133 $(shell \
aoqi@0 134 if [ -d $(ABS_JDK_IMAGE) ] ; then \
aoqi@0 135 $(ECHO) "$(ABS_JDK_IMAGE)"; \
aoqi@0 136 else \
aoqi@0 137 $(ECHO) "$(ABS_BUILD_ROOT)" ; \
aoqi@0 138 fi)
aoqi@0 139 endif
aoqi@0 140
aoqi@0 141 # Expect JPRT to set JAVA_ARGS (e.g. -server etc.)
aoqi@0 142 JAVA_OPTIONS =
aoqi@0 143 ifdef JAVA_ARGS
aoqi@0 144 JAVA_OPTIONS = $(JAVA_ARGS)
aoqi@0 145 endif
aoqi@0 146
aoqi@0 147 # Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results)
aoqi@0 148 ARCHIVE_BUNDLE = $(ABS_TEST_OUTPUT_DIR)/ARCHIVE_BUNDLE.zip
aoqi@0 149 ifdef JPRT_ARCHIVE_BUNDLE
aoqi@0 150 ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE)
aoqi@0 151 endif
aoqi@0 152
aoqi@0 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 )
aoqi@0 217
aoqi@0 218 ################################################################
aoqi@0 219
aoqi@0 220 # Default make rule (runs jtreg_tests)
mikael@7270 221 all: hotspot_all
aoqi@0 222 @$(ECHO) "Testing completed successfully"
aoqi@0 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
aoqi@0 231 # Prep for output
aoqi@0 232 prep: clean
aoqi@0 233 @$(MKDIR) -p $(ABS_TEST_OUTPUT_DIR)
aoqi@0 234 @$(MKDIR) -p `dirname $(ARCHIVE_BUNDLE)`
aoqi@0 235
aoqi@0 236 # Cleanup
aoqi@0 237 clean:
aoqi@0 238 $(RM) -r $(ABS_TEST_OUTPUT_DIR)
aoqi@0 239 $(RM) $(ARCHIVE_BUNDLE)
aoqi@0 240
aoqi@0 241 ################################################################
aoqi@0 242
aoqi@0 243 # jtreg tests
aoqi@0 244
aoqi@0 245 # Expect JT_HOME to be set for jtreg tests. (home for jtreg)
aoqi@0 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
aoqi@0 251 endif
aoqi@0 252
mikael@7270 253 # When called from JPRT the TESTDIRS variable is set to the jtreg tests to run
aoqi@0 254 ifdef TESTDIRS
mikael@7270 255 TEST_SELECTION = $(TESTDIRS)
aoqi@0 256 endif
aoqi@0 257
mikael@7270 258 ifdef CONCURRENCY
mikael@7270 259 EXTRA_JTREG_OPTIONS += -concurrency:$(CONCURRENCY)
mikael@6198 260 endif
mikael@6198 261
sla@7204 262 # Default JTREG to run
sla@7204 263 JTREG = $(JT_HOME)/bin/jtreg
mikael@6198 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:%)
aoqi@0 278
aoqi@0 279 # Option to tell jtreg to not run tests marked with "ignore"
aoqi@0 280 ifeq ($(PLATFORM), windows)
aoqi@0 281 JTREG_KEY_OPTION = -k:!ignore
aoqi@0 282 else
aoqi@0 283 JTREG_KEY_OPTION = -k:\!ignore
aoqi@0 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)
aoqi@0 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)
aoqi@0 305
aoqi@0 306 PHONY_LIST += jtreg_tests
aoqi@0 307
aoqi@0 308 ################################################################
aoqi@0 309
aoqi@0 310 # clienttest (make sure various basic java client options work)
aoqi@0 311
mikael@7270 312 hotspot_clienttest clienttest: prep $(PRODUCT_HOME)
aoqi@0 313 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -version
aoqi@0 314 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -help
aoqi@0 315 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -X
aoqi@0 316 $(RM) $(PRODUCT_HOME)/jre/lib/*/client/classes.jsa
aoqi@0 317 $(RM) $(PRODUCT_HOME)/jre/bin/client/classes.jsa
aoqi@0 318 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -Xshare:dump
aoqi@0 319
mikael@7270 320 PHONY_LIST += hotspot_clienttest clienttest
mikael@6198 321
mikael@6198 322 ################################################################
mikael@6198 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
aoqi@0 332
aoqi@0 333 ################################################################
aoqi@0 334
aoqi@0 335 # servertest (make sure various basic java server options work)
aoqi@0 336
mikael@7270 337 hotspot_servertest servertest: prep $(PRODUCT_HOME)
aoqi@0 338 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -version
aoqi@0 339 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -help
aoqi@0 340 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -X
aoqi@0 341
mikael@7270 342 PHONY_LIST += hotspot_servertest servertest
aoqi@0 343
aoqi@0 344 ################################################################
aoqi@0 345
aoqi@0 346 # internalvmtests (run internal unit tests inside the VM)
aoqi@0 347
mikael@7270 348 hotspot_internalvmtests internalvmtests: prep $(PRODUCT_HOME)
aoqi@0 349 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -XX:+ExecuteInternalVMTests -version
aoqi@0 350
mikael@7270 351 PHONY_LIST += hotspot_internalvmtests internalvmtests
aoqi@0 352
aoqi@0 353 ################################################################
aoqi@0 354
aoqi@0 355 # Phony targets (e.g. these are not filenames)
aoqi@0 356 .PHONY: all clean prep $(PHONY_LIST)
aoqi@0 357
aoqi@0 358 ################################################################

mercurial