Home | History | Annotate | Download | only in test
      1 # Copyright (C) 2011 The Android Open Source Project
      2 #
      3 # Licensed under the Apache License, Version 2.0 (the "License");
      4 # you may not use this file except in compliance with the License.
      5 # You may obtain a copy of the License at
      6 #
      7 #      http://www.apache.org/licenses/LICENSE-2.0
      8 #
      9 # Unless required by applicable law or agreed to in writing, software
     10 # distributed under the License is distributed on an "AS IS" BASIS,
     11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 # See the License for the specific language governing permissions and
     13 # limitations under the License.
     14 #
     15 
     16 LOCAL_PATH := $(call my-dir)
     17 
     18 include art/build/Android.common.mk
     19 
     20 ########################################################################
     21 
     22 # subdirectories which are used as inputs for gtests
     23 TEST_DEX_DIRECTORIES := \
     24 	AbstractMethod \
     25 	AllFields \
     26 	CreateMethodSignature \
     27 	ExceptionHandle \
     28 	Interfaces \
     29 	Main \
     30 	MyClass \
     31 	MyClassNatives \
     32 	Nested \
     33 	NonStaticLeafMethods \
     34 	ProtoCompare \
     35 	ProtoCompare2 \
     36 	StaticLeafMethods \
     37 	Statics \
     38 	StaticsFromCode \
     39 	XandY
     40 
     41 # subdirectories of which are used with test-art-target-oat
     42 # Declare the simplest tests (Main, HelloWorld) first, the rest are alphabetical
     43 TEST_OAT_DIRECTORIES := \
     44 	Main \
     45 	HelloWorld \
     46 	\
     47 	JniTest \
     48 	NativeAllocations \
     49 	ParallelGC \
     50 	ReferenceMap \
     51 	StackWalk \
     52 	ThreadStress
     53 
     54 # TODO: Enable when the StackWalk2 tests are passing
     55 #	StackWalk2 \
     56 
     57 ART_TEST_TARGET_DEX_FILES :=
     58 ART_TEST_HOST_DEX_FILES :=
     59 
     60 # $(1): module prefix
     61 # $(2): input test directory
     62 # $(3): target output module path (default module path is used on host)
     63 define build-art-test-dex
     64   ifeq ($(ART_BUILD_TARGET),true)
     65     include $(CLEAR_VARS)
     66     LOCAL_MODULE := $(1)-$(2)
     67     LOCAL_MODULE_TAGS := tests
     68     LOCAL_SRC_FILES := $(call all-java-files-under, $(2))
     69     LOCAL_JAVA_LIBRARIES := $(TARGET_CORE_JARS)
     70     LOCAL_NO_STANDARD_LIBRARIES := true
     71     LOCAL_MODULE_PATH := $(3)
     72     LOCAL_DEX_PREOPT_IMAGE := $(TARGET_CORE_IMG_OUT)
     73     LOCAL_DEX_PREOPT := false
     74     LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common.mk
     75     LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk
     76     include $(BUILD_JAVA_LIBRARY)
     77     ART_TEST_TARGET_DEX_FILES += $(3)/$$(LOCAL_MODULE).jar
     78   endif
     79 
     80   ifeq ($(ART_BUILD_HOST),true)
     81     include $(CLEAR_VARS)
     82     LOCAL_MODULE := $(1)-$(2)
     83     LOCAL_SRC_FILES := $(call all-java-files-under, $(2))
     84     LOCAL_JAVA_LIBRARIES := $(HOST_CORE_JARS)
     85     LOCAL_NO_STANDARD_LIBRARIES := true
     86     LOCAL_DEX_PREOPT_IMAGE := $(HOST_CORE_IMG_OUT)
     87     LOCAL_BUILD_HOST_DEX := true
     88     LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common.mk
     89     LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk
     90     include $(BUILD_HOST_JAVA_LIBRARY)
     91     ART_TEST_HOST_DEX_FILES += $$(LOCAL_MODULE_PATH)/$$(LOCAL_MODULE).jar
     92   endif
     93 endef
     94 $(foreach dir,$(TEST_DEX_DIRECTORIES), $(eval $(call build-art-test-dex,art-test-dex,$(dir),$(ART_NATIVETEST_OUT))))
     95 $(foreach dir,$(TEST_OAT_DIRECTORIES), $(eval $(call build-art-test-dex,oat-test-dex,$(dir),$(ART_TEST_OUT))))
     96 
     97 ########################################################################
     98 
     99 ART_TEST_TARGET_OAT_TARGETS :=
    100 ART_TEST_HOST_OAT_DEFAULT_TARGETS :=
    101 ART_TEST_HOST_OAT_INTERPRETER_TARGETS :=
    102 
    103 # $(1): directory
    104 # $(2): arguments
    105 define declare-test-art-oat-targets
    106 .PHONY: test-art-target-oat-$(1)
    107 test-art-target-oat-$(1): $(ART_TEST_OUT)/oat-test-dex-$(1).jar test-art-target-sync
    108 	adb shell touch $(ART_TEST_DIR)/test-art-target-oat-$(1)
    109 	adb shell rm $(ART_TEST_DIR)/test-art-target-oat-$(1)
    110 	adb shell sh -c "dalvikvm -XXlib:libartd.so -Ximage:$(ART_TEST_DIR)/core.art -classpath $(ART_TEST_DIR)/oat-test-dex-$(1).jar -Djava.library.path=$(ART_TEST_DIR) $(1) $(2) && touch $(ART_TEST_DIR)/test-art-target-oat-$(1)"
    111 	$(hide) (adb pull $(ART_TEST_DIR)/test-art-target-oat-$(1) /tmp/ && echo test-art-target-oat-$(1) PASSED) || (echo test-art-target-oat-$(1) FAILED && exit 1)
    112 	$(hide) rm /tmp/test-art-target-oat-$(1)
    113 
    114 $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).odex: $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).jar $(HOST_CORE_IMG_OUT) | $(DEX2OAT)
    115 	$(DEX2OAT) --runtime-arg -Xms16m --runtime-arg -Xmx16m --boot-image=$(HOST_CORE_IMG_OUT) --dex-file=$(PWD)/$$< --oat-file=$(PWD)/$$@ --instruction-set=$(HOST_ARCH) --host --host-prefix="" --android-root=$(HOST_OUT)
    116 
    117 .PHONY: test-art-host-oat-default-$(1)
    118 test-art-host-oat-default-$(1): $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).odex test-art-host-dependencies
    119 	mkdir -p /tmp/android-data/test-art-host-oat-default-$(1)
    120 	ANDROID_DATA=/tmp/android-data/test-art-host-oat-default-$(1) \
    121 	  ANDROID_ROOT=$(HOST_OUT) \
    122 	  LD_LIBRARY_PATH=$(HOST_OUT_SHARED_LIBRARIES) \
    123 	  dalvikvm -XXlib:libartd.so -Ximage:$(shell pwd)/$(HOST_CORE_IMG_OUT) -classpath $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).jar -Djava.library.path=$(HOST_OUT_SHARED_LIBRARIES) $(1) $(2) \
    124           && echo test-art-host-oat-default-$(1) PASSED || (echo test-art-host-oat-default-$(1) FAILED && exit 1)
    125 	$(hide) rm -r /tmp/android-data/test-art-host-oat-default-$(1)
    126 
    127 .PHONY: test-art-host-oat-interpreter-$(1)
    128 test-art-host-oat-interpreter-$(1): $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).odex test-art-host-dependencies
    129 	mkdir -p /tmp/android-data/test-art-host-oat-interpreter-$(1)
    130 	ANDROID_DATA=/tmp/android-data/test-art-host-oat-interpreter-$(1) \
    131 	  ANDROID_ROOT=$(HOST_OUT) \
    132 	  LD_LIBRARY_PATH=$(HOST_OUT_SHARED_LIBRARIES) \
    133 	  dalvikvm -XXlib:libartd.so -Ximage:$(shell pwd)/$(HOST_CORE_IMG_OUT) -Xint -classpath $(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).jar -Djava.library.path=$(HOST_OUT_SHARED_LIBRARIES) $(1) $(2) \
    134           && echo test-art-host-oat-interpreter-$(1) PASSED || (echo test-art-host-oat-interpreter-$(1) FAILED && exit 1)
    135 	$(hide) rm -r /tmp/android-data/test-art-host-oat-interpreter-$(1)
    136 
    137 .PHONY: test-art-host-oat-$(1)
    138 test-art-host-oat-$(1): test-art-host-oat-default-$(1) test-art-host-oat-interpreter-$(1)
    139 
    140 .PHONY: test-art-oat-$(1)
    141 test-art-oat-$(1): test-art-host-oat-$(1) test-art-target-oat-$(1)
    142 
    143 ART_TEST_TARGET_OAT_TARGETS += test-art-target-oat-$(1)
    144 ART_TEST_HOST_OAT_DEFAULT_TARGETS += test-art-host-oat-default-$(1)
    145 ART_TEST_HOST_OAT_INTERPRETER_TARGETS += test-art-host-oat-interpreter-$(1)
    146 endef
    147 $(foreach dir,$(TEST_OAT_DIRECTORIES), $(eval $(call declare-test-art-oat-targets,$(dir))))
    148 
    149 ########################################################################
    150 
    151 TEST_ART_RUN_TEST_MAKE_TARGETS :=
    152 
    153 # Helper to create individual build targets for tests.
    154 # Must be called with $(eval)
    155 # $(1): the test number
    156 define declare-make-art-run-test
    157 dmart_target := $(TARGET_OUT_DATA)/art-run-tests/$(1)/touch
    158 $$(dmart_target): $(DX) $(HOST_OUT_EXECUTABLES)/jasmin
    159 	$(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@)
    160 	$(hide) DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) $(LOCAL_PATH)/run-test --build-only --output-path $$(abspath $$(dir $$@)) $(1)
    161 	$(hide) touch $$@
    162 
    163 
    164 TEST_ART_RUN_TEST_MAKE_TARGETS += $$(dmart_target)
    165 dmart_target :=
    166 endef
    167 
    168 # Expand all tests.
    169 $(foreach test, $(wildcard $(LOCAL_PATH)/[0-9]*), $(eval $(call declare-make-art-run-test,$(notdir $(test)))))
    170 
    171 include $(CLEAR_VARS)
    172 LOCAL_MODULE_TAGS := tests
    173 LOCAL_MODULE := art-run-tests
    174 LOCAL_ADDITIONAL_DEPENDENCIES := $(TEST_ART_RUN_TEST_MAKE_TARGETS)
    175 include $(BUILD_PHONY_PACKAGE)
    176 
    177 # clear temp vars
    178 TEST_ART_RUN_TEST_MAKE_TARGETS :=
    179 declare-make-art-run-test :=
    180 
    181 ########################################################################
    182