Home | History | Annotate | Download | only in pts
      1 #
      2 # Copyright (C) 2012 The Android Open Source Project
      3 #
      4 # Licensed under the Apache License, Version 2.0 (the "License");
      5 # you may not use this file except in compliance with the License.
      6 # You may obtain a copy of the License at
      7 #
      8 #      http://www.apache.org/licenses/LICENSE-2.0
      9 #
     10 # Unless required by applicable law or agreed to in writing, software
     11 # distributed under the License is distributed on an "AS IS" BASIS,
     12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 # See the License for the specific language governing permissions and
     14 # limitations under the License.
     15 #
     16 
     17 # several makefiles for CTS merged for PTS
     18 
     19 LOCAL_PATH:= $(call my-dir)
     20 
     21 # New packages should be added here
     22 PTS_TEST_PACKAGES := \
     23     PtsDeviceFilePerf \
     24     PtsDeviceUi \
     25     PtsDeviceDram
     26 
     27 
     28 PTS_SUPPORT_PACKAGES := \
     29     TestDeviceSetup \
     30     PtsDeviceTaskswitchingAppA \
     31     PtsDeviceTaskswitchingAppB \
     32     PtsDeviceTaskswitchingControl \
     33     com.replica.replicaisland \
     34     PtsDeviceBrowserLauncher
     35 
     36 PTS_HOST_CASES := \
     37     PtsHostBootup \
     38     PtsHostUi \
     39     PtsHostBrowser
     40 
     41 PTS_HOST_LIBS := \
     42     $(HOST_OUT_JAVA_LIBRARIES)/ptscommonutilhost.jar \
     43     $(HOST_OUT_JAVA_LIBRARIES)/ptshostutil.jar
     44 
     45 BUILD_PTS_PACKAGE := cts/suite/pts/build/test_package.mk
     46 BUILD_PTS_HOST_JAVA_LIBRARY := cts/suite/pts/build/test_host_java_library.mk
     47 
     48 PTS_JAVA_TEST_SCANNER := $(HOST_OUT_EXECUTABLES)/cts-java-scanner
     49 PTS_JAVA_TEST_SCANNER_DOCLET := $(HOST_OUT_JAVA_LIBRARIES)/cts-java-scanner-doclet.jar
     50 
     51 # Generator of test XMLs from scanner output.
     52 PTS_XML_GENERATOR := $(HOST_OUT_EXECUTABLES)/cts-xml-generator
     53 
     54 # File indicating which tests should be blacklisted due to problems.
     55 PTS_EXPECTATIONS := cts/suite/pts/expectations/knownfailures.txt
     56 
     57 PTS_TESTCASES_OUT := $(HOST_OUT)/pts-testcases
     58 
     59 define pts-get-package-paths
     60 	$(foreach pkg,$(1),$(PTS_TESTCASES_OUT)/$(pkg).apk)
     61 endef
     62 
     63 define pts-get-test-xmls
     64 	$(foreach name,$(1),$(PTS_TESTCASES_OUT)/$(name).xml)
     65 endef
     66 
     67 define pts-get-lib-paths
     68 	$(foreach lib,$(1),$(HOST_OUT_JAVA_LIBRARIES)/$(lib).jar)
     69 endef
     70 
     71 PTS_TEST_CASE_LIST := \
     72 	$(PTS_SUPPORT_PACKAGES)
     73 
     74 PTS_TEST_CASES := \
     75 		$(call pts-get-package-paths,$(PTS_TEST_PACKAGES)) \
     76 		$(call pts-get-lib-paths,$(PTS_HOST_CASES))
     77 
     78 PTS_TEST_XMLS := \
     79     $(call pts-get-test-xmls,$(PTS_TEST_PACKAGES)) \
     80     $(call pts-get-test-xmls,$(PTS_HOST_CASES))
     81 
     82 pts_dir := $(HOST_OUT)/pts
     83 pts_tools_src_dir := cts/tools
     84 
     85 pts_name := android-pts
     86 
     87 DDMLIB_JAR := $(HOST_OUT_JAVA_LIBRARIES)/ddmlib-prebuilt.jar
     88 junit_host_jar := $(HOST_OUT_JAVA_LIBRARIES)/junit.jar
     89 HOSTTESTLIB_JAR := $(HOST_OUT_JAVA_LIBRARIES)/hosttestlib.jar
     90 TF_JAR := $(HOST_OUT_JAVA_LIBRARIES)/tradefed-prebuilt.jar
     91 PTS_TF_JAR := $(HOST_OUT_JAVA_LIBRARIES)/cts-tradefed.jar
     92 PTS_TF_EXEC := $(HOST_OUT_EXECUTABLES)/pts-tradefed
     93 PTS_TF_README := $(pts_tools_src_dir)/tradefed-host/README
     94 
     95 
     96 DEFAULT_TEST_PLAN := $(pts_dir)/$(pts_name)/resource/plans/PTS.xml
     97 
     98 $(pts_dir)/all_pts_files_stamp: PRIVATE_JUNIT_HOST_JAR := $(junit_host_jar)
     99 
    100 $(pts_dir)/all_pts_files_stamp: $(PTS_TEST_CASES) $(PTS_TEST_CASE_LIST) $(junit_host_jar) $(HOSTTESTLIB_JAR) $(PTS_HOST_LIBRARY_JARS) $(TF_JAR) $(VMTESTSTF_JAR) $(PTS_TF_JAR) $(PTS_TF_EXEC) $(PTS_TF_README) $(ACP) $(PTS_HOST_LIBS)
    101 # Make necessary directory for PTS
    102 	$(hide) rm -rf $(PRIVATE_PTS_DIR)
    103 	$(hide) mkdir -p $(TMP_DIR)
    104 	$(hide) mkdir -p $(PRIVATE_DIR)/docs
    105 	$(hide) mkdir -p $(PRIVATE_DIR)/tools
    106 	$(hide) mkdir -p $(PRIVATE_DIR)/repository/testcases
    107 	$(hide) mkdir -p $(PRIVATE_DIR)/repository/plans
    108 # Copy executable and JARs to PTS directory
    109 	$(hide) $(ACP) -fp $(DDMLIB_JAR) $(PRIVATE_JUNIT_HOST_JAR) $(HOSTTESTLIB_JAR) $(PTS_HOST_LIBRARY_JARS) $(TF_JAR) $(PTS_TF_JAR) $(PTS_TF_EXEC) $(PTS_TF_README) $(PTS_HOST_LIBS) $(PRIVATE_DIR)/tools
    110 # Change mode of the executables
    111 	$(foreach apk,$(PTS_TEST_CASE_LIST),$(call copy-testcase-apk,$(apk)))
    112 	$(foreach testcase,$(PTS_TEST_CASES),$(call copy-testcase,$(testcase)))
    113 	$(hide) touch $@
    114 
    115 # Generate the default test plan for User.
    116 # Usage: buildCts.py <testRoot> <ctsOutputDir> <tempDir> <androidRootDir> <docletPath>
    117 
    118 $(DEFAULT_TEST_PLAN): $(pts_dir)/all_pts_files_stamp $(pts_tools_src_dir)/utils/buildCts.py $(HOST_OUT_JAVA_LIBRARIES)/descGen.jar $(PTS_TEST_XMLS) | $(ACP)
    119 	$(hide) $(ACP) -fp $(PTS_TEST_XMLS) $(PRIVATE_DIR)/repository/testcases
    120 	$(hide) $(pts_tools_src_dir)/utils/buildCts.py cts/suite/pts $(PRIVATE_DIR) $(TMP_DIR) \
    121 		$(TOP) $(HOST_OUT_JAVA_LIBRARIES)/descGen.jar -pts
    122 
    123 # Package PTS and clean up.
    124 INTERNAL_PTS_TARGET := $(pts_dir)/$(pts_name).zip
    125 $(INTERNAL_PTS_TARGET): PRIVATE_NAME := $(pts_name)
    126 $(INTERNAL_PTS_TARGET): PRIVATE_PTS_DIR := $(pts_dir)
    127 $(INTERNAL_PTS_TARGET): PRIVATE_DIR := $(pts_dir)/$(pts_name)
    128 $(INTERNAL_PTS_TARGET): TMP_DIR := $(pts_dir)/temp
    129 $(INTERNAL_PTS_TARGET): $(pts_dir)/all_pts_files_stamp $(DEFAULT_TEST_PLAN)
    130 	$(hide) echo "Package PTS: $@"
    131 	$(hide) cd $(dir $@) && zip -rq $(notdir $@) $(PRIVATE_NAME)
    132 
    133 .PHONY: pts
    134 pts: $(INTERNAL_PTS_TARGET)
    135 cts: pts
    136 # generate PTS during CTS build
    137 ifneq ($(filter cts, $(MAKECMDGOALS)),)
    138 $(call dist-for-goals,cts,$(INTERNAL_PTS_TARGET))
    139 endif
    140 
    141 define copy-testcase-apk
    142 
    143 $(hide) $(ACP) -fp $(call intermediates-dir-for,APPS,$(1))/package.apk \
    144 	$(PRIVATE_DIR)/repository/testcases/$(1).apk
    145 
    146 endef
    147 
    148 define copy-testcase
    149 
    150 $(hide) $(ACP) -fp $(1) $(PRIVATE_DIR)/repository/testcases/$(notdir $1)
    151 
    152 endef
    153