test/Makefile

changeset 7270
8585e75970c7
parent 7204
97ad90b2712c
child 7271
a477f1af1bac
     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 -

mercurial