test/Makefile

changeset 3846
1a713bbdb09e
parent 2893
ca5783d9a597
parent 3835
19908109cb37
equal deleted inserted replaced
3828:c9a7e1d48ac3 3846:1a713bbdb09e
13 # for example build/classes or dist/lib/classes.jar. 13 # for example build/classes or dist/lib/classes.jar.
14 14
15 # JPRT 15 # JPRT
16 # JPRT may invoke this Makefile directly, as part of a langtools build, 16 # JPRT may invoke this Makefile directly, as part of a langtools build,
17 # or indirectly, via FOREST/test/Makefile, as part of a control build. 17 # or indirectly, via FOREST/test/Makefile, as part of a control build.
18
19
20 # Utilities used
21 AWK = awk
22 CAT = cat
23 CD = cd
24 CHMOD = chmod
25 CP = cp
26 CUT = cut
27 DIRNAME = dirname
28 ECHO = echo
29 EGREP = egrep
30 EXPAND = expand
31 FIND = find
32 MKDIR = mkdir
33 PWD = pwd
34 SED = sed
35 SORT = sort
36 TEE = tee
37 UNAME = uname
38 UNIQ = uniq
39 WC = wc
40 ZIP = zip
41
42 # Get OS name from uname (Cygwin inexplicably adds _NT-5.1)
43 UNAME_S := $(shell $(UNAME) -s | $(CUT) -f1 -d_)
44
45 # Commands to run on paths to make mixed paths for java on windows
46 ifeq ($(UNAME_S), CYGWIN)
47 # Location of developer shared files
48 SLASH_JAVA = J:
49 GETMIXEDPATH = cygpath -m
50 else
51 # Location of developer shared files
52 SLASH_JAVA = /java
53
54 GETMIXEDPATH=$(ECHO)
55 endif
18 56
19 # Get OS/ARCH specifics 57 # Get OS/ARCH specifics
20 OSNAME = $(shell uname -s) 58 OSNAME = $(shell uname -s)
21 ifeq ($(OSNAME), SunOS) 59 ifeq ($(OSNAME), SunOS)
22 SLASH_JAVA = /java 60 SLASH_JAVA = /java
181 ifdef JTREG_TIMEOUT_FACTOR 219 ifdef JTREG_TIMEOUT_FACTOR
182 JTREG_OPTIONS += -timeoutFactor:$(JTREG_TIMEOUT_FACTOR) 220 JTREG_OPTIONS += -timeoutFactor:$(JTREG_TIMEOUT_FACTOR)
183 endif 221 endif
184 222
185 # Default verbosity setting for jtreg 223 # Default verbosity setting for jtreg
186 JTREG_VERBOSE = fail,error,nopass 224 JTREG_VERBOSE = fail,error,summary
187 225
188 # Default verbosity setting for jck 226 # Default verbosity setting for jck
189 JCK_VERBOSE = non-pass 227 JCK_VERBOSE = non-pass
190 228
191 # Assertions: some tests show failures when assertions are enabled. 229 # Assertions: some tests show failures when assertions are enabled.
216 DEFAULT_TESTDIRS = . 254 DEFAULT_TESTDIRS = .
217 TESTDIRS = $(DEFAULT_TESTDIRS) 255 TESTDIRS = $(DEFAULT_TESTDIRS)
218 256
219 # Root of all test results 257 # Root of all test results
220 TEST_OUTPUT_DIR = $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)/test/langtools 258 TEST_OUTPUT_DIR = $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)/test/langtools
221 ABS_TEST_OUTPUT_DIR := \ 259 ifdef ALT_OUTPUTDIR
222 $(shell mkdir -p $(TEST_OUTPUT_DIR); \ 260 ABS_OUTPUTDIR := $(shell cd $(ALT_OUTPUTDIR) && pwd $(CYGPATH))
223 cd $(TEST_OUTPUT_DIR); \ 261 else
224 pwd $(CYGPATH)) 262 ABS_OUTPUTDIR := $(shell mkdir -p $(TEST_OUTPUT_DIR); cd $(TEST_OUTPUT_DIR) && pwd $(CYGPATH))
263 endif
264 ABS_TEST_OUTPUT_DIR := $(ABS_OUTPUTDIR)/testoutput/$(UNIQUE_DIR)
225 # Subdirectories for different test runs 265 # Subdirectories for different test runs
226 JTREG_OUTPUT_DIR = $(ABS_TEST_OUTPUT_DIR)/jtreg 266 JTREG_OUTPUT_DIR = $(ABS_OUTPUTDIR)/jtreg
227 JCK_COMPILER_OUTPUT_DIR = $(ABS_TEST_OUTPUT_DIR)/jck-compiler 267 JCK_COMPILER_OUTPUT_DIR = $(ABS_OUTPUTDIR)/jck-compiler
228 JCK_RUNTIME_OUTPUT_DIR = $(ABS_TEST_OUTPUT_DIR)/jck-runtime-Xcompile 268 JCK_RUNTIME_OUTPUT_DIR = $(ABS_OUTPUTDIR)/jck-runtime-Xcompile
229 269
230 # Default make rule -- warning, may take a while 270 # Default make rule -- warning, may take a while
231 all: $(JPRT_CLEAN) jtreg-tests jck-compiler-tests jck-runtime-tests $(JPRT_ARCHIVE_BUNDLE) all-summary 271 all: $(JPRT_CLEAN) jtreg-tests jck-compiler-tests jck-runtime-tests $(JPRT_ARCHIVE_BUNDLE) all-summary
232 @echo "Testing completed successfully" 272 @echo "Testing completed successfully"
233 273
237 jck-compiler: $(JPRT_CLEAN) jck-compiler-tests $(JPRT_ARCHIVE_BUNDLE) jck-compiler-summary 277 jck-compiler: $(JPRT_CLEAN) jck-compiler-tests $(JPRT_ARCHIVE_BUNDLE) jck-compiler-summary
238 @echo "Testing completed successfully" 278 @echo "Testing completed successfully"
239 279
240 jck-runtime: $(JPRT_CLEAN) jck-runtime-tests $(JPRT_ARCHIVE_BUNDLE) jck-runtime-summary 280 jck-runtime: $(JPRT_CLEAN) jck-runtime-tests $(JPRT_ARCHIVE_BUNDLE) jck-runtime-summary
241 @echo "Testing completed successfully" 281 @echo "Testing completed successfully"
282
283 tier1: jtreg-tests-tier1
242 284
243 # for use with JPRT -testrule 285 # for use with JPRT -testrule
244 all: JTREG_TESTDIRS = . 286 all: JTREG_TESTDIRS = .
245 jtreg: JTREG_TESTDIRS = . 287 jtreg: JTREG_TESTDIRS = .
246 apt: JTREG_TESTDIRS = tools/apt 288 apt: JTREG_TESTDIRS = tools/apt
303 fi 345 fi
304 346
305 # Check to make sure these directories exist 347 # Check to make sure these directories exist
306 check-jtreg: $(PRODUCT_HOME) $(JTREG) 348 check-jtreg: $(PRODUCT_HOME) $(JTREG)
307 349
308
309 # Run JCK-compiler tests 350 # Run JCK-compiler tests
310 # 351 #
311 # JCK_HOME 352 # JCK_HOME
312 # Installed location of JCK: should include JCK-compiler, and JCK-extras 353 # Installed location of JCK: should include JCK-compiler, and JCK-extras
313 # Default is JCK 8. 354 # Default is JCK 8.
432 rm -f $(JPRT_ARCHIVE_BUNDLE) 473 rm -f $(JPRT_ARCHIVE_BUNDLE)
433 474
434 # Used to force a target rules to run 475 # Used to force a target rules to run
435 FRC: 476 FRC:
436 477
478 #
479 # Tier 1 langtools testing logic
480 #
481
482 ARCHIVE_BUNDLE = $(ABS_TEST_OUTPUT_DIR)/ARCHIVE_BUNDLE.zip
483
484 # How to create the test bundle (pass or fail, we want to create this)
485 # Follow command with ";$(BUNDLE_UP_AND_EXIT)", so it always gets executed.
486 ZIP_UP_RESULTS = ( $(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)` \
487 && $(CD) $(ABS_TEST_OUTPUT_DIR) \
488 && $(CHMOD) -R a+r . \
489 && $(ZIP) -q -r $(ARCHIVE_BUNDLE) . )
490
491 # important results files
492 SUMMARY_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport/text/summary.txt")
493 STATS_TXT_NAME = Stats.txt
494 STATS_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/$(STATS_TXT_NAME)")
495 RUNLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/runlist.txt")
496 PASSLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/passlist.txt")
497 FAILLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/faillist.txt")
498 EXITCODE = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/exitcode.txt")
499
500 TESTEXIT = \
501 if [ ! -s $(EXITCODE) ] ; then \
502 $(ECHO) "ERROR: EXITCODE file not filled in."; \
503 $(ECHO) "1" > $(EXITCODE); \
504 fi ; \
505 testExitCode=`$(CAT) $(EXITCODE)`; \
506 $(ECHO) "EXIT CODE: $${testExitCode}"; \
507 exit $${testExitCode}
508
509 BUNDLE_UP_AND_EXIT = \
510 ( \
511 jtregExitCode=$$? && \
512 _summary="$(SUMMARY_TXT)"; \
513 $(RM) -f $(STATS_TXT) $(RUNLIST) $(PASSLIST) $(FAILLIST) $(EXITCODE); \
514 $(ECHO) "$${jtregExitCode}" > $(EXITCODE); \
515 if [ -r "$${_summary}" ] ; then \
516 $(ECHO) "Summary: $(UNIQUE_DIR)" > $(STATS_TXT); \
517 $(EXPAND) $${_summary} | $(EGREP) -v ' Not run\.' > $(RUNLIST); \
518 $(EGREP) ' Passed\.' $(RUNLIST) \
519 | $(EGREP) -v ' Error\.' \
520 | $(EGREP) -v ' Failed\.' > $(PASSLIST); \
521 ( $(EGREP) ' Failed\.' $(RUNLIST); \
522 $(EGREP) ' Error\.' $(RUNLIST); \
523 $(EGREP) -v ' Passed\.' $(RUNLIST) ) \
524 | $(SORT) | $(UNIQ) > $(FAILLIST); \
525 if [ $${jtregExitCode} != 0 -o -s $(FAILLIST) ] ; then \
526 $(EXPAND) $(FAILLIST) \
527 | $(CUT) -d' ' -f1 \
528 | $(SED) -e 's@^@FAILED: @' >> $(STATS_TXT); \
529 if [ $${jtregExitCode} = 0 ] ; then \
530 jtregExitCode=1; \
531 fi; \
532 fi; \
533 runc="`$(CAT) $(RUNLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
534 passc="`$(CAT) $(PASSLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
535 failc="`$(CAT) $(FAILLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
536 exclc="FIXME CODETOOLS-7900176"; \
537 $(ECHO) "TEST STATS: name=$(UNIQUE_DIR) run=$${runc} pass=$${passc} fail=$${failc}" \
538 >> $(STATS_TXT); \
539 else \
540 $(ECHO) "Missing file: $${_summary}" >> $(STATS_TXT); \
541 fi; \
542 if [ -f $(STATS_TXT) ] ; then \
543 $(CAT) $(STATS_TXT); \
544 fi; \
545 $(ZIP_UP_RESULTS) ; \
546 $(TESTEXIT) \
547 )
548
549 prep-tier1:
550 @$(MKDIR) -p $(ABS_TEST_OUTPUT_DIR)
551
552 # Run tier1 jtreg
553 jtreg-tests-tier1: check-jtreg prep-tier1 FRC
554 ( \
555 ( JT_HOME=$(shell $(GETMIXEDPATH) "$(JT_HOME)"); \
556 export JT_HOME; \
557 $(shell $(GETMIXEDPATH) "$(JTREG)") \
558 -J-Xmx512m \
559 -vmoption:-Xmx768m \
560 -a -ignore:quiet $(if $(JTREG_VERBOSE),-v:$(JTREG_VERBOSE)) \
561 -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport") \
562 -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTwork") \
563 -jdk:$(shell $(GETMIXEDPATH) "$(TESTJAVA)") \
564 $(JAVA_ARGS:%=-vmoption:%) \
565 $(JTREG_OPTIONS) \
566 :langtools_tier1 \
567 ) ; \
568 $(BUNDLE_UP_AND_EXIT) \
569 ) 2>&1 | $(TEE) $(ABS_TEST_OUTPUT_DIR)/output.txt ; $(TESTEXIT)
570
437 # Phony targets (e.g. these are not filenames) 571 # Phony targets (e.g. these are not filenames)
438 .PHONY: all clean \ 572 .PHONY: all clean \
439 jtreg javac javadoc javah javap jdeps jtreg-tests jtreg-summary check-jtreg \ 573 jtreg javac javadoc javah javap jdeps jtreg-tests jtreg-summary check-jtreg \
440 jck-compiler jck-compiler-tests jck-compiler-summary \ 574 jck-compiler jck-compiler-tests jck-compiler-summary \
441 jck-runtime jck-runtime-tests jck-runtime-summary check-jck 575 jck-runtime jck-runtime-tests jck-runtime-summary check-jck prep-tier1 \
576 jtreg-tests-tier1 tier1
442 577
443 # No use of suffix rules 578 # No use of suffix rules
444 .SUFFIXES: 579 .SUFFIXES:
445 580

mercurial