1 # 2 # Copyright (C) 2015 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 # Debug configuration (development and continuous testing) 18 # 19 # We run in debug mode to get more error checking and enable JDWP verbose logs 20 # to investigate failures during testing. 21 22 # Target settings 23 jdwp_test_classpath_target := /data/jdwp/apache-harmony-jdwp-tests.jar:/data/junit/junit-targetdex.jar 24 jdwp_test_runtime_bin_target := dalvikvm 25 26 # Host settings 27 jdwp_test_classpath_host := $(HOST_OUT_JAVA_LIBRARIES)/apache-harmony-jdwp-tests-hostdex.jar:$(HOST_OUT_JAVA_LIBRARIES)/junit-hostdex.jar 28 jdwp_test_runtime_bin_host := $(HOST_OUT_EXECUTABLES)/art 29 30 # Common runtime settings for runner and debuggee. 31 jdwp_test_common_runtime_options := -XXlib:libartd.so -Xcompiler-option --debuggable 32 33 # Debuggee runtime options 34 jdwp_test_runtime_options := -verbose:jdwp 35 #jdwp_test_runtime_options += -Xint # interpret-only mode 36 #jdwp_test_runtime_options += -Xnoimage-dex2oat # imageless mode 37 #jdwp_test_runtime_options += -Xcompiler-option --compiler-backend=Optimizing # optimizing compiler 38 #jdwp_test_runtime_options += -verbose:threads 39 40 # Test suite class name 41 jdwp_test_suite_class_name := org.apache.harmony.jpda.tests.share.AllTests 42 43 # The lists of ABIs supported on host and target. 44 jdwp_tests_host_abis := 45 jdwp_tests_target_abis := 46 47 ifneq ($(HOST_PREFER_32_BIT),true) 48 jdwp_tests_host_abis := 64 32 49 else 50 jdwp_tests_host_abis := 32 51 endif 52 53 ifdef TARGET_2ND_ARCH 54 ifeq ($(TARGET_IS_64_BIT),true) 55 jdwp_tests_target_abis := 64 32 56 else 57 $(error Unsupported multi-target configuration!) 58 endif 59 else 60 ifeq ($(TARGET_IS_64_BIT),true) 61 jdwp_tests_target_abis := 64 62 else 63 jdwp_tests_target_abis := 32 64 endif 65 endif 66 67 jdwp_tests_host_dependencies := \ 68 $(HOST_OUT_EXECUTABLES)/art \ 69 $(HOST_OUT_JAVA_LIBRARIES)/apache-harmony-jdwp-tests-hostdex.jar \ 70 $(HOST_OUT_JAVA_LIBRARIES)/junit-hostdex.jar 71 72 jdwp_tests_target_dependencies := \ 73 $(TARGET_OUT_DATA)/jdwp/apache-harmony-jdwp-tests.jar \ 74 $(TARGET_OUT_DATA)/junit/junit-targetdex.jar 75 76 # Define a JDWP host rule 77 # 78 # $(1) ABI (32 or 64) 79 # $(2) rule name (ex: run-jdwp-tests-host32) 80 # $(3) extra dependency rule (ex: run-jdwp-tests-host-all64) 81 define define-jdwp-host-rule 82 .PHONY: $(2) 83 $(2): jdwp_test_runtime_host := $(jdwp_test_runtime_bin_host) --$(1) $(jdwp_test_common_runtime_options) 84 $(2): $(jdwp_tests_host_dependencies) $(3) 85 $(hide) echo "Running JDWP $(1)-bit host tests" 86 $$(jdwp_test_runtime_host) -cp $(jdwp_test_classpath_host) \ 87 $(jdwp_test_target_runtime_common_args) \ 88 -Djpda.settings.debuggeeJavaPath='$$(jdwp_test_runtime_host) $(jdwp_test_runtime_options)' \ 89 $(jdwp_test_suite_class_name) 90 endef 91 92 # Declare all JDWP host rules 93 # 94 # $(1) ABI (32 or 64) 95 define declare-jdwp-host-rule 96 # Declare standalone host rule for the given ABI. 97 $(eval $(call define-jdwp-host-rule,$(1),run-jdwp-tests-host$(1),)) 98 99 # Declare variant host rule for run-jdwp-tests-host. It depends on the previous abi rule(s) 100 # so all ABIs are tested. 101 $(eval $(call define-jdwp-host-rule,$(1),run-jdwp-tests-host-all$(1),$(jdwp_tests_previous_host_rule))) 102 jdwp_tests_previous_host_rule := run-jdwp-tests-host-all$(1) 103 endef 104 105 # Waits for device to boot completely. 106 define wait-for-boot-complete 107 $(hide) echo "Wait for boot complete ..." 108 $(hide) while [ `adb wait-for-device shell getprop dev.bootcomplete | grep -c 1` -eq 0 ]; \ 109 do \ 110 sleep 1; \ 111 done 112 $(hide) echo "Boot complete" 113 endef 114 115 # Define a JDWP target rule 116 # 117 # $(1) ABI (32 or 64) 118 # $(2) rule name (ex: run-jdwp-tests-target32) 119 # $(3) extra dependency rule (ex: run-jdwp-tests-target-all64) 120 define define-jdwp-target-rule 121 .PHONY: $(2) 122 $(2): jdwp_test_runtime_target := $(jdwp_test_runtime_bin_target)$(1) $(jdwp_test_common_runtime_options) 123 $(2): $(jdwp_tests_target_dependencies) $(3) 124 $(hide) echo "Running JDWP $(1)-bit target tests" 125 adb root 126 adb wait-for-device shell stop 127 adb remount 128 adb sync 129 adb reboot 130 $$(call wait-for-boot-complete) 131 adb shell $$(jdwp_test_runtime_target) -cp $(jdwp_test_classpath_target) \ 132 $(jdwp_test_target_runtime_common_args) \ 133 -Djpda.settings.debuggeeJavaPath='$$(jdwp_test_runtime_target) $(jdwp_test_runtime_options)' \ 134 $(jdwp_test_suite_class_name) 135 endef 136 137 # Declare all JDWP target rules 138 # 139 # $(1) ABI (32 or 64) 140 define declare-jdwp-target-rule 141 # Declare standalone target rule for the given ABI. 142 $(eval $(call define-jdwp-target-rule,$(1),run-jdwp-tests-target$(1),)) 143 144 # Declare variant target rule for run-jdwp-tests-target. It depends on the previous abi rule(s) 145 # so all ABIs are tested. 146 $(eval $(call define-jdwp-target-rule,$(1),run-jdwp-tests-target-all$(1),$(jdwp_tests_previous_target_rule))) 147 jdwp_tests_previous_target_rule := run-jdwp-tests-target-all$(1) 148 endef 149 150 # Declare host and target rules for each ABI 151 $(foreach abi,$(jdwp_tests_host_abis),$(eval $(call declare-jdwp-host-rule,$(abi)))) 152 $(foreach abi,$(jdwp_tests_target_abis),$(eval $(call declare-jdwp-target-rule,$(abi)))) 153 154 # High level host and target rules running tests for each ABI. 155 .PHONY: run-jdwp-tests-host 156 run-jdwp-tests-host: $(jdwp_tests_previous_host_rule) 157 158 .PHONY: run-jdwp-tests-target 159 run-jdwp-tests-target: $(jdwp_tests_previous_target_rule) 160 161 jdwp_tests_host_abis := 162 jdwp_tests_target_abis := 163 jdwp_tests_host_dependencies := 164 jdwp_tests_target_dependencies := 165 166 .PHONY: run-jdwp-tests-ri 167 run-jdwp-tests-ri: $(HOST_OUT_JAVA_LIBRARIES)/apache-harmony-jdwp-tests-host.jar $(HOST_OUT_JAVA_LIBRARIES)/junit.jar 168 $(hide) java -cp $(HOST_OUT_JAVA_LIBRARIES)/apache-harmony-jdwp-tests-host.jar:$(HOST_OUT_JAVA_LIBRARIES)/junit.jar \ 169 -Djpda.settings.verbose=true \ 170 -Djpda.settings.syncPort=34016 \ 171 -Djpda.settings.debuggeeJavaPath=java \ 172 $(jdwp_test_suite_class_name) 173 174