1 # 2 # Copyright 1995-2008 Sun Microsystems, Inc. All Rights Reserved. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 # 5 # This code is free software; you can redistribute it and/or modify it 6 # under the terms of the GNU General Public License version 2 only, as 7 # published by the Free Software Foundation. Sun designates this 8 # particular file as subject to the "Classpath" exception as provided 9 # by Sun in the LICENSE file that accompanied this code. 10 # 11 # This code is distributed in the hope that it will be useful, but WITHOUT 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 # version 2 for more details (a copy is included in the LICENSE file that 15 # accompanied this code). 16 # 17 # You should have received a copy of the GNU General Public License version 18 # 2 along with this work; if not, write to the Free Software Foundation, 19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 # 21 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 22 # CA 95054 USA or visit www.sun.com if you need additional information or 23 # have any questions. 24 # 25 26 # 27 # Makefile to run various jdk tests 28 # 29 30 # Get OS/ARCH specifics 31 OSNAME = $(shell uname -s) 32 33 # Commands to run on paths to make mixed paths for java on windows 34 GETMIXEDPATH=echo 35 36 # Location of developer shared files 37 SLASH_JAVA = /java 38 39 # Platform specific settings 40 ifeq ($(OSNAME), SunOS) 41 PLATFORM = solaris 42 ARCH = $(shell uname -p) 43 ifeq ($(ARCH), i386) 44 ARCH=i586 45 endif 46 endif 47 ifeq ($(OSNAME), Linux) 48 PLATFORM = linux 49 ARCH = $(shell uname -m) 50 ifeq ($(ARCH), i386) 51 ARCH=i586 52 endif 53 endif 54 55 # Cannot trust uname output 56 ifneq ($(PROCESSOR_IDENTIFIER), ) 57 PLATFORM = windows 58 SLASH_JAVA = J: 59 # A variety of ways to say X64 arch :^( 60 PROC_ARCH:=$(word 1, $(PROCESSOR_IDENTIFIER)) 61 PROC_ARCH:=$(subst x86,X86,$(PROC_ARCH)) 62 PROC_ARCH:=$(subst x64,X64,$(PROC_ARCH)) 63 PROC_ARCH:=$(subst AMD64,X64,$(PROC_ARCH)) 64 PROC_ARCH:=$(subst amd64,X64,$(PROC_ARCH)) 65 PROC_ARCH:=$(subst EM64T,X64,$(PROC_ARCH)) 66 PROC_ARCH:=$(subst em64t,X64,$(PROC_ARCH)) 67 PROC_ARCH:=$(subst intel64,X64,$(PROC_ARCH)) 68 PROC_ARCH:=$(subst Intel64,X64,$(PROC_ARCH)) 69 PROC_ARCH:=$(subst INTEL64,X64,$(PROC_ARCH)) 70 PROC_ARCH:=$(subst ia64,IA64,$(PROC_ARCH)) 71 ifeq ($(PROC_ARCH),IA64) 72 ARCH = ia64 73 else 74 ifeq ($(PROC_ARCH),X64) 75 ARCH = x64 76 else 77 ARCH = i586 78 endif 79 endif 80 EXESUFFIX = .exe 81 # These need to be different depending on MKS or CYGWIN 82 ifeq ($(findstring cygdrive,$(shell (cd C:/ && pwd))), ) 83 GETMIXEDPATH=dosname -s 84 else 85 GETMIXEDPATH=cygpath -m -s 86 endif 87 endif 88 89 # Utilities used 90 CD = cd 91 CP = cp 92 ECHO = echo 93 MKDIR = mkdir 94 ZIP = zip 95 96 # Root of this test area (important to use full paths in some places) 97 TEST_ROOT := $(shell pwd) 98 99 # Root of all test results 100 ifdef ALT_OUTPUTDIR 101 ABS_OUTPUTDIR = $(ALT_OUTPUTDIR) 102 else 103 ABS_OUTPUTDIR = $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH) 104 endif 105 ABS_BUILD_ROOT = $(ABS_OUTPUTDIR) 106 ABS_TEST_OUTPUT_DIR := $(ABS_BUILD_ROOT)/testoutput 107 108 # Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test) 109 ifndef PRODUCT_HOME 110 # Try to use j2sdk-image if it exists 111 ABS_JDK_IMAGE = $(ABS_BUILD_ROOT)/j2sdk-image 112 PRODUCT_HOME := \ 113 $(shell \ 114 if [ -d $(ABS_JDK_IMAGE) ] ; then \ 115 $(ECHO) "$(ABS_JDK_IMAGE)"; \ 116 else \ 117 $(ECHO) "$(ABS_BUILD_ROOT)" ; \ 118 fi) 119 PRODUCT_HOME := $(PRODUCT_HOME) 120 endif 121 122 # Expect JPRT to set JPRT_PRODUCT_ARGS (e.g. -server etc.) 123 # Should be passed into 'java' only. 124 ifdef JPRT_PRODUCT_ARGS 125 JAVA_ARGS = $(JPRT_PRODUCT_ARGS) 126 endif 127 128 # Expect JPRT to set JPRT_PRODUCT_VM_ARGS (e.g. -Xcomp etc.) 129 # Should be passed into anything running the vm (java, javac, javadoc, ...). 130 ifdef JPRT_PRODUCT_VM_ARGS 131 JAVA_VM_ARGS = $(JPRT_PRODUCT_VM_ARGS) 132 endif 133 134 # Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results) 135 ARCHIVE_BUNDLE = $(ABS_TEST_OUTPUT_DIR)/ARCHIVE_BUNDLE.zip 136 ifdef JPRT_ARCHIVE_BUNDLE 137 ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE) 138 endif 139 140 # How to create the test bundle (pass or fail, we want to create this) 141 # Follow command with ";$(BUNDLE_UP_AND_EXIT)", so it always gets executed. 142 ZIP_UP_RESULTS = ( $(MKDIR) -p `dirname $(ARCHIVE_BUNDLE)` \ 143 && $(CD) $(ABS_TEST_OUTPUT_DIR) \ 144 && $(ZIP) -q -r $(ARCHIVE_BUNDLE) . ) 145 BUNDLE_UP_AND_EXIT = ( exitCode=$$? && $(ZIP_UP_RESULTS) && exit $${exitCode} ) 146 147 ################################################################ 148 149 # Default make rule (runs jtreg_tests) 150 all: jtreg_tests 151 @$(ECHO) "Testing completed successfully" 152 153 # Prep for output 154 prep: clean 155 @$(MKDIR) -p $(ABS_TEST_OUTPUT_DIR) 156 @$(MKDIR) -p `dirname $(ARCHIVE_BUNDLE)` 157 158 # Cleanup 159 clean: 160 $(RM) -r $(ABS_TEST_OUTPUT_DIR) 161 $(RM) $(ARCHIVE_BUNDLE) 162 163 ################################################################ 164 165 # jtreg tests 166 167 # Expect JT_HOME to be set for jtreg tests. (home for jtreg) 168 JT_HOME = $(SLASH_JAVA)/re/jtreg/4.0/promoted/latest/binaries/jtreg 169 ifdef JPRT_JTREG_HOME 170 JT_HOME = $(JPRT_JTREG_HOME) 171 endif 172 173 # Expect JPRT to set TESTDIRS to the jtreg test dirs 174 ifndef TESTDIRS 175 TESTDIRS = demo/jvmti/gctest demo/jvmti/hprof 176 endif 177 178 # Default JTREG to run (win32 script works for everybody) 179 JTREG = $(JT_HOME)/win32/bin/jtreg 180 181 jtreg_tests: prep $(JT_HOME) $(PRODUCT_HOME) $(JTREG) 182 $(RM) $(JTREG).orig 183 cp $(JTREG) $(JTREG).orig 184 $(RM) $(JTREG) 185 sed -e 's@-J\*@-J-*@' $(JTREG).orig > $(JTREG) 186 chmod a+x $(JTREG) 187 ( JT_HOME=$(shell $(GETMIXEDPATH) "$(JT_HOME)"); \ 188 export JT_HOME; \ 189 $(shell $(GETMIXEDPATH) "$(JTREG)") \ 190 -a -v:fail,error \ 191 -ignore:quiet \ 192 -timeoutFactor:2 \ 193 $(EXTRA_JTREG_OPTIONS) \ 194 -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTreport \ 195 -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)")/JTwork \ 196 -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \ 197 $(JAVA_ARGS:%=-javaoptions:%) \ 198 $(JAVA_VM_ARGS:%=-vmoption:%) \ 199 $(TESTDIRS) \ 200 ) ; $(BUNDLE_UP_AND_EXIT) 201 202 PHONY_LIST += jtreg_tests 203 204 ################################################################ 205 206 # packtest 207 208 # Expect JPRT to set JPRT_PACKTEST_HOME. 209 PACKTEST_HOME = /net/jprt-web.sfbay.sun.com/jprt/allproducts/packtest 210 ifdef JPRT_PACKTEST_HOME 211 PACKTEST_HOME = $(JPRT_PACKTEST_HOME) 212 endif 213 214 packtest: prep $(PACKTEST_HOME)/ptest $(PRODUCT_HOME) 215 ( $(CD) $(PACKTEST_HOME) && \ 216 $(PACKTEST_HOME)/ptest \ 217 -t "$(PRODUCT_HOME)" \ 218 $(PACKTEST_STRESS_OPTION) \ 219 $(EXTRA_PACKTEST_OPTIONS) \ 220 -W $(ABS_TEST_OUTPUT_DIR) \ 221 $(JAVA_ARGS:%=-J %) \ 222 $(JAVA_VM_ARGS:%=-J %) \ 223 ) ; $(BUNDLE_UP_AND_EXIT) 224 225 packtest_stress: PACKTEST_STRESS_OPTION=-s 226 packtest_stress: packtest 227 228 PHONY_LIST += packtest packtest_stress 229 230 ################################################################ 231 232 # perftest to collect statistics 233 234 # Expect JPRT to set JPRT_PACKTEST_HOME. 235 PERFTEST_HOME = ${TEST_ROOT}/perf 236 ifdef JPRT_PERFTEST_HOME 237 PERFTEST_HOME = $(JPRT_PERFTEST_HOME) 238 endif 239 240 perftest: ( $(PERFTEST_HOME)/perftest \ 241 -t $(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \ 242 -w $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)") \ 243 -h $(PERFTEST_HOME) \ 244 ) ; $(BUNDLE_UP_AND_EXIT) 245 246 247 PHONY_LIST += perftest 248 249 ################################################################ 250 251 # vmsqe tests 252 253 # Expect JPRT to set JPRT_VMSQE_HOME. 254 VMSQE_HOME = /java/sqe/comp/vm/testbase/sqe/vm/current/build/latest/vm 255 ifdef JPRT_VMSQE_HOME 256 VMSQE_HOME = $(JPRT_VMSQE_HOME) 257 endif 258 259 # Expect JPRT to set JPRT_RUNVMSQE_HOME. 260 RUNVMSQE_HOME = /net/jprt-web.sfbay.sun.com/jprt/allproducts/runvmsqe 261 ifdef JPRT_RUNVMSQE_HOME 262 RUNVMSQE_HOME = $(JPRT_RUNVMSQE_HOME) 263 endif 264 265 # Expect JPRT to set JPRT_TONGA3_HOME. 266 TONGA3_HOME = /java/sqe//tools/gtee/harness/tonga 267 ifdef JPRT_TONGA3_HOME 268 TONGA3_HOME = $(JPRT_TONGA3_HOME) 269 endif 270 271 RUNVMSQE_BIN = $(RUNVMSQE_HOME)/bin/runvmsqe 272 273 vmsqe_tests: prep $(VMSQE_HOME)/vm $(TONGA3_HOME) $(RUNVMSQE_BIN) $(PRODUCT_HOME) 274 $(RM) -r $(ABS_TEST_OUTPUT_DIR)/vmsqe 275 ( $(CD) $(ABS_TEST_OUTPUT_DIR) && \ 276 $(RUNVMSQE_BIN) \ 277 -jdk "$(PRODUCT_HOME)" \ 278 -o "$(ABS_TEST_OUTPUT_DIR)/vmsqe" \ 279 -testbase "$(VMSQE_HOME)/vm" \ 280 -tonga "$(TONGA3_HOME)" \ 281 -tongajdk "$(ALT_BOOTDIR)" \ 282 $(JAVA_ARGS) \ 283 $(JAVA_VM_ARGS) \ 284 $(RUNVMSQE_TEST_OPTION) \ 285 $(EXTRA_RUNVMSQE_OPTIONS) \ 286 ) ; $(BUNDLE_UP_AND_EXIT) 287 288 vmsqe_jdwp: RUNVMSQE_TEST_OPTION=-jdwp 289 vmsqe_jdwp: vmsqe_tests 290 291 vmsqe_jdi: RUNVMSQE_TEST_OPTION=-jdi 292 vmsqe_jdi: vmsqe_tests 293 294 vmsqe_jdb: RUNVMSQE_TEST_OPTION=-jdb 295 vmsqe_jdb: vmsqe_tests 296 297 vmsqe_quick-jdi: RUNVMSQE_TEST_OPTION=-quick-jdi 298 vmsqe_quick-jdi: vmsqe_tests 299 300 vmsqe_sajdi: RUNVMSQE_TEST_OPTION=-sajdi 301 vmsqe_sajdi: vmsqe_tests 302 303 vmsqe_jvmti: RUNVMSQE_TEST_OPTION=-jvmti 304 vmsqe_jvmti: vmsqe_tests 305 306 vmsqe_hprof: RUNVMSQE_TEST_OPTION=-hprof 307 vmsqe_hprof: vmsqe_tests 308 309 vmsqe_monitoring: RUNVMSQE_TEST_OPTION=-monitoring 310 vmsqe_monitoring: vmsqe_tests 311 312 PHONY_LIST += vmsqe_jdwp vmsqe_jdi vmsqe_jdb vmsqe_quick-jdi vmsqe_sajdi \ 313 vmsqe_jvmti vmsqe_hprof vmsqe_monitoring vmsqe_tests 314 315 ################################################################ 316 317 # jck tests 318 319 JCK_WORK_DIR = $(ABS_TEST_OUTPUT_DIR)/JCKwork 320 JCK_REPORT_DIR = $(ABS_TEST_OUTPUT_DIR)/JCKreport 321 JCK_PROPERTIES = $(ABS_TEST_OUTPUT_DIR)/jck.properties 322 JCK_CONFIG = $(ABS_TEST_OUTPUT_DIR)/jck.config 323 324 JCK_JAVA_EXE = $(PRODUCT_HOME)/bin/java$(EXESUFFIX) 325 326 JCK_JAVATEST_JAR = $(JCK_HOME)/lib/javatest.jar 327 JCK_JAVATEST = $(ALT_BOOTDIR)/bin/java -jar $(JCK_JAVATEST_JAR) 328 329 $(JCK_CONFIG): $(TEST_ROOT)/JCK-$(JCK_BUNDLE_NAME)-$(JCK_RELEASE)-base.jti 330 $(RM) $@ 331 $(MKDIR) -p $(@D) 332 $(CP) $< $@ 333 334 $(JCK_PROPERTIES): $(PRODUCT_HOME) $(JCK_JAVA_EXE) 335 $(RM) $@ 336 $(MKDIR) -p $(@D) 337 $(ECHO) "jck.env.compiler.compRefExecute.cmdAsFile=$(JCK_JAVA_EXE)" >> $@ 338 $(ECHO) "jck.env.compiler.compRefExecute.systemRoot=$(SYSTEMROOT)" >> $@ 339 $(ECHO) "jck.env.compiler.testCompile.testCompileAPImultiJVM.cmdAsFile=$(JCK_JAVA_EXE)" >> $@ 340 $(ECHO) "jck.tests.tests=$(JCK_BUNDLE_TESTDIRS)" >> $@ 341 342 jck_tests: prep $(JCK_HOME) $(JCK_PROPERTIES) $(JCK_CONFIG) $(JCK_JAVATEST_JAR) 343 $(MKDIR) -p $(JCK_WORK_DIR) 344 ( $(JCK_JAVATEST) \ 345 -verbose:commands,non-pass \ 346 -testSuite $(JCK_HOME) \ 347 -workDir $(JCK_WORK_DIR) \ 348 -config $(JCK_CONFIG) \ 349 -set -file $(JCK_PROPERTIES) \ 350 -runtests \ 351 -writeReport $(JCK_REPORT_DIR) \ 352 ) ; $(BUNDLE_UP_AND_EXIT) 353 354 PHONY_LIST += jck_tests 355 356 ################################################################ 357 358 # jck6 tests 359 360 JCK6_RELEASE = 6b 361 JCK6_DEFAULT_HOME = $(SLASH_JAVA)/re/jck/$(JCK6_RELEASE)/archive/fcs/binaries 362 363 # Expect JPRT to set JPRT_JCK6COMPILER_HOME. 364 JCK6COMPILER_HOME = $(JCK6_DEFAULT_HOME)/JCK-compiler-$(JCK6_RELEASE) 365 ifdef JPRT_JCK6COMPILER_HOME 366 JCK6COMPILER_HOME = $(JPRT_JCK6COMPILER_HOME) 367 endif 368 369 # Expect JPRT to set JPRT_JCK6RUNTIME_HOME. 370 JCK6RUNTIME_HOME = $(JCK6_DEFAULT_HOME)/JCK-runtime-$(JCK6_RELEASE) 371 ifdef JPRT_JCK6RUNTIME_HOME 372 JCK6RUNTIME_HOME = $(JPRT_JCK6RUNTIME_HOME) 373 endif 374 375 # Expect JPRT to set JPRT_JCK6DEVTOOLS_HOME. 376 JCK6DEVTOOLS_HOME = $(JCK6_DEFAULT_HOME)/JCK-devtools-$(JCK6_RELEASE) 377 ifdef JPRT_JCK6DEVTOOLS_HOME 378 JCK6DEVTOOLS_HOME = $(JPRT_JCK6DEVTOOLS_HOME) 379 endif 380 381 jck6_tests: JCK_HOME=$(JCK6_HOME) 382 jck6_tests: JCK_RELEASE=$(JCK6_RELEASE) 383 jck6_tests: jck_tests 384 385 jck6compiler: JCK6_HOME=$(JCK6COMPILER_HOME) 386 jck6compiler: JCK_BUNDLE_NAME=compiler 387 jck6compiler: jck6_tests 388 389 jck6compiler_lang: JCK_BUNDLE_TESTDIRS=lang 390 jck6compiler_lang: jck6compiler 391 392 jck6runtime: JCK6_HOME=$(JCK6RUNTIME_HOME) 393 jck6runtime: JCK_BUNDLE_NAME=runtime 394 jck6runtime: jck6_tests 395 396 jck6runtime_lang: JCK_BUNDLE_TESTDIRS=lang 397 jck6runtime_lang: jck6runtime 398 399 jck6devtools: JCK6_HOME=$(JCK6DEVTOOLS_HOME) 400 jck6devtools: JCK_BUNDLE_NAME=devtools 401 jck6devtools: jck6_tests 402 403 jck6devtools_lang: JCK_BUNDLE_TESTDIRS=lang 404 jck6devtools_lang: jck6devtools 405 406 PHONY_LIST += jck6compiler jck6runtime jck6devtools jck6_tests \ 407 jck6compiler_lang jck6runtime_lang jck6devtools_lang 408 409 ################################################################ 410 411 # jck7 tests 412 413 JCK7_RELEASE = 7 414 JCK7_DEFAULT_HOME = $(SLASH_JAVA)/re/jck/$(JCK7_RELEASE)/archive/fcs/binaries 415 416 # Expect JPRT to set JPRT_JCK7COMPILER_HOME. 417 JCK7COMPILER_HOME = $(JCK7_DEFAULT_HOME)/JCK-compiler-$(JCK7_RELEASE) 418 ifdef JPRT_JCK7COMPILER_HOME 419 JCK7COMPILER_HOME = $(JPRT_JCK7COMPILER_HOME) 420 endif 421 422 # Expect JPRT to set JPRT_JCK7RUNTIME_HOME. 423 JCK7RUNTIME_HOME = $(JCK7_DEFAULT_HOME)/JCK-runtime-$(JCK7_RELEASE) 424 ifdef JPRT_JCK7RUNTIME_HOME 425 JCK7RUNTIME_HOME = $(JPRT_JCK7RUNTIME_HOME) 426 endif 427 428 # Expect JPRT to set JPRT_JCK7DEVTOOLS_HOME. 429 JCK7DEVTOOLS_HOME = $(JCK7_DEFAULT_HOME)/JCK-devtools-$(JCK7_RELEASE) 430 ifdef JPRT_JCK7DEVTOOLS_HOME 431 JCK7DEVTOOLS_HOME = $(JPRT_JCK7DEVTOOLS_HOME) 432 endif 433 434 jck7_tests: JCK_HOME=$(JCK7_HOME) 435 jck7_tests: JCK_RELEASE=$(JCK7_RELEASE) 436 jck7_tests: jck_tests 437 438 jck7compiler: JCK7_HOME=$(JCK7COMPILER_HOME) 439 jck7compiler: JCK_BUNDLE_NAME=compiler 440 jck7compiler: jck7_tests 441 442 jck7compiler_lang: JCK_BUNDLE_TESTDIRS=lang 443 jck7compiler_lang: jck7compiler 444 445 jck7runtime: JCK7_HOME=$(JCK7RUNTIME_HOME) 446 jck7runtime: JCK_BUNDLE_NAME=runtime 447 jck7runtime: jck7_tests 448 449 jck7runtime_lang: JCK_BUNDLE_TESTDIRS=lang 450 jck7runtime_lang: jck7runtime 451 452 jck7devtools: JCK7_HOME=$(JCK7DEVTOOLS_HOME) 453 jck7devtools: JCK_BUNDLE_NAME=devtools 454 jck7devtools: jck7_tests 455 456 jck7devtools_lang: JCK_BUNDLE_TESTDIRS=lang 457 jck7devtools_lang: jck7devtools 458 459 PHONY_LIST += jck7compiler jck7runtime jck7devtools jck7_tests \ 460 jck7compiler_lang jck7runtime_lang jck7devtools_lang 461 462 ################################################################ 463 464 # Phony targets (e.g. these are not filenames) 465 .PHONY: all clean prep $(PHONY_LIST) 466 467 ################################################################ 468