66 ################################################################################ |
66 ################################################################################ |
67 |
67 |
68 TEST_RESULTS_DIR := $(OUTPUTDIR)/test-results |
68 TEST_RESULTS_DIR := $(OUTPUTDIR)/test-results |
69 TEST_SUPPORT_DIR := $(OUTPUTDIR)/test-support |
69 TEST_SUPPORT_DIR := $(OUTPUTDIR)/test-support |
70 TEST_SUMMARY := $(TEST_RESULTS_DIR)/test-summary.txt |
70 TEST_SUMMARY := $(TEST_RESULTS_DIR)/test-summary.txt |
|
71 TEST_LAST_IDS := $(TEST_SUPPORT_DIR)/test-last-ids.txt |
71 |
72 |
72 ifeq ($(CUSTOM_ROOT), ) |
73 ifeq ($(CUSTOM_ROOT), ) |
73 JTREG_TOPDIR := $(TOPDIR) |
74 JTREG_TOPDIR := $(TOPDIR) |
74 else |
75 else |
75 JTREG_TOPDIR := $(CUSTOM_ROOT) |
76 JTREG_TOPDIR := $(CUSTOM_ROOT) |
226 $(eval TEST_NAME := :$(TEST_NAME)) \ |
227 $(eval TEST_NAME := :$(TEST_NAME)) \ |
227 ) \ |
228 ) \ |
228 $(if $(findstring :, $(TEST_NAME)), \ |
229 $(if $(findstring :, $(TEST_NAME)), \ |
229 $(if $(filter :%, $(TEST_NAME)), \ |
230 $(if $(filter :%, $(TEST_NAME)), \ |
230 $(eval TEST_GROUP := $(patsubst :%, %, $(TEST_NAME))) \ |
231 $(eval TEST_GROUP := $(patsubst :%, %, $(TEST_NAME))) \ |
231 $(eval TEST_ROOTS := $(JTREG_TESTROOTS)) \ |
232 $(eval TEST_ROOTS := $(foreach test_root, $(JTREG_TESTROOTS), \ |
|
233 $(call CleanupJtregPath, $(test_root)))) \ |
232 , \ |
234 , \ |
233 $(eval TEST_PATH := $(word 1, $(subst :, $(SPACE), $(TEST_NAME)))) \ |
235 $(eval TEST_PATH := $(word 1, $(subst :, $(SPACE), $(TEST_NAME)))) \ |
234 $(eval TEST_GROUP := $(word 2, $(subst :, $(SPACE), $(TEST_NAME)))) \ |
236 $(eval TEST_GROUP := $(word 2, $(subst :, $(SPACE), $(TEST_NAME)))) \ |
235 $(eval TEST_ROOTS := $(call ExpandJtregRoot, $(TEST_PATH))) \ |
237 $(eval TEST_ROOTS := $(call ExpandJtregRoot, $(TEST_PATH))) \ |
236 ) \ |
238 ) \ |
314 |
316 |
315 SetupRunGtestTest = $(NamedParamsMacroTemplate) |
317 SetupRunGtestTest = $(NamedParamsMacroTemplate) |
316 define SetupRunGtestTestBody |
318 define SetupRunGtestTestBody |
317 $1_TEST_RESULTS_DIR := $$(TEST_RESULTS_DIR)/$1 |
319 $1_TEST_RESULTS_DIR := $$(TEST_RESULTS_DIR)/$1 |
318 $1_TEST_SUPPORT_DIR := $$(TEST_SUPPORT_DIR)/$1 |
320 $1_TEST_SUPPORT_DIR := $$(TEST_SUPPORT_DIR)/$1 |
|
321 $1_EXITCODE := $$($1_TEST_RESULTS_DIR)/exitcode.txt |
319 |
322 |
320 $1_TEST_NAME := $$(strip $$(patsubst gtest:%, %, $$($1_TEST))) |
323 $1_TEST_NAME := $$(strip $$(patsubst gtest:%, %, $$($1_TEST))) |
321 ifneq ($$($1_TEST_NAME), all) |
324 ifneq ($$($1_TEST_NAME), all) |
322 $1_GTEST_FILTER := --gtest_filter=$$($1_TEST_NAME)* |
325 $1_GTEST_FILTER := --gtest_filter=$$($1_TEST_NAME)* |
323 endif |
326 endif |
330 $$(call LogWarn) |
333 $$(call LogWarn) |
331 $$(call LogWarn, Running test '$$($1_TEST)') |
334 $$(call LogWarn, Running test '$$($1_TEST)') |
332 $$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR)) |
335 $$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR)) |
333 $$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/gtest, \ |
336 $$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/gtest, \ |
334 $$(FIXPATH) $$(TEST_IMAGE_DIR)/hotspot/gtest/server/gtestLauncher \ |
337 $$(FIXPATH) $$(TEST_IMAGE_DIR)/hotspot/gtest/server/gtestLauncher \ |
335 -jdk $(JDK_IMAGE_DIR) $$($1_GTEST_FILTER) \ |
338 -jdk $(JDK_IMAGE_DIR) $$($1_GTEST_FILTER) \ |
336 --gtest_output=xml:$$($1_TEST_RESULTS_DIR)/gtest.xml \ |
339 --gtest_output=xml:$$($1_TEST_RESULTS_DIR)/gtest.xml \ |
337 $$($1_GTEST_REPEAT) $$(GTEST_OPTIONS) $$(GTEST_VM_OPTIONS) \ |
340 $$($1_GTEST_REPEAT) $$(GTEST_OPTIONS) $$(GTEST_VM_OPTIONS) \ |
338 > >($(TEE) $$($1_TEST_RESULTS_DIR)/gtest.txt) || true ) |
341 > >($(TEE) $$($1_TEST_RESULTS_DIR)/gtest.txt) \ |
|
342 && $$(ECHO) $$$$? > $$($1_EXITCODE) \ |
|
343 || $$(ECHO) $$$$? > $$($1_EXITCODE) \ |
|
344 ) |
339 |
345 |
340 $1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/gtest.txt |
346 $1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/gtest.txt |
341 |
347 |
342 parse-test-$1: run-test-$1 |
348 parse-test-$1: run-test-$1 |
343 $$(call LogWarn, Finished running test '$$($1_TEST)') |
349 $$(call LogWarn, Finished running test '$$($1_TEST)') |
344 $$(call LogWarn, Test report is stored in $$(strip \ |
350 $$(call LogWarn, Test report is stored in $$(strip \ |
345 $$(subst $$(TOPDIR)/, , $$($1_TEST_RESULTS_DIR)))) |
351 $$(subst $$(TOPDIR)/, , $$($1_TEST_RESULTS_DIR)))) |
346 $$(if $$(wildcard $$($1_RESULT_FILE)), \ |
352 $$(if $$(wildcard $$($1_RESULT_FILE)), \ |
347 $$(eval $1_TOTAL := $$(shell $$(AWK) '/==========.* tests? from .* \ |
353 $$(eval $1_TOTAL := $$(shell $$(AWK) '/==========.* tests? from .* \ |
348 test cases? ran/ { print $$$$2 }' $$($1_RESULT_FILE))) \ |
354 test cases? ran/ { print $$$$2 }' $$($1_RESULT_FILE))) \ |
349 $$(if $$($1_TOTAL), , $$(eval $1_TOTAL := 0)) \ |
355 $$(if $$($1_TOTAL), , $$(eval $1_TOTAL := 0)) \ |
350 $$(eval $1_PASSED := $$(shell $$(AWK) '/\[ PASSED \] .* tests?./ \ |
356 $$(eval $1_PASSED := $$(shell $$(AWK) '/\[ PASSED \] .* tests?./ \ |
351 { print $$$$4 }' $$($1_RESULT_FILE))) \ |
357 { print $$$$4 }' $$($1_RESULT_FILE))) \ |
396 |
402 |
397 SetupRunJtregTest = $(NamedParamsMacroTemplate) |
403 SetupRunJtregTest = $(NamedParamsMacroTemplate) |
398 define SetupRunJtregTestBody |
404 define SetupRunJtregTestBody |
399 $1_TEST_RESULTS_DIR := $$(TEST_RESULTS_DIR)/$1 |
405 $1_TEST_RESULTS_DIR := $$(TEST_RESULTS_DIR)/$1 |
400 $1_TEST_SUPPORT_DIR := $$(TEST_SUPPORT_DIR)/$1 |
406 $1_TEST_SUPPORT_DIR := $$(TEST_SUPPORT_DIR)/$1 |
|
407 $1_EXITCODE := $$($1_TEST_RESULTS_DIR)/exitcode.txt |
401 |
408 |
402 $1_TEST_NAME := $$(strip $$(patsubst jtreg:%, %, $$($1_TEST))) |
409 $1_TEST_NAME := $$(strip $$(patsubst jtreg:%, %, $$($1_TEST))) |
403 |
410 |
404 $1_COMPONENT := \ |
411 $1_COMPONENT := \ |
405 $$(strip $$(foreach root, $$(JTREG_TESTROOTS), \ |
412 $$(strip $$(foreach root, $$(JTREG_TESTROOTS), \ |
503 -dir:$$(JTREG_TOPDIR) \ |
510 -dir:$$(JTREG_TOPDIR) \ |
504 -reportDir:$$($1_TEST_RESULTS_DIR) \ |
511 -reportDir:$$($1_TEST_RESULTS_DIR) \ |
505 -workDir:$$($1_TEST_SUPPORT_DIR) \ |
512 -workDir:$$($1_TEST_SUPPORT_DIR) \ |
506 $$(JTREG_OPTIONS) \ |
513 $$(JTREG_OPTIONS) \ |
507 $$(JTREG_FAILURE_HANDLER_OPTIONS) \ |
514 $$(JTREG_FAILURE_HANDLER_OPTIONS) \ |
508 $$($1_TEST_NAME) || true ) |
515 $$($1_TEST_NAME) \ |
|
516 && $$(ECHO) $$$$? > $$($1_EXITCODE) \ |
|
517 || $$(ECHO) $$$$? > $$($1_EXITCODE) \ |
|
518 ) |
509 |
519 |
510 $1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/text/stats.txt |
520 $1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/text/stats.txt |
511 |
521 |
512 parse-test-$1: run-test-$1 |
522 parse-test-$1: run-test-$1 |
513 $$(call LogWarn, Finished running test '$$($1_TEST)') |
523 $$(call LogWarn, Finished running test '$$($1_TEST)') |
514 $$(call LogWarn, Test report is stored in $$(strip \ |
524 $$(call LogWarn, Test report is stored in $$(strip \ |
515 $$(subst $$(TOPDIR)/, , $$($1_TEST_RESULTS_DIR)))) |
525 $$(subst $$(TOPDIR)/, , $$($1_TEST_RESULTS_DIR)))) |
516 $$(if $$(wildcard $$($1_RESULT_FILE)), \ |
526 $$(if $$(wildcard $$($1_RESULT_FILE)), \ |
517 $$(eval $1_PASSED := $$(shell $$(AWK) '{ gsub(/[,;]/, ""); \ |
527 $$(eval $1_PASSED := $$(shell $$(AWK) '{ gsub(/[,;]/, ""); \ |
518 for (i=1; i<=NF; i++) { if ($$$$i == "passed:") \ |
528 for (i=1; i<=NF; i++) { if ($$$$i == "passed:") \ |
519 print $$$$(i+1) } }' $$($1_RESULT_FILE))) \ |
529 print $$$$(i+1) } }' $$($1_RESULT_FILE))) \ |
520 $$(if $$($1_PASSED), , $$(eval $1_PASSED := 0)) \ |
530 $$(if $$($1_PASSED), , $$(eval $1_PASSED := 0)) \ |
521 $$(eval $1_FAILED := $$(shell $$(AWK) '{gsub(/[,;]/, ""); \ |
531 $$(eval $1_FAILED := $$(shell $$(AWK) '{gsub(/[,;]/, ""); \ |
553 $(if $(filter jtreg:%, $1), true) |
563 $(if $(filter jtreg:%, $1), true) |
554 |
564 |
555 # Now process each test to run and setup a proper make rule |
565 # Now process each test to run and setup a proper make rule |
556 $(foreach test, $(TESTS_TO_RUN), \ |
566 $(foreach test, $(TESTS_TO_RUN), \ |
557 $(eval TEST_ID := $(shell $(ECHO) $(strip $(test)) | \ |
567 $(eval TEST_ID := $(shell $(ECHO) $(strip $(test)) | \ |
558 $(TR) -cs '[a-z][A-Z][0-9]\n' '_')) \ |
568 $(TR) -cs '[a-z][A-Z][0-9]\n' '[_*1000]')) \ |
559 $(eval ALL_TEST_IDS += $(TEST_ID)) \ |
569 $(eval ALL_TEST_IDS += $(TEST_ID)) \ |
560 $(if $(call UseCustomTestHandler, $(test)), \ |
570 $(if $(call UseCustomTestHandler, $(test)), \ |
561 $(eval $(call SetupRunCustomTest, $(TEST_ID), \ |
571 $(eval $(call SetupRunCustomTest, $(TEST_ID), \ |
562 TEST := $(test), \ |
572 TEST := $(test), \ |
563 )) \ |
573 )) \ |
590 |
600 |
591 run-test: $(TARGETS) |
601 run-test: $(TARGETS) |
592 # Create and print a table of the result of all tests run |
602 # Create and print a table of the result of all tests run |
593 $(RM) $(TEST_SUMMARY).old 2> /dev/null |
603 $(RM) $(TEST_SUMMARY).old 2> /dev/null |
594 $(MV) $(TEST_SUMMARY) $(TEST_SUMMARY).old 2> /dev/null || true |
604 $(MV) $(TEST_SUMMARY) $(TEST_SUMMARY).old 2> /dev/null || true |
|
605 $(RM) $(TEST_LAST_IDS).old 2> /dev/null |
|
606 $(MV) $(TEST_LAST_IDS) $(TEST_LAST_IDS).old 2> /dev/null || true |
595 $(ECHO) >> $(TEST_SUMMARY) ============================== |
607 $(ECHO) >> $(TEST_SUMMARY) ============================== |
596 $(ECHO) >> $(TEST_SUMMARY) Test summary |
608 $(ECHO) >> $(TEST_SUMMARY) Test summary |
597 $(ECHO) >> $(TEST_SUMMARY) ============================== |
609 $(ECHO) >> $(TEST_SUMMARY) ============================== |
598 $(PRINTF) >> $(TEST_SUMMARY) "%2s %-49s %5s %5s %5s %5s %2s\n" " " \ |
610 $(PRINTF) >> $(TEST_SUMMARY) "%2s %-49s %5s %5s %5s %5s %2s\n" " " \ |
599 TEST TOTAL PASS FAIL ERROR " " |
611 TEST TOTAL PASS FAIL ERROR " " |
600 $(foreach test, $(TESTS_TO_RUN), \ |
612 $(foreach test, $(TESTS_TO_RUN), \ |
601 $(eval TEST_ID := $(shell $(ECHO) $(strip $(test)) | \ |
613 $(eval TEST_ID := $(shell $(ECHO) $(strip $(test)) | \ |
602 $(TR) -cs '[a-z][A-Z][0-9]\n' '_')) \ |
614 $(TR) -cs '[a-z][A-Z][0-9]\n' '[_*1000]')) \ |
603 $(eval NAME_PATTERN := $(shell $(ECHO) $(test) | $(TR) -c \\n _)) \ |
615 $(ECHO) >> $(TEST_LAST_IDS) $(TEST_ID) $(NEWLINE) \ |
|
616 $(eval NAME_PATTERN := $(shell $(ECHO) $(test) | $(TR) -c '\n' '[_*1000]')) \ |
604 $(if $(filter __________________________________________________%, $(NAME_PATTERN)), \ |
617 $(if $(filter __________________________________________________%, $(NAME_PATTERN)), \ |
605 $(eval TEST_NAME := ) \ |
618 $(eval TEST_NAME := ) \ |
606 $(PRINTF) >> $(TEST_SUMMARY) "%2s %-49s\n" " " "$(test)" $(NEWLINE) \ |
619 $(PRINTF) >> $(TEST_SUMMARY) "%2s %-49s\n" " " "$(test)" $(NEWLINE) \ |
607 , \ |
620 , \ |
608 $(eval TEST_NAME := $(test)) \ |
621 $(eval TEST_NAME := $(test)) \ |