1afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers#
2afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Copyright (C) 2011 The Android Open Source Project
3afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers#
4afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Licensed under the Apache License, Version 2.0 (the "License");
5afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# you may not use this file except in compliance with the License.
6afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# You may obtain a copy of the License at
7afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers#
8afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers#      http://www.apache.org/licenses/LICENSE-2.0
9afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers#
10afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Unless required by applicable law or agreed to in writing, software
11afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# distributed under the License is distributed on an "AS IS" BASIS,
12afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# See the License for the specific language governing permissions and
14afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# limitations under the License.
15afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers#
16afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
17afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersifndef ANDROID_COMMON_TEST_MK
18afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersANDROID_COMMON_TEST_MK = true
19afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
20afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersinclude art/build/Android.common_path.mk
21afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
221fe5e5cce85a3cdc64a8d226a8ef4e6134c2b9ebAndreas Gampe# We need to set a define for the nativetest dir so that common_runtime_test will know the right
231fe5e5cce85a3cdc64a8d226a8ef4e6134c2b9ebAndreas Gampe# path. (The problem is being a 32b test on 64b device, which is still located in nativetest64).
241fe5e5cce85a3cdc64a8d226a8ef4e6134c2b9ebAndreas GampeART_TARGET_CFLAGS += -DART_TARGET_NATIVETEST_DIR=${ART_TARGET_NATIVETEST_DIR}
251fe5e5cce85a3cdc64a8d226a8ef4e6134c2b9ebAndreas Gampe
26afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# List of known broken tests that we won't attempt to execute. The test name must be the full
27afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# rule name such as test-art-host-oat-optimizing-HelloWorld64.
281c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas GampeART_TEST_KNOWN_BROKEN := \
291c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-host-run-test-gcstress-optimizing-no-prebuild-004-SignalTest32 \
301c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-host-run-test-gcstress-optimizing-prebuild-004-SignalTest32 \
311c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-host-run-test-gcstress-optimizing-norelocate-004-SignalTest32 \
321c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-host-run-test-gcstress-optimizing-relocate-004-SignalTest32 \
331c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-host-run-test-gcverify-optimizing-no-prebuild-004-SignalTest32 \
341c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-host-run-test-gcverify-optimizing-prebuild-004-SignalTest32 \
351c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-host-run-test-gcverify-optimizing-norelocate-004-SignalTest32 \
361c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-host-run-test-gcverify-optimizing-relocate-004-SignalTest32 \
371c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-host-run-test-optimizing-no-prebuild-004-SignalTest32 \
381c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-host-run-test-optimizing-prebuild-004-SignalTest32 \
391c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-host-run-test-optimizing-norelocate-004-SignalTest32 \
401c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-host-run-test-optimizing-relocate-004-SignalTest32 \
411c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-target-run-test-gcstress-optimizing-prebuild-004-SignalTest32 \
421c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-target-run-test-gcstress-optimizing-norelocate-004-SignalTest32 \
431c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-target-run-test-gcstress-default-prebuild-004-SignalTest32 \
441c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-target-run-test-gcstress-default-norelocate-004-SignalTest32 \
451c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-target-run-test-gcstress-optimizing-relocate-004-SignalTest32 \
461c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-target-run-test-gcstress-default-relocate-004-SignalTest32 \
471c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-target-run-test-gcstress-optimizing-no-prebuild-004-SignalTest32 \
481c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampe  test-art-target-run-test-gcstress-default-no-prebuild-004-SignalTest32
49afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
50f61b5377068f22c0be7b2f6e62961e620408beb2Nicolas Geoffray# List of known failing tests that when executed won't cause test execution to not finish.
51f61b5377068f22c0be7b2f6e62961e620408beb2Nicolas Geoffray# The test name must be the full rule name such as test-art-host-oat-optimizing-HelloWorld64.
52f61b5377068f22c0be7b2f6e62961e620408beb2Nicolas GeoffrayART_TEST_KNOWN_FAILING :=
53afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
54afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Keep going after encountering a test failure?
55e7655c554403dbac5110b7e3aa875116814a8dc3Andreas GampeART_TEST_KEEP_GOING ?= true
56afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
575242c0ab0505f0f038b15c3d934a79a6b4e5ef17Ian Rogers# Do you want all tests, even those that are time consuming?
585242c0ab0505f0f038b15c3d934a79a6b4e5ef17Ian RogersART_TEST_FULL ?= true
595242c0ab0505f0f038b15c3d934a79a6b4e5ef17Ian Rogers
605242c0ab0505f0f038b15c3d934a79a6b4e5ef17Ian Rogers# Do you want optimizing compiler tests run?
615242c0ab0505f0f038b15c3d934a79a6b4e5ef17Ian RogersART_TEST_OPTIMIZING ?= $(ART_TEST_FULL)
625242c0ab0505f0f038b15c3d934a79a6b4e5ef17Ian Rogers
635242c0ab0505f0f038b15c3d934a79a6b4e5ef17Ian Rogers# Do you want tracing tests run?
645242c0ab0505f0f038b15c3d934a79a6b4e5ef17Ian RogersART_TEST_TRACE ?= $(ART_TEST_FULL)
655242c0ab0505f0f038b15c3d934a79a6b4e5ef17Ian Rogers
66701aa645a3e61fe8866000bb66b1287196a5536aIan Rogers# Do you want tests with GC verification enabled run?
67701aa645a3e61fe8866000bb66b1287196a5536aIan RogersART_TEST_GC_VERIFY ?= $(ART_TEST_FULL)
68701aa645a3e61fe8866000bb66b1287196a5536aIan Rogers
698a14b75d876ad20f08087664070354fa6f65a029Ian Rogers# Do you want tests with the GC stress mode enabled run?
708a14b75d876ad20f08087664070354fa6f65a029Ian RogersART_TEST_GC_STRESS ?= $(ART_TEST_FULL)
718a14b75d876ad20f08087664070354fa6f65a029Ian Rogers
72a59dd80f9f48cb750d329d4d4af2d99d72b484d1Alex Light# Do you want run-tests with relocation enabled?
73a59dd80f9f48cb750d329d4d4af2d99d72b484d1Alex LightART_TEST_RUN_TEST_RELOCATE ?= $(ART_TEST_FULL)
74a59dd80f9f48cb750d329d4d4af2d99d72b484d1Alex Light
75a59dd80f9f48cb750d329d4d4af2d99d72b484d1Alex Light# Do you want run-tests with relocation disabled?
76a59dd80f9f48cb750d329d4d4af2d99d72b484d1Alex LightART_TEST_RUN_TEST_NO_RELOCATE ?= $(ART_TEST_FULL)
77a59dd80f9f48cb750d329d4d4af2d99d72b484d1Alex Light
789d722533b0ef6547ee0ab5286f65af98451c36e4Alex Light# Do you want run-tests with prebuild disabled?
799d722533b0ef6547ee0ab5286f65af98451c36e4Alex LightART_TEST_RUN_TEST_NO_PREBUILD ?= $(ART_TEST_FULL)
80a59dd80f9f48cb750d329d4d4af2d99d72b484d1Alex Light
813bb12b9bea020e2b797ec3fe6bc253d33189ed97Nicolas Geoffray# Do you want run-tests with prebuild enabled?
823bb12b9bea020e2b797ec3fe6bc253d33189ed97Nicolas GeoffrayART_TEST_RUN_TEST_PREBUILD ?= true
833bb12b9bea020e2b797ec3fe6bc253d33189ed97Nicolas Geoffray
84bfac14acef0c2327ef8c28f146dd17d009aa8669Alex Light# Do you want failed tests to have their artifacts cleaned up?
85bfac14acef0c2327ef8c28f146dd17d009aa8669Alex LightART_TEST_RUN_TEST_ALWAYS_CLEAN ?= true
86bfac14acef0c2327ef8c28f146dd17d009aa8669Alex Light
87afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Define the command run on test failure. $(1) is the name of the test. Executed by the shell.
88afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersdefine ART_TEST_FAILED
89afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ( [ -f $(ART_HOST_TEST_DIR)/skipped/$(1) ] || \
90afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    (mkdir -p $(ART_HOST_TEST_DIR)/failed/ && touch $(ART_HOST_TEST_DIR)/failed/$(1) && \
91afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers      echo $(ART_TEST_KNOWN_FAILING) | grep -q $(1) \
92afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers        && (echo -e "$(1) \e[91mKNOWN FAILURE\e[0m") \
93d2c0b097261f8c55139bfb6426c89f3d0f8deb8aIan Rogers        || (echo -e "$(1) \e[91mFAILED\e[0m" >&2 )))
94afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersendef
95afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
96afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Define the command run on test success. $(1) is the name of the test. Executed by the shell.
97afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# The command checks prints "PASSED" then checks to see if this was a top-level make target (e.g.
98afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# "mm test-art-host-oat-HelloWorld32"), if it was then it does nothing, otherwise it creates a file
99afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# to be printed in the passing test summary.
100afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersdefine ART_TEST_PASSED
101afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ( echo -e "$(1) \e[92mPASSED\e[0m" && \
102afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    (echo $(MAKECMDGOALS) | grep -q $(1) || \
103afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers      (mkdir -p $(ART_HOST_TEST_DIR)/passed/ && touch $(ART_HOST_TEST_DIR)/passed/$(1))))
104afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersendef
105afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
106afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Define the command run on test success of multiple prerequisites. $(1) is the name of the test.
107afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# When the test is a top-level make target then a summary of the ran tests is produced. Executed by
108afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# the shell.
109afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersdefine ART_TEST_PREREQ_FINISHED
110afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  (echo -e "$(1) \e[32mCOMPLETE\e[0m" && \
111afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    (echo $(MAKECMDGOALS) | grep -q -v $(1) || \
112afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers      (([ -d $(ART_HOST_TEST_DIR)/passed/ ] \
113afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers        && (echo -e "\e[92mPASSING TESTS\e[0m" && ls -1 $(ART_HOST_TEST_DIR)/passed/) \
114afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers        || (echo -e "\e[91mNO TESTS PASSED\e[0m")) && \
115afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers      ([ -d $(ART_HOST_TEST_DIR)/skipped/ ] \
116afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers        && (echo -e "\e[93mSKIPPED TESTS\e[0m" && ls -1 $(ART_HOST_TEST_DIR)/skipped/) \
117afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers        || (echo -e "\e[92mNO TESTS SKIPPED\e[0m")) && \
118afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers      ([ -d $(ART_HOST_TEST_DIR)/failed/ ] \
1195182915657a6002672c6e1b421043f1ae6a4186aIan Rogers        && (echo -e "\e[91mFAILING TESTS\e[0m" >&2 && ls -1 $(ART_HOST_TEST_DIR)/failed/ >&2) \
120afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers        || (echo -e "\e[92mNO TESTS FAILED\e[0m")) \
121afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers      && ([ ! -d $(ART_HOST_TEST_DIR)/failed/ ] && rm -r $(ART_HOST_TEST_DIR) \
122afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers          || (rm -r $(ART_HOST_TEST_DIR) && false)))))
123afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersendef
124afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
125afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Define the command executed by the shell ahead of running an art test. $(1) is the name of the
126afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# test.
127afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersdefine ART_TEST_SKIP
128afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ((echo $(ART_TEST_KNOWN_BROKEN) | grep -q -v $(1) \
129afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers     && ([ ! -d $(ART_HOST_TEST_DIR)/failed/ ] || [ $(ART_TEST_KEEP_GOING) = true ])\
130afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers     && echo -e "$(1) \e[95mRUNNING\e[0m") \
131afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers   || ((mkdir -p $(ART_HOST_TEST_DIR)/skipped/ && touch $(ART_HOST_TEST_DIR)/skipped/$(1) \
132afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers     && ([ -d $(ART_HOST_TEST_DIR)/failed/ ] \
133afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers       && echo -e "$(1) \e[93mSKIPPING DUE TO EARLIER FAILURE\e[0m") \
134afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers     || echo -e "$(1) \e[93mSKIPPING BROKEN TEST\e[0m") && false))
135afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersendef
136afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
137afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Create a build rule to create the dex file for a test.
138afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# $(1): module prefix, e.g. art-test-dex
139afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# $(2): input test directory in art/test, e.g. HelloWorld
140afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# $(3): target output module path (default module path is used on host)
141afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# $(4): additional dependencies
1421a2f84e80e852b1e210ed54fa995f3d781a23bd3Ian Rogers# $(5): a make variable used to collate target dependencies, e.g ART_TEST_TARGET_OAT_HelloWorld_DEX
1431a2f84e80e852b1e210ed54fa995f3d781a23bd3Ian Rogers# $(6): a make variable used to collate host dependencies, e.g ART_TEST_HOST_OAT_HelloWorld_DEX
144afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersdefine build-art-test-dex
145afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ifeq ($(ART_BUILD_TARGET),true)
146afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    include $(CLEAR_VARS)
147afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_MODULE := $(1)-$(2)
148afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_SRC_FILES := $(call all-java-files-under, $(2))
149afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_NO_STANDARD_LIBRARIES := true
150afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_DEX_PREOPT := false
151afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common_test.mk $(4)
152afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_MODULE_TAGS := tests
153afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_JAVA_LIBRARIES := $(TARGET_CORE_JARS)
154afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_MODULE_PATH := $(3)
155afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_DEX_PREOPT_IMAGE_LOCATION := $(TARGET_CORE_IMG_OUT)
156afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    include $(BUILD_JAVA_LIBRARY)
157532714abd50c547f0fdbe830f811d99e621e2d34Brian Carlstrom    $(5) := $$(LOCAL_INSTALLED_MODULE)
158afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  endif
159afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ifeq ($(ART_BUILD_HOST),true)
160afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    include $(CLEAR_VARS)
161afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_MODULE := $(1)-$(2)
162afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_SRC_FILES := $(call all-java-files-under, $(2))
163afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_NO_STANDARD_LIBRARIES := true
164afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_DEX_PREOPT := false
165afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common_test.mk $(4)
166afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_JAVA_LIBRARIES := $(HOST_CORE_JARS)
167afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_DEX_PREOPT_IMAGE := $(HOST_CORE_IMG_LOCATION)
168afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    include $(BUILD_HOST_DALVIK_JAVA_LIBRARY)
1691a2f84e80e852b1e210ed54fa995f3d781a23bd3Ian Rogers    $(6) := $$(LOCAL_INSTALLED_MODULE)
170afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  endif
171afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersendef
172afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
173afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersendif # ANDROID_COMMON_TEST_MK
174