| # |
| # Copyright (C) 2015 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| |
| # Debug configuration (development and continuous testing) |
| # |
| # We run in debug mode to get more error checking and enable JDWP verbose logs |
| # to investigate failures during testing. |
| |
| # Target settings |
| jdwp_test_classpath_target := /data/jdwp/apache-harmony-jdwp-tests.jar:/data/junit/junit-targetdex.jar |
| jdwp_test_runtime_bin_target := dalvikvm |
| |
| # Host settings |
| jdwp_test_classpath_host := $(HOST_OUT_JAVA_LIBRARIES)/apache-harmony-jdwp-tests-hostdex.jar:$(HOST_OUT_JAVA_LIBRARIES)/junit-hostdex.jar |
| jdwp_test_runtime_bin_host := $(HOST_OUT_EXECUTABLES)/art |
| |
| # Common runtime settings for runner and debuggee. |
| jdwp_test_common_runtime_options := -XXlib:libartd.so -Xcompiler-option --debuggable |
| |
| # Debuggee runtime options |
| jdwp_test_runtime_options := -verbose:jdwp |
| #jdwp_test_runtime_options += -Xint # interpret-only mode |
| #jdwp_test_runtime_options += -Xnoimage-dex2oat # imageless mode |
| #jdwp_test_runtime_options += -Xcompiler-option --compiler-backend=Optimizing # optimizing compiler |
| #jdwp_test_runtime_options += -verbose:threads |
| |
| # Test suite class name |
| jdwp_test_suite_class_name := org.apache.harmony.jpda.tests.share.AllTests |
| |
| # The lists of ABIs supported on host and target. |
| jdwp_tests_host_abis := |
| jdwp_tests_target_abis := |
| |
| ifneq ($(HOST_PREFER_32_BIT),true) |
| jdwp_tests_host_abis := 64 32 |
| else |
| jdwp_tests_host_abis := 32 |
| endif |
| |
| ifdef TARGET_2ND_ARCH |
| ifeq ($(TARGET_IS_64_BIT),true) |
| jdwp_tests_target_abis := 64 32 |
| else |
| jdwp_tests_target_abis := 32 |
| $(warning Unsupported multi-target configuration!) |
| endif |
| else |
| ifeq ($(TARGET_IS_64_BIT),true) |
| jdwp_tests_target_abis := 64 |
| else |
| jdwp_tests_target_abis := 32 |
| endif |
| endif |
| |
| jdwp_tests_host_dependencies := \ |
| $(HOST_OUT_EXECUTABLES)/art \ |
| $(HOST_OUT_JAVA_LIBRARIES)/apache-harmony-jdwp-tests-hostdex.jar \ |
| $(HOST_OUT_JAVA_LIBRARIES)/junit-hostdex.jar |
| |
| jdwp_tests_target_dependencies := \ |
| $(TARGET_OUT_DATA)/jdwp/apache-harmony-jdwp-tests.jar \ |
| $(TARGET_OUT_DATA)/junit/junit-targetdex.jar |
| |
| # Define a JDWP host rule |
| # |
| # $(1) ABI (32 or 64) |
| # $(2) rule name (ex: run-jdwp-tests-host32) |
| # $(3) extra dependency rule (ex: run-jdwp-tests-host-all64) |
| define define-jdwp-host-rule |
| .PHONY: $(2) |
| $(2): jdwp_test_runtime_host := $(jdwp_test_runtime_bin_host) --$(1) $(jdwp_test_common_runtime_options) |
| $(2): $(jdwp_tests_host_dependencies) $(3) |
| $(hide) echo "Running JDWP $(1)-bit host tests" |
| $$(jdwp_test_runtime_host) -cp $(jdwp_test_classpath_host) \ |
| $(jdwp_test_target_runtime_common_args) \ |
| -Djpda.settings.debuggeeJavaPath='$$(jdwp_test_runtime_host) $(jdwp_test_runtime_options)' \ |
| $(jdwp_test_suite_class_name) |
| endef |
| |
| # Declare all JDWP host rules |
| # |
| # $(1) ABI (32 or 64) |
| define declare-jdwp-host-rule |
| # Declare standalone host rule for the given ABI. |
| $(eval $(call define-jdwp-host-rule,$(1),run-jdwp-tests-host$(1),)) |
| |
| # Declare variant host rule for run-jdwp-tests-host. It depends on the previous abi rule(s) |
| # so all ABIs are tested. |
| $(eval $(call define-jdwp-host-rule,$(1),run-jdwp-tests-host-all$(1),$(jdwp_tests_previous_host_rule))) |
| jdwp_tests_previous_host_rule := run-jdwp-tests-host-all$(1) |
| endef |
| |
| # Waits for device to boot completely. |
| define wait-for-boot-complete |
| $(hide) echo "Wait for boot complete ..." |
| $(hide) while [ `adb wait-for-device shell getprop dev.bootcomplete | grep -c 1` -eq 0 ]; \ |
| do \ |
| sleep 1; \ |
| done |
| $(hide) echo "Boot complete" |
| endef |
| |
| # Define a JDWP target rule |
| # |
| # $(1) ABI (32 or 64) |
| # $(2) rule name (ex: run-jdwp-tests-target32) |
| # $(3) extra dependency rule (ex: run-jdwp-tests-target-all64) |
| define define-jdwp-target-rule |
| .PHONY: $(2) |
| $(2): jdwp_test_runtime_target := $(jdwp_test_runtime_bin_target)$(1) $(jdwp_test_common_runtime_options) |
| $(2): $(jdwp_tests_target_dependencies) $(3) |
| $(hide) echo "Running JDWP $(1)-bit target tests" |
| adb root |
| adb wait-for-device shell stop |
| adb remount |
| adb sync |
| adb reboot |
| $$(call wait-for-boot-complete) |
| adb shell $$(jdwp_test_runtime_target) -cp $(jdwp_test_classpath_target) \ |
| $(jdwp_test_target_runtime_common_args) \ |
| -Djpda.settings.debuggeeJavaPath='$$(jdwp_test_runtime_target) $(jdwp_test_runtime_options)' \ |
| $(jdwp_test_suite_class_name) |
| endef |
| |
| # Declare all JDWP target rules |
| # |
| # $(1) ABI (32 or 64) |
| define declare-jdwp-target-rule |
| # Declare standalone target rule for the given ABI. |
| $(eval $(call define-jdwp-target-rule,$(1),run-jdwp-tests-target$(1),)) |
| |
| # Declare variant target rule for run-jdwp-tests-target. It depends on the previous abi rule(s) |
| # so all ABIs are tested. |
| $(eval $(call define-jdwp-target-rule,$(1),run-jdwp-tests-target-all$(1),$(jdwp_tests_previous_target_rule))) |
| jdwp_tests_previous_target_rule := run-jdwp-tests-target-all$(1) |
| endef |
| |
| # Declare host and target rules for each ABI |
| $(foreach abi,$(jdwp_tests_host_abis),$(eval $(call declare-jdwp-host-rule,$(abi)))) |
| $(foreach abi,$(jdwp_tests_target_abis),$(eval $(call declare-jdwp-target-rule,$(abi)))) |
| |
| # High level host and target rules running tests for each ABI. |
| .PHONY: run-jdwp-tests-host |
| run-jdwp-tests-host: $(jdwp_tests_previous_host_rule) |
| |
| .PHONY: run-jdwp-tests-target |
| run-jdwp-tests-target: $(jdwp_tests_previous_target_rule) |
| |
| jdwp_tests_host_abis := |
| jdwp_tests_target_abis := |
| jdwp_tests_host_dependencies := |
| jdwp_tests_target_dependencies := |
| |
| .PHONY: run-jdwp-tests-ri |
| run-jdwp-tests-ri: $(HOST_OUT_JAVA_LIBRARIES)/apache-harmony-jdwp-tests-host.jar $(HOST_OUT_JAVA_LIBRARIES)/junit.jar |
| $(hide) java -cp $(HOST_OUT_JAVA_LIBRARIES)/apache-harmony-jdwp-tests-host.jar:$(HOST_OUT_JAVA_LIBRARIES)/junit.jar \ |
| -Djpda.settings.verbose=true \ |
| -Djpda.settings.debuggeeJavaPath=java \ |
| $(jdwp_test_suite_class_name) |