172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# 272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# Copyright (C) 2015 The Android Open Source Project 372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# 472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# Licensed under the Apache License, Version 2.0 (the "License"); 572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# you may not use this file except in compliance with the License. 672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# You may obtain a copy of the License at 772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# 872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# http://www.apache.org/licenses/LICENSE-2.0 972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# 1072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# Unless required by applicable law or agreed to in writing, software 1172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# distributed under the License is distributed on an "AS IS" BASIS, 1272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# See the License for the specific language governing permissions and 1472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# limitations under the License. 1572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# 1672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 1772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# Debug configuration (development and continuous testing) 1872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# 1972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# We run in debug mode to get more error checking and enable JDWP verbose logs 2072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# to investigate failures during testing. 2172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 2272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# Target settings 2321efc4b8b2d0e40ae0a5905c13323a7ec752faacPaul Duffinjdwp_test_classpath_target := /data/jdwp/apache-harmony-jdwp-tests.jar:/data/junit/junit.jar 2472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzjdwp_test_runtime_bin_target := dalvikvm 2572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 2672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# Host settings 2772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzjdwp_test_classpath_host := $(HOST_OUT_JAVA_LIBRARIES)/apache-harmony-jdwp-tests-hostdex.jar:$(HOST_OUT_JAVA_LIBRARIES)/junit-hostdex.jar 2872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzjdwp_test_runtime_bin_host := $(HOST_OUT_EXECUTABLES)/art 2972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 3072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# Common runtime settings for runner and debuggee. 312bb476ac3c4d738766d8fc9b64ffd672346bda54Sebastien Hertzjdwp_test_common_runtime_options := -XXlib:libartd.so -Xcompiler-option --debuggable 3272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 3372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# Debuggee runtime options 3472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzjdwp_test_runtime_options := -verbose:jdwp 3572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz#jdwp_test_runtime_options += -Xint # interpret-only mode 3672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz#jdwp_test_runtime_options += -Xnoimage-dex2oat # imageless mode 3772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz#jdwp_test_runtime_options += -Xcompiler-option --compiler-backend=Optimizing # optimizing compiler 3872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz#jdwp_test_runtime_options += -verbose:threads 3972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 4072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# Test suite class name 4172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzjdwp_test_suite_class_name := org.apache.harmony.jpda.tests.share.AllTests 4272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 4372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# The lists of ABIs supported on host and target. 4472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzjdwp_tests_host_abis := 4572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzjdwp_tests_target_abis := 4672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 4772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzifneq ($(HOST_PREFER_32_BIT),true) 4872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz jdwp_tests_host_abis := 64 32 4972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzelse 5072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz jdwp_tests_host_abis := 32 5172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzendif 5272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 5372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzifdef TARGET_2ND_ARCH 5472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz ifeq ($(TARGET_IS_64_BIT),true) 5572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz jdwp_tests_target_abis := 64 32 5672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz else 57b4b3136dd8205b8c5017b750fe3d4b14eba75962Ying Wang jdwp_tests_target_abis := 32 58b4b3136dd8205b8c5017b750fe3d4b14eba75962Ying Wang $(warning Unsupported multi-target configuration!) 5972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz endif 6072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzelse 6172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz ifeq ($(TARGET_IS_64_BIT),true) 6272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz jdwp_tests_target_abis := 64 6372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz else 6472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz jdwp_tests_target_abis := 32 6572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz endif 6672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzendif 6772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 6872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzjdwp_tests_host_dependencies := \ 6972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(HOST_OUT_EXECUTABLES)/art \ 7072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(HOST_OUT_JAVA_LIBRARIES)/apache-harmony-jdwp-tests-hostdex.jar \ 7172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(HOST_OUT_JAVA_LIBRARIES)/junit-hostdex.jar 7272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 7372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzjdwp_tests_target_dependencies := \ 7472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(TARGET_OUT_DATA)/jdwp/apache-harmony-jdwp-tests.jar \ 7521efc4b8b2d0e40ae0a5905c13323a7ec752faacPaul Duffin $(TARGET_OUT_DATA)/junit/junit.jar 7672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 7772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# Define a JDWP host rule 7872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# 7972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# $(1) ABI (32 or 64) 8072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# $(2) rule name (ex: run-jdwp-tests-host32) 8172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# $(3) extra dependency rule (ex: run-jdwp-tests-host-all64) 8272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzdefine define-jdwp-host-rule 8372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz.PHONY: $(2) 8472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz$(2): jdwp_test_runtime_host := $(jdwp_test_runtime_bin_host) --$(1) $(jdwp_test_common_runtime_options) 8572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz$(2): $(jdwp_tests_host_dependencies) $(3) 8672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(hide) echo "Running JDWP $(1)-bit host tests" 8772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $$(jdwp_test_runtime_host) -cp $(jdwp_test_classpath_host) \ 8872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(jdwp_test_target_runtime_common_args) \ 8972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz -Djpda.settings.debuggeeJavaPath='$$(jdwp_test_runtime_host) $(jdwp_test_runtime_options)' \ 9072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(jdwp_test_suite_class_name) 9172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzendef 9272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 9372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# Declare all JDWP host rules 9472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# 9572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# $(1) ABI (32 or 64) 9672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzdefine declare-jdwp-host-rule 9772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz # Declare standalone host rule for the given ABI. 9872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(eval $(call define-jdwp-host-rule,$(1),run-jdwp-tests-host$(1),)) 9972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 10072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz # Declare variant host rule for run-jdwp-tests-host. It depends on the previous abi rule(s) 10172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz # so all ABIs are tested. 10272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(eval $(call define-jdwp-host-rule,$(1),run-jdwp-tests-host-all$(1),$(jdwp_tests_previous_host_rule))) 10372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz jdwp_tests_previous_host_rule := run-jdwp-tests-host-all$(1) 10472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzendef 10572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 10672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# Waits for device to boot completely. 10772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzdefine wait-for-boot-complete 10872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz$(hide) echo "Wait for boot complete ..." 10972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz$(hide) while [ `adb wait-for-device shell getprop dev.bootcomplete | grep -c 1` -eq 0 ]; \ 11072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzdo \ 11172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz sleep 1; \ 11272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzdone 11372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz$(hide) echo "Boot complete" 11472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzendef 11572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 11672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# Define a JDWP target rule 11772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# 11872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# $(1) ABI (32 or 64) 11972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# $(2) rule name (ex: run-jdwp-tests-target32) 12072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# $(3) extra dependency rule (ex: run-jdwp-tests-target-all64) 12172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzdefine define-jdwp-target-rule 12272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz.PHONY: $(2) 12372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz$(2): jdwp_test_runtime_target := $(jdwp_test_runtime_bin_target)$(1) $(jdwp_test_common_runtime_options) 12472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz$(2): $(jdwp_tests_target_dependencies) $(3) 12572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(hide) echo "Running JDWP $(1)-bit target tests" 12672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz adb root 12772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz adb wait-for-device shell stop 12872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz adb remount 12972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz adb sync 13072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz adb reboot 13172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $$(call wait-for-boot-complete) 13272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz adb shell $$(jdwp_test_runtime_target) -cp $(jdwp_test_classpath_target) \ 13372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(jdwp_test_target_runtime_common_args) \ 13472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz -Djpda.settings.debuggeeJavaPath='$$(jdwp_test_runtime_target) $(jdwp_test_runtime_options)' \ 13572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(jdwp_test_suite_class_name) 13672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzendef 13772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 13872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# Declare all JDWP target rules 13972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# 14072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# $(1) ABI (32 or 64) 14172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzdefine declare-jdwp-target-rule 14272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz # Declare standalone target rule for the given ABI. 14372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(eval $(call define-jdwp-target-rule,$(1),run-jdwp-tests-target$(1),)) 14472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 14572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz # Declare variant target rule for run-jdwp-tests-target. It depends on the previous abi rule(s) 14672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz # so all ABIs are tested. 14772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(eval $(call define-jdwp-target-rule,$(1),run-jdwp-tests-target-all$(1),$(jdwp_tests_previous_target_rule))) 14872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz jdwp_tests_previous_target_rule := run-jdwp-tests-target-all$(1) 14972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzendef 15072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 15172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# Declare host and target rules for each ABI 15272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz$(foreach abi,$(jdwp_tests_host_abis),$(eval $(call declare-jdwp-host-rule,$(abi)))) 15372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz$(foreach abi,$(jdwp_tests_target_abis),$(eval $(call declare-jdwp-target-rule,$(abi)))) 15472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 15572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz# High level host and target rules running tests for each ABI. 15672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz.PHONY: run-jdwp-tests-host 15772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzrun-jdwp-tests-host: $(jdwp_tests_previous_host_rule) 15872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 15972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz.PHONY: run-jdwp-tests-target 16072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzrun-jdwp-tests-target: $(jdwp_tests_previous_target_rule) 16172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 16272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzjdwp_tests_host_abis := 16372f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzjdwp_tests_target_abis := 16472f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzjdwp_tests_host_dependencies := 16572f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzjdwp_tests_target_dependencies := 16672f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz 16772f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz.PHONY: run-jdwp-tests-ri 16872f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertzrun-jdwp-tests-ri: $(HOST_OUT_JAVA_LIBRARIES)/apache-harmony-jdwp-tests-host.jar $(HOST_OUT_JAVA_LIBRARIES)/junit.jar 16972f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(hide) java -cp $(HOST_OUT_JAVA_LIBRARIES)/apache-harmony-jdwp-tests-host.jar:$(HOST_OUT_JAVA_LIBRARIES)/junit.jar \ 17072f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz -Djpda.settings.verbose=true \ 17172f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz -Djpda.settings.debuggeeJavaPath=java \ 17272f0592ec4fa75b8c758f90c18c5766d9e5b368cSebastien Hertz $(jdwp_test_suite_class_name) 173