From 237fa073392127a7ba1cfff1b2010191a5343e1f Mon Sep 17 00:00:00 2001 From: Brian Muramatsu Date: Mon, 12 Dec 2011 23:54:49 -0800 Subject: [PATCH] Build Support for CTS Native Tests Bug 4970300 Adds two new variables, CTS_TEST_CASES and CTS_TEST_XMLS, to be read from CtsTestCaseList.mk. The CTS_TEST_CASES variable can be used to copy any sort of file to the repository/testcases CTS directory. The CTS_TEST_XMLS variable can be used to inject test package xmls from any source rather than relying upon the monolithic and mostly serial buildCts.py script. The existing CTS_CORE_CASE_LIST is coded to only support APKs, so it could not be retrofitted to support native tests. However, the two new variables can do even more than CTS_CORE_CASE_LIST due to their generality. In the future, the idea is move away from CTS_CORE_CASE_LIST and also generate XMLs using separate tools rather than just buildCts.py. Change-Id: Ib52722861c37e0f4d511f9041928395bcaba5dea --- core/clear_vars.mk | 1 + core/tasks/cts.mk | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/core/clear_vars.mk b/core/clear_vars.mk index d9f3372c5d..66e62325ce 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -114,6 +114,7 @@ LOCAL_PROTOC_OPTIMIZE_TYPE:= # lite(default),micro,full LOCAL_PROTOC_FLAGS:= LOCAL_NO_CRT:= LOCAL_PROPRIETARY_MODULE:= +LOCAL_CTS_TEST_PACKAGE:= # Trim MAKEFILE_LIST so that $(call my-dir) doesn't need to # iterate over thousands of entries every time. diff --git a/core/tasks/cts.mk b/core/tasks/cts.mk index fcdd9871b0..45dcd0fcff 100644 --- a/core/tasks/cts.mk +++ b/core/tasks/cts.mk @@ -42,7 +42,7 @@ DEFAULT_TEST_PLAN := $(cts_dir)/$(cts_name)/resource/plans $(cts_dir)/all_cts_files_stamp: PRIVATE_JUNIT_HOST_JAR := $(junit_host_jar) -include cts/CtsHostLibraryList.mk -$(cts_dir)/all_cts_files_stamp: $(CTS_CASE_LIST) $(junit_host_jar) $(HOSTTESTLIB_JAR) $(CTS_HOST_LIBRARY_JARS) $(TF_JAR) $(CTS_TF_JAR) $(CTS_TF_EXEC_PATH) $(CTS_TF_README_PATH) $(ACP) +$(cts_dir)/all_cts_files_stamp: $(CTS_CASE_LIST) $(CTS_TEST_CASES) $(junit_host_jar) $(HOSTTESTLIB_JAR) $(CTS_HOST_LIBRARY_JARS) $(TF_JAR) $(CTS_TF_JAR) $(CTS_TF_EXEC_PATH) $(CTS_TF_README_PATH) $(ACP) # Make necessary directory for CTS $(hide) rm -rf $(PRIVATE_CTS_DIR) $(hide) mkdir -p $(TMP_DIR) @@ -53,8 +53,8 @@ $(cts_dir)/all_cts_files_stamp: $(CTS_CASE_LIST) $(junit_host_jar) $(HOSTTESTLIB # Copy executable and JARs to CTS directory $(hide) $(ACP) -fp $(DDMLIB_JAR) $(PRIVATE_JUNIT_HOST_JAR) $(HOSTTESTLIB_JAR) $(CTS_HOST_LIBRARY_JARS) $(TF_JAR) $(CTS_TF_JAR) $(CTS_TF_EXEC_PATH) $(CTS_TF_README_PATH) $(PRIVATE_DIR)/tools # Change mode of the executables - $(foreach apk,$(CTS_CASE_LIST), \ - $(call copy-testcase-apk,$(apk))) + $(foreach apk,$(CTS_CASE_LIST),$(call copy-testcase-apk,$(apk))) + $(foreach testcase,$(CTS_TEST_CASES),$(call copy-testcase,$(testcase))) $(hide) touch $@ # Generate the test descriptions for the core-tests @@ -165,9 +165,12 @@ APP_SECURITY_LIB := $(cts_dir)/$(cts_name)/repository/testcases/CtsAppSecurityTe $(APP_SECURITY_LIB): $(HOST_OUT_JAVA_LIBRARIES)/CtsAppSecurityTests.jar $(cts_dir)/all_cts_files_stamp $(ACP) $(ACP) -fv $(HOST_OUT_JAVA_LIBRARIES)/CtsAppSecurityTests.jar $(APP_SECURITY_LIB) + # Generate the default test plan for User. # Usage: buildCts.py -$(DEFAULT_TEST_PLAN): $(cts_dir)/all_cts_files_stamp $(cts_dir)/all_cts_core_files_stamp $(cts_tools_src_dir)/utils/buildCts.py $(CORE_VM_TEST_TF_DESC) $(CORE_VM_TEST_DESC) $(APP_SECURITY_LIB) $(HOST_OUT_JAVA_LIBRARIES)/descGen.jar + +$(DEFAULT_TEST_PLAN): $(cts_dir)/all_cts_files_stamp $(cts_dir)/all_cts_core_files_stamp $(cts_tools_src_dir)/utils/buildCts.py $(CORE_VM_TEST_TF_DESC) $(CORE_VM_TEST_DESC) $(APP_SECURITY_LIB) $(HOST_OUT_JAVA_LIBRARIES)/descGen.jar $(CTS_TEST_XMLS) | $(ACP) + $(hide) $(ACP) -fp $(CTS_TEST_XMLS) $(PRIVATE_DIR)/repository/testcases $(hide) $(cts_tools_src_dir)/utils/buildCts.py cts/tests/tests/ $(PRIVATE_DIR) $(TMP_DIR) \ $(TOP) $(HOST_OUT_JAVA_LIBRARIES)/descGen.jar @@ -194,3 +197,9 @@ $(hide) $(ACP) -fp $(call intermediates-dir-for,APPS,$(1))/package.apk \ $(PRIVATE_DIR)/repository/testcases/$(1).apk endef + +define copy-testcase + +$(hide) $(ACP) -fp $(1) $(PRIVATE_DIR)/repository/testcases/$(notdir $1) + +endef