8215729: Enhance makefiles to allow collecting code coverage with JCov
Reviewed-by: erikj
This commit is contained in:
parent
528bc73ca4
commit
eb971c3cf5
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -484,18 +484,27 @@ define DeclareRunTestRecipe
|
|||||||
exploded-test-$1:
|
exploded-test-$1:
|
||||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test \
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test \
|
||||||
TEST="$1" JDK_IMAGE_DIR=$(JDK_OUTPUTDIR))
|
TEST="$1" JDK_IMAGE_DIR=$(JDK_OUTPUTDIR))
|
||||||
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# ALL_NAMED_TESTS is defined in FindTests.gmk
|
# ALL_NAMED_TESTS is defined in FindTests.gmk
|
||||||
$(foreach t, $(ALL_NAMED_TESTS), $(eval $(call DeclareRunTestRecipe,$t)))
|
$(foreach t, $(ALL_NAMED_TESTS), $(eval $(call DeclareRunTestRecipe,$t)))
|
||||||
ALL_TEST_TARGETS := $(addprefix test-, $(ALL_NAMED_TESTS))
|
ALL_TEST_TARGETS := $(addprefix test-, $(ALL_NAMED_TESTS))
|
||||||
|
|
||||||
|
define DeclareRunJCovTestRecipe
|
||||||
|
jcov-test-$1:
|
||||||
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk \
|
||||||
|
TEST="$1" TEST_OPTS_JCOV=true)
|
||||||
|
endef
|
||||||
|
|
||||||
|
# jcov-test only makes sense for some of the tests
|
||||||
|
$(foreach t, $(JCOV_NAMED_TESTS), $(eval $(call DeclareRunJCovTestRecipe,$t)))
|
||||||
|
ALL_JCOV_TEST_TARGETS := $(addprefix jcov-test-, $(JCOV_NAMED_TESTS))
|
||||||
|
|
||||||
# We only support the "exploded-test-gtest" shortcut
|
# We only support the "exploded-test-gtest" shortcut
|
||||||
ALL_EXPLODED_TESTS := gtest
|
ALL_EXPLODED_TESTS := gtest
|
||||||
ALL_EXPLODED_TEST_TARGETS := $(addprefix exploded-test-, $(ALL_EXPLODED_TESTS))
|
ALL_EXPLODED_TEST_TARGETS := $(addprefix exploded-test-, $(ALL_EXPLODED_TESTS))
|
||||||
|
|
||||||
ALL_TARGETS += $(ALL_TEST_TARGETS) $(ALL_EXPLODED_TEST_TARGETS)
|
ALL_TARGETS += $(ALL_TEST_TARGETS) $(ALL_EXPLODED_TEST_TARGETS) $(ALL_JCOV_TEST_TARGETS)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Build tests and microbenchmarks
|
# Build tests and microbenchmarks
|
||||||
@ -568,7 +577,11 @@ exploded-test:
|
|||||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test \
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test \
|
||||||
TEST="$(TEST)" JDK_IMAGE_DIR=$(JDK_OUTPUTDIR))
|
TEST="$(TEST)" JDK_IMAGE_DIR=$(JDK_OUTPUTDIR))
|
||||||
|
|
||||||
ALL_TARGETS += test exploded-test
|
jcov-test:
|
||||||
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk \
|
||||||
|
TEST="$(TEST)" TEST_OPTS_JCOV=true)
|
||||||
|
|
||||||
|
ALL_TARGETS += test exploded-test jcov-test
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Bundles
|
# Bundles
|
||||||
@ -869,6 +882,8 @@ else
|
|||||||
|
|
||||||
exploded-test: exploded-image test-image
|
exploded-test: exploded-image test-image
|
||||||
|
|
||||||
|
jcov-test: jcov-image test-image
|
||||||
|
|
||||||
test-make: clean-test-make compile-commands
|
test-make: clean-test-make compile-commands
|
||||||
|
|
||||||
test-make-compile-commands: compile-commands
|
test-make-compile-commands: compile-commands
|
||||||
@ -876,6 +891,7 @@ else
|
|||||||
# Declare dependency for all generated test targets
|
# Declare dependency for all generated test targets
|
||||||
$(foreach t, $(filter-out test-make%, $(ALL_TEST_TARGETS)), $(eval $t: jdk-image test-image))
|
$(foreach t, $(filter-out test-make%, $(ALL_TEST_TARGETS)), $(eval $t: jdk-image test-image))
|
||||||
$(foreach t, $(ALL_EXPLODED_TEST_TARGETS), $(eval $t: exploded-image test-image))
|
$(foreach t, $(ALL_EXPLODED_TEST_TARGETS), $(eval $t: exploded-image test-image))
|
||||||
|
$(ALL_JCOV_TEST_TARGETS): jcov-image test-image
|
||||||
|
|
||||||
create-buildjdk-copy: jdk.jlink-java java.base-gendata \
|
create-buildjdk-copy: jdk.jlink-java java.base-gendata \
|
||||||
$(addsuffix -java, $(INTERIM_IMAGE_MODULES))
|
$(addsuffix -java, $(INTERIM_IMAGE_MODULES))
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -45,7 +45,7 @@ ifneq ($(TEST_VM_OPTS), )
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
$(eval $(call ParseKeywordVariable, TEST_OPTS, \
|
$(eval $(call ParseKeywordVariable, TEST_OPTS, \
|
||||||
SINGLE_KEYWORDS := JOBS TIMEOUT_FACTOR AOT_MODULES, \
|
SINGLE_KEYWORDS := JOBS TIMEOUT_FACTOR AOT_MODULES JCOV, \
|
||||||
STRING_KEYWORDS := VM_OPTIONS JAVA_OPTIONS, \
|
STRING_KEYWORDS := VM_OPTIONS JAVA_OPTIONS, \
|
||||||
))
|
))
|
||||||
|
|
||||||
@ -595,9 +595,7 @@ define SetupRunGtestTestBody
|
|||||||
$$(eval $1_TOTAL := 1) \
|
$$(eval $1_TOTAL := 1) \
|
||||||
)
|
)
|
||||||
|
|
||||||
$1: run-test-$1 parse-test-$1
|
TARGETS += run-test-$1 parse-test-$1
|
||||||
|
|
||||||
TARGETS += $1
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -702,9 +700,7 @@ define SetupRunMicroTestBody
|
|||||||
$$(eval $1_TOTAL := 1) \
|
$$(eval $1_TOTAL := 1) \
|
||||||
)
|
)
|
||||||
|
|
||||||
$1: run-test-$1 parse-test-$1
|
TARGETS += run-test-$1 parse-test-$1
|
||||||
|
|
||||||
TARGETS += $1
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -879,6 +875,7 @@ define SetupRunJtregTestBody
|
|||||||
$$(call LogWarn, Running test '$$($1_TEST)')
|
$$(call LogWarn, Running test '$$($1_TEST)')
|
||||||
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
|
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
|
||||||
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/jtreg, \
|
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/jtreg, \
|
||||||
|
$$(JCOV_ENVIRONMENT) \
|
||||||
$$(JAVA) $$($1_JTREG_LAUNCHER_OPTIONS) \
|
$$(JAVA) $$($1_JTREG_LAUNCHER_OPTIONS) \
|
||||||
-Dprogram=jtreg -jar $$(JT_HOME)/lib/jtreg.jar \
|
-Dprogram=jtreg -jar $$(JT_HOME)/lib/jtreg.jar \
|
||||||
$$($1_JTREG_BASIC_OPTIONS) \
|
$$($1_JTREG_BASIC_OPTIONS) \
|
||||||
@ -888,6 +885,7 @@ define SetupRunJtregTestBody
|
|||||||
-workDir:$$($1_TEST_SUPPORT_DIR) \
|
-workDir:$$($1_TEST_SUPPORT_DIR) \
|
||||||
$$(JTREG_OPTIONS) \
|
$$(JTREG_OPTIONS) \
|
||||||
$$(JTREG_FAILURE_HANDLER_OPTIONS) \
|
$$(JTREG_FAILURE_HANDLER_OPTIONS) \
|
||||||
|
$$(JTREG_JCOV_OPTIONS) \
|
||||||
$$($1_TEST_NAME) \
|
$$($1_TEST_NAME) \
|
||||||
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||||
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
|
||||||
@ -921,9 +919,7 @@ define SetupRunJtregTestBody
|
|||||||
$$(eval $1_TOTAL := 1) \
|
$$(eval $1_TOTAL := 1) \
|
||||||
)
|
)
|
||||||
|
|
||||||
$1: run-test-$1 parse-test-$1
|
TARGETS += run-test-$1 parse-test-$1
|
||||||
|
|
||||||
TARGETS += $1
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -985,9 +981,7 @@ define SetupRunSpecialTestBody
|
|||||||
$$(eval $1_ERROR := 0)
|
$$(eval $1_ERROR := 0)
|
||||||
$$(eval $1_TOTAL := 0)
|
$$(eval $1_TOTAL := 0)
|
||||||
|
|
||||||
$1: run-test-$1 parse-test-$1
|
TARGETS += run-test-$1 parse-test-$1
|
||||||
|
|
||||||
TARGETS += $1
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -1098,6 +1092,55 @@ run-test: $(TARGETS)
|
|||||||
$(CAT) $(TEST_SUMMARY)
|
$(CAT) $(TEST_SUMMARY)
|
||||||
$(ECHO)
|
$(ECHO)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Setup JCov
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
ifeq ($(TEST_OPTS_JCOV), true)
|
||||||
|
|
||||||
|
JCOV_OUTPUT_DIR := $(TEST_RESULTS_DIR)/jcov-output
|
||||||
|
JCOV_GRABBER_LOG := $(JCOV_OUTPUT_DIR)/grabber.log
|
||||||
|
JCOV_RESULT_FILE := $(JCOV_OUTPUT_DIR)/result.xml
|
||||||
|
JCOV_REPORT := $(JCOV_OUTPUT_DIR)/report
|
||||||
|
JCOV_MEM_OPTIONS := -Xms64m -Xmx4g
|
||||||
|
|
||||||
|
ifneq ($(JCOV_IMAGE_DIR), )
|
||||||
|
JDK_IMAGE_DIR := $(JCOV_IMAGE_DIR)
|
||||||
|
endif
|
||||||
|
|
||||||
|
JCOV_ENVIRONMENT := JAVA_TOOL_OPTIONS="$(JCOV_MEM_OPTIONS)" \
|
||||||
|
_JAVA_OPTIONS="$(JCOV_MEM_OPTIONS)"
|
||||||
|
JTREG_JCOV_OPTIONS := -e:JAVA_TOOL_OPTIONS='$(JCOV_MEM_OPTIONS)' \
|
||||||
|
-e:_JAVA_OPTIONS='$(JCOV_MEM_OPTIONS)'
|
||||||
|
|
||||||
|
jcov-do-start-grabber:
|
||||||
|
$(call MakeDir, $(JCOV_OUTPUT_DIR))
|
||||||
|
if $(JAVA) -jar $(JCOV_HOME)/lib/jcov.jar GrabberManager -status 1>/dev/null 2>&1 ; then \
|
||||||
|
$(JAVA) -jar $(JCOV_HOME)/lib/jcov.jar GrabberManager -stop -stoptimeout 3600 ; \
|
||||||
|
fi
|
||||||
|
$(JAVA) -Xmx4g -jar $(JCOV_HOME)/lib/jcov.jar Grabber -v -t \
|
||||||
|
$(JCOV_IMAGE_DIR)/template.xml -o $(JCOV_RESULT_FILE) \
|
||||||
|
1>$(JCOV_GRABBER_LOG) 2>&1 &
|
||||||
|
|
||||||
|
jcov-start-grabber: jcov-do-start-grabber
|
||||||
|
$(call LogWarn, Starting JCov Grabber...)
|
||||||
|
$(JAVA) -jar $(JCOV_HOME)/lib/jcov.jar GrabberManager -t 600 -wait
|
||||||
|
|
||||||
|
jcov-stop-grabber:
|
||||||
|
$(call LogWarn, Stopping JCov Grabber...)
|
||||||
|
$(JAVA) -jar $(JCOV_HOME)/lib/jcov.jar GrabberManager -stop -stoptimeout 3600
|
||||||
|
|
||||||
|
jcov-gen-report: run-test jcov-stop-grabber
|
||||||
|
$(call LogWarn, Generating JCov report ...)
|
||||||
|
$(JAVA) -Xmx4g -jar $(JCOV_HOME)/lib/jcov.jar RepGen -sourcepath \
|
||||||
|
`$(ECHO) $(TOPDIR)/src/*/share/classes/ | $(TR) ' ' ':'` -fmt html \
|
||||||
|
-o $(JCOV_REPORT) $(JCOV_RESULT_FILE)
|
||||||
|
|
||||||
|
$(TARGETS): jcov-start-grabber
|
||||||
|
all: jcov-gen-report
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
all: run-test
|
all: run-test
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@ -68,6 +68,7 @@ JTREG_TEST_GROUPS += $(sort $(foreach root, $(JTREG_TESTROOTS), \
|
|||||||
# Add Jtreg test groups to list of named tests (test groups, test list, etc)
|
# Add Jtreg test groups to list of named tests (test groups, test list, etc)
|
||||||
# ALL_NAMED_TESTS might have been set by a custom extension
|
# ALL_NAMED_TESTS might have been set by a custom extension
|
||||||
ALL_NAMED_TESTS += $(JTREG_TEST_GROUPS)
|
ALL_NAMED_TESTS += $(JTREG_TEST_GROUPS)
|
||||||
|
JCOV_NAMED_TESTS += $(JTREG_TEST_GROUPS)
|
||||||
|
|
||||||
# Add Gtest
|
# Add Gtest
|
||||||
ALL_NAMED_TESTS += gtest
|
ALL_NAMED_TESTS += gtest
|
||||||
|
Loading…
Reference in New Issue
Block a user