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 |
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 |
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 |