1.1 --- a/test/Makefile Mon Feb 24 13:29:14 2014 +0100 1.2 +++ b/test/Makefile Thu Oct 16 20:20:17 2014 -0400 1.3 @@ -1,5 +1,5 @@ 1.4 # 1.5 -# Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. 1.6 +# Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved. 1.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 # 1.9 # This code is free software; you can redistribute it and/or modify it 1.10 @@ -23,14 +23,36 @@ 1.11 # 1.12 1.13 # 1.14 -# Makefile to run various jdk tests 1.15 +# Makefile to run various hotspot tests 1.16 # 1.17 1.18 GETMIXEDPATH=echo 1.19 1.20 -# Get OS/ARCH specifics 1.21 -OSNAME = $(shell uname -s) 1.22 -ifeq ($(OSNAME), SunOS) 1.23 +# Utilities used 1.24 +AWK = awk 1.25 +CAT = cat 1.26 +CD = cd 1.27 +CHMOD = chmod 1.28 +CP = cp 1.29 +CUT = cut 1.30 +DIRNAME = dirname 1.31 +ECHO = echo 1.32 +EGREP = egrep 1.33 +EXPAND = expand 1.34 +FIND = find 1.35 +MKDIR = mkdir 1.36 +PWD = pwd 1.37 +SED = sed 1.38 +SORT = sort 1.39 +TEE = tee 1.40 +UNAME = uname 1.41 +UNIQ = uniq 1.42 +WC = wc 1.43 +ZIP = zip 1.44 + 1.45 +# Get OS name from uname (Cygwin inexplicably adds _NT-5.1) 1.46 +UNAME_S := $(shell $(UNAME) -s | $(CUT) -f1 -d_) 1.47 +ifeq ($(UNAME_S), SunOS) 1.48 PLATFORM = solaris 1.49 SLASH_JAVA = /java 1.50 ARCH = $(shell uname -p) 1.51 @@ -38,7 +60,7 @@ 1.52 ARCH=i586 1.53 endif 1.54 endif 1.55 -ifeq ($(OSNAME), Linux) 1.56 +ifeq ($(UNAME_S), Linux) 1.57 PLATFORM = linux 1.58 SLASH_JAVA = /java 1.59 ARCH = $(shell uname -m) 1.60 @@ -46,7 +68,7 @@ 1.61 ARCH = i586 1.62 endif 1.63 endif 1.64 -ifeq ($(OSNAME), Darwin) 1.65 +ifeq ($(UNAME_S), Darwin) 1.66 PLATFORM = bsd 1.67 SLASH_JAVA = /java 1.68 ARCH = $(shell uname -m) 1.69 @@ -54,7 +76,7 @@ 1.70 ARCH = i586 1.71 endif 1.72 endif 1.73 -ifeq ($(findstring BSD,$(OSNAME)), BSD) 1.74 +ifeq ($(findstring BSD,$(UNAME_S)), BSD) 1.75 PLATFORM = bsd 1.76 SLASH_JAVA = /java 1.77 ARCH = $(shell uname -m) 1.78 @@ -63,12 +85,12 @@ 1.79 endif 1.80 endif 1.81 ifeq ($(PLATFORM),) 1.82 - # detect wether we're running in MKS or cygwin 1.83 - ifeq ($(OSNAME), Windows_NT) # MKS 1.84 + # detect whether we're running in MKS or cygwin 1.85 + ifeq ($(UNAME_S), Windows_NT) # MKS 1.86 GETMIXEDPATH=dosname -s 1.87 endif 1.88 - ifeq ($(findstring CYGWIN,$(OSNAME)), CYGWIN) 1.89 - GETMIXEDPATH=cygpath -m -s 1.90 + ifeq ($(findstring CYGWIN,$(UNAME_S)), CYGWIN) 1.91 + GETMIXEDPATH=cygpath -m 1.92 endif 1.93 PLATFORM = windows 1.94 SLASH_JAVA = J: 1.95 @@ -92,13 +114,6 @@ 1.96 SLASH_JAVA = $(ALT_SLASH_JAVA) 1.97 endif 1.98 1.99 -# Utilities used 1.100 -CD = cd 1.101 -CP = cp 1.102 -ECHO = echo 1.103 -MKDIR = mkdir 1.104 -ZIP = zip 1.105 - 1.106 # Root of this test area (important to use full paths in some places) 1.107 TEST_ROOT := $(shell pwd) 1.108 1.109 @@ -136,21 +151,82 @@ 1.110 endif 1.111 1.112 # How to create the test bundle (pass or fail, we want to create this) 1.113 -BUNDLE_UP = ( $(MKDIR) -p `dirname $(ARCHIVE_BUNDLE)` \ 1.114 - && $(CD) $(ABS_TEST_OUTPUT_DIR) \ 1.115 - && $(ZIP) -q -r $(ARCHIVE_BUNDLE) . ) 1.116 -BUNDLE_UP_FAILED = ( exitCode=$$? && $(BUNDLE_UP) && exit $${exitCode} ) 1.117 +# Follow command with ";$(BUNDLE_UP_AND_EXIT)", so it always gets executed. 1.118 +ZIP_UP_RESULTS = ( $(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)` \ 1.119 + && $(CD) $(ABS_TEST_OUTPUT_DIR) \ 1.120 + && $(CHMOD) -R a+r . \ 1.121 + && $(ZIP) -q -r $(ARCHIVE_BUNDLE) . ) 1.122 + 1.123 +# important results files 1.124 +SUMMARY_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport/text/summary.txt") 1.125 +STATS_TXT_NAME = Stats.txt 1.126 +STATS_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/$(STATS_TXT_NAME)") 1.127 +RUNLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/runlist.txt") 1.128 +PASSLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/passlist.txt") 1.129 +FAILLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/faillist.txt") 1.130 +EXITCODE = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/exitcode.txt") 1.131 + 1.132 +TESTEXIT = \ 1.133 + if [ ! -s $(EXITCODE) ] ; then \ 1.134 + $(ECHO) "ERROR: EXITCODE file not filled in."; \ 1.135 + $(ECHO) "1" > $(EXITCODE); \ 1.136 + fi ; \ 1.137 + testExitCode=`$(CAT) $(EXITCODE)`; \ 1.138 + $(ECHO) "EXIT CODE: $${testExitCode}"; \ 1.139 + exit $${testExitCode} 1.140 + 1.141 +BUNDLE_UP_AND_EXIT = \ 1.142 +( \ 1.143 + jtregExitCode=$$? && \ 1.144 + _summary="$(SUMMARY_TXT)"; \ 1.145 + $(RM) -f $(STATS_TXT) $(RUNLIST) $(PASSLIST) $(FAILLIST) $(EXITCODE); \ 1.146 + $(ECHO) "$${jtregExitCode}" > $(EXITCODE); \ 1.147 + if [ -r "$${_summary}" ] ; then \ 1.148 + $(ECHO) "Summary: $(UNIQUE_DIR)" > $(STATS_TXT); \ 1.149 + $(EXPAND) $${_summary} | $(EGREP) -v ' Not run\.' > $(RUNLIST); \ 1.150 + $(EGREP) ' Passed\.' $(RUNLIST) \ 1.151 + | $(EGREP) -v ' Error\.' \ 1.152 + | $(EGREP) -v ' Failed\.' > $(PASSLIST); \ 1.153 + ( $(EGREP) ' Failed\.' $(RUNLIST); \ 1.154 + $(EGREP) ' Error\.' $(RUNLIST); \ 1.155 + $(EGREP) -v ' Passed\.' $(RUNLIST) ) \ 1.156 + | $(SORT) | $(UNIQ) > $(FAILLIST); \ 1.157 + if [ $${jtregExitCode} != 0 -o -s $(FAILLIST) ] ; then \ 1.158 + $(EXPAND) $(FAILLIST) \ 1.159 + | $(CUT) -d' ' -f1 \ 1.160 + | $(SED) -e 's@^@FAILED: @' >> $(STATS_TXT); \ 1.161 + if [ $${jtregExitCode} = 0 ] ; then \ 1.162 + jtregExitCode=1; \ 1.163 + fi; \ 1.164 + fi; \ 1.165 + runc="`$(CAT) $(RUNLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \ 1.166 + passc="`$(CAT) $(PASSLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \ 1.167 + failc="`$(CAT) $(FAILLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \ 1.168 + exclc="FIXME CODETOOLS-7900176"; \ 1.169 + $(ECHO) "TEST STATS: name=$(UNIQUE_DIR) run=$${runc} pass=$${passc} fail=$${failc}" \ 1.170 + >> $(STATS_TXT); \ 1.171 + else \ 1.172 + $(ECHO) "Missing file: $${_summary}" >> $(STATS_TXT); \ 1.173 + fi; \ 1.174 + if [ -f $(STATS_TXT) ] ; then \ 1.175 + $(CAT) $(STATS_TXT); \ 1.176 + fi; \ 1.177 + $(ZIP_UP_RESULTS) ; \ 1.178 + $(TESTEXIT) \ 1.179 +) 1.180 1.181 ################################################################ 1.182 1.183 # Default make rule (runs jtreg_tests) 1.184 -all: jtreg_tests 1.185 +all: hotspot_all 1.186 @$(ECHO) "Testing completed successfully" 1.187 1.188 -# Support "hotspot_" prefixed test make targets too 1.189 -# The hotspot_% targets are for example invoked by the top level Makefile 1.190 +# Support "hotspot_" prefixed test make targets (too) 1.191 +# The hotspot_% targets are used by the top level Makefile 1.192 +# Unless explicitly defined below, hotspot_<x> is interpreted as a jtreg test group name 1.193 hotspot_%: 1.194 - $(MAKE) $* 1.195 + $(ECHO) "Running tests: $@" 1.196 + $(MAKE) -j 1 TEST_SELECTION=":$@" UNIQUE_DIR=$@ jtreg_tests; 1.197 1.198 # Prep for output 1.199 prep: clean 1.200 @@ -168,41 +244,64 @@ 1.201 1.202 # Expect JT_HOME to be set for jtreg tests. (home for jtreg) 1.203 ifndef JT_HOME 1.204 - JT_HOME = $(SLASH_JAVA)/re/jtreg/4.0/promoted/latest/binaries/jtreg 1.205 -endif 1.206 -ifdef JPRT_JTREG_HOME 1.207 - JT_HOME = $(JPRT_JTREG_HOME) 1.208 + JT_HOME = $(SLASH_JAVA)/re/jtreg/4.1/promoted/latest/binaries/jtreg 1.209 + ifdef JPRT_JTREG_HOME 1.210 + JT_HOME = $(JPRT_JTREG_HOME) 1.211 + endif 1.212 endif 1.213 1.214 -# Expect JPRT to set TESTDIRS to the jtreg test dirs 1.215 -JTREG_TESTDIRS = demo/jvmti/gctest demo/jvmti/hprof 1.216 +# When called from JPRT the TESTDIRS variable is set to the jtreg tests to run 1.217 ifdef TESTDIRS 1.218 - JTREG_TESTDIRS = $(TESTDIRS) 1.219 + TEST_SELECTION = $(TESTDIRS) 1.220 +endif 1.221 + 1.222 +ifdef CONCURRENCY 1.223 + EXTRA_JTREG_OPTIONS += -concurrency:$(CONCURRENCY) 1.224 endif 1.225 1.226 # Default JTREG to run 1.227 JTREG = $(JT_HOME)/bin/jtreg 1.228 1.229 +# Only run automatic tests 1.230 +JTREG_BASIC_OPTIONS += -a 1.231 +# Report details on all failed or error tests, times too 1.232 +JTREG_BASIC_OPTIONS += -v:fail,error,time 1.233 +# Retain all files for failing tests 1.234 +JTREG_BASIC_OPTIONS += -retain:fail,error 1.235 +# Ignore tests are not run and completely silent about it 1.236 +JTREG_IGNORE_OPTION = -ignore:quiet 1.237 +JTREG_BASIC_OPTIONS += $(JTREG_IGNORE_OPTION) 1.238 +# Add any extra options 1.239 +JTREG_BASIC_OPTIONS += $(EXTRA_JTREG_OPTIONS) 1.240 +# Set other vm and test options 1.241 +JTREG_TEST_OPTIONS = $(JAVA_ARGS:%=-javaoptions:%) $(JAVA_OPTIONS:%=-vmoption:%) $(JAVA_VM_ARGS:%=-vmoption:%) 1.242 + 1.243 # Option to tell jtreg to not run tests marked with "ignore" 1.244 ifeq ($(PLATFORM), windows) 1.245 JTREG_KEY_OPTION = -k:!ignore 1.246 else 1.247 JTREG_KEY_OPTION = -k:\!ignore 1.248 endif 1.249 +JTREG_BASIC_OPTIONS += $(JTREG_KEY_OPTION) 1.250 + 1.251 +# Make sure jtreg exists 1.252 +$(JTREG): $(JT_HOME) 1.253 1.254 -#EXTRA_JTREG_OPTIONS = 1.255 - 1.256 -jtreg_tests: prep $(JT_HOME) $(PRODUCT_HOME) $(JTREG) 1.257 - $(JTREG) -a -v:fail,error \ 1.258 - $(JTREG_KEY_OPTION) \ 1.259 - $(EXTRA_JTREG_OPTIONS) \ 1.260 - -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport \ 1.261 - -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTwork \ 1.262 - -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \ 1.263 - $(JAVA_OPTIONS:%=-vmoption:%) \ 1.264 - $(JTREG_TESTDIRS) \ 1.265 - || $(BUNDLE_UP_FAILED) 1.266 - $(BUNDLE_UP) 1.267 +jtreg_tests: prep $(PRODUCT_HOME) $(JTREG) 1.268 + ( \ 1.269 + ( JT_HOME=$(shell $(GETMIXEDPATH) "$(JT_HOME)"); \ 1.270 + export JT_HOME; \ 1.271 + $(shell $(GETMIXEDPATH) "$(JTREG)") \ 1.272 + $(JTREG_BASIC_OPTIONS) \ 1.273 + -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport") \ 1.274 + -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTwork") \ 1.275 + -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \ 1.276 + $(JTREG_EXCLUSIONS) \ 1.277 + $(JTREG_TEST_OPTIONS) \ 1.278 + $(TEST_SELECTION) \ 1.279 + ) ; \ 1.280 + $(BUNDLE_UP_AND_EXIT) \ 1.281 + ) 2>&1 | $(TEE) $(ABS_TEST_OUTPUT_DIR)/output.txt ; $(TESTEXIT) 1.282 1.283 PHONY_LIST += jtreg_tests 1.284 1.285 @@ -210,7 +309,7 @@ 1.286 1.287 # clienttest (make sure various basic java client options work) 1.288 1.289 -clienttest: prep $(PRODUCT_HOME) 1.290 +hotspot_clienttest clienttest: prep $(PRODUCT_HOME) 1.291 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -version 1.292 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -help 1.293 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -X 1.294 @@ -218,73 +317,27 @@ 1.295 $(RM) $(PRODUCT_HOME)/jre/bin/client/classes.jsa 1.296 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -Xshare:dump 1.297 1.298 -PHONY_LIST += clienttest 1.299 +PHONY_LIST += hotspot_clienttest clienttest 1.300 1.301 ################################################################ 1.302 1.303 # servertest (make sure various basic java server options work) 1.304 1.305 -servertest: prep $(PRODUCT_HOME) 1.306 +hotspot_servertest servertest: prep $(PRODUCT_HOME) 1.307 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -version 1.308 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -help 1.309 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -X 1.310 1.311 -PHONY_LIST += servertest 1.312 +PHONY_LIST += hotspot_servertest servertest 1.313 1.314 ################################################################ 1.315 1.316 # internalvmtests (run internal unit tests inside the VM) 1.317 1.318 -internalvmtests: prep $(PRODUCT_HOME) 1.319 +hotspot_internalvmtests internalvmtests: prep $(PRODUCT_HOME) 1.320 $(PRODUCT_HOME)/bin/java $(JAVA_OPTIONS) -XX:+ExecuteInternalVMTests -version 1.321 1.322 -PHONY_LIST += internalvmtests 1.323 - 1.324 -################################################################ 1.325 - 1.326 -# wbapitest (make sure the whitebox testing api classes work 1.327 - 1.328 -wbapitest: prep $(JT_HOME) $(PRODUCT_HOME) $(JTREG) 1.329 - $(JTREG) -a -v:fail,error \ 1.330 - $(JTREG_KEY_OPTION) \ 1.331 - $(EXTRA_JTREG_OPTIONS) \ 1.332 - -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport \ 1.333 - -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTwork \ 1.334 - -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \ 1.335 - $(JAVA_OPTIONS:%=-vmoption:%) \ 1.336 - $(shell $(GETMIXEDPATH) "$(TEST_ROOT)")/sanity \ 1.337 - || $(BUNDLE_UP_FAILED) 1.338 - $(BUNDLE_UP) 1.339 - 1.340 -PHONY_LIST += wbapitest 1.341 - 1.342 -################################################################ 1.343 - 1.344 -# packtest 1.345 - 1.346 -# Expect JPRT to set JPRT_PACKTEST_HOME. 1.347 -PACKTEST_HOME = /net/jprt-web.sfbay.sun.com/jprt/allproducts/packtest 1.348 -ifdef JPRT_PACKTEST_HOME 1.349 - PACKTEST_HOME = $(JPRT_PACKTEST_HOME) 1.350 -endif 1.351 - 1.352 -#EXTRA_PACKTEST_OPTIONS = 1.353 - 1.354 -packtest: prep $(PACKTEST_HOME)/ptest $(PRODUCT_HOME) 1.355 - ( $(CD) $(PACKTEST_HOME) && \ 1.356 - $(PACKTEST_HOME)/ptest \ 1.357 - -t "$(PRODUCT_HOME)" \ 1.358 - $(PACKTEST_STRESS_OPTION) \ 1.359 - $(EXTRA_PACKTEST_OPTIONS) \ 1.360 - -W $(ABS_TEST_OUTPUT_DIR) \ 1.361 - $(JAVA_OPTIONS:%=-J %) \ 1.362 - ) || $(BUNDLE_UP_FAILED) 1.363 - $(BUNDLE_UP) 1.364 - 1.365 -packtest_stress: PACKTEST_STRESS_OPTION=-s 1.366 -packtest_stress: packtest 1.367 - 1.368 -PHONY_LIST += packtest packtest_stress 1.369 +PHONY_LIST += hotspot_internalvmtests internalvmtests 1.370 1.371 ################################################################ 1.372 1.373 @@ -292,4 +345,3 @@ 1.374 .PHONY: all clean prep $(PHONY_LIST) 1.375 1.376 ################################################################ 1.377 -