110 lines
3.8 KiB
Makefile
110 lines
3.8 KiB
Makefile
#
|
|
# Copyright (C) 2014 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.
|
|
#
|
|
|
|
LOCAL_PATH := $(call my-dir)
|
|
|
|
define declare-strace-test-target
|
|
include $(CLEAR_VARS)
|
|
LOCAL_SRC_FILES := $(1)
|
|
LOCAL_MULTILIB := both
|
|
LOCAL_CFLAGS := -Wno-unused-parameter -Wno-error=return-type
|
|
LOCAL_MODULE := strace-$(basename $(1))-test
|
|
LOCAL_MODULE_STEM_32 := strace-$(basename $(1))32-test
|
|
LOCAL_MODULE_STEM_64 := strace-$(basename $(1))64-test
|
|
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
|
|
LOCAL_MODULE_TAGS := tests
|
|
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
|
include $(BUILD_EXECUTABLE)
|
|
endef
|
|
|
|
src_files := \
|
|
childthread.c \
|
|
clone.c \
|
|
fork.c \
|
|
leaderkill.c \
|
|
mmap_offset_decode.c \
|
|
mtd.c \
|
|
select.c \
|
|
sfd.c \
|
|
sig.c \
|
|
sigkill_rain.c \
|
|
sigreturn.c \
|
|
skodic.c \
|
|
threaded_execve.c \
|
|
ubi.c \
|
|
vfork.c \
|
|
wait_must_be_interruptible.c \
|
|
|
|
$(foreach file, $(src_files), $(eval $(call declare-strace-test-target,$(file))))
|
|
|
|
# Simple sanity tests meant to be run manually on device. Tests expect that
|
|
# strace will report "exit with 0" at the end of the programs. Some tests
|
|
# document what string should be expected in the output and for them additional
|
|
# checks is made (*-expected output vars)).
|
|
#
|
|
# Failure should be inspected manually. Usually they require a special test
|
|
# setup that can't be easily automated.
|
|
#
|
|
# adb sync is requreired before running "mm run-strace-tests".
|
|
# logs are pulled automatically from the device to the root of the tree
|
|
# (strace-log-*)
|
|
|
|
childthread-expected-output := 'write(1, "OK\\n",'
|
|
clone-expected-output := 'write(1, "original\\n",'
|
|
fork-expected-output := 'write(1, "parent\\n",'
|
|
leaderkill-expected-output := 'write(1, "OK\\n",'
|
|
mmap_offset_decode-expected-output := ''
|
|
mtd-expected-output := ''
|
|
select-expected-output := ''
|
|
sfd-expected-output := ''
|
|
sig-expected-output := 'write(2, "qwerty\\n",'
|
|
sigkill_rain-expected-output := ''
|
|
sigreturn-expected-output := 'RT_1 RT_3 RT_31 RT_32'
|
|
skodic-expected-output := ''
|
|
threaded_execve-expected-output := ''
|
|
ubi-expected-output := ''
|
|
vfork-expected-output := 'write(1, "parent\\n",'
|
|
wait_must_be_interruptible-expected-output := 'write(1, "Good: wait seems to be correctly"'
|
|
|
|
run-strace-%-test: TEST_TMP_DIR := /data/local/tmp
|
|
run-strace-%-test:
|
|
@printf >&2 "\n$*: RUNNING...\n" ; \
|
|
adb shell rm -f $(TEST_TMP_DIR)/strace-log-$* ; \
|
|
timeout -s 9 10 adb shell strace -v -f -o$(TEST_TMP_DIR)/strace-log-$* strace-$*-test > strace-log-$*-output ; \
|
|
adb pull $(TEST_TMP_DIR)/strace-log-$* 2> /dev/null ; \
|
|
adb pull $(TEST_TMP_DIR)/strace-log-$*-output 2> /dev/null ; \
|
|
if adb shell cat $(TEST_TMP_DIR)/strace-log-$* | grep "exited with 0" > /dev/null ; \
|
|
then \
|
|
if [ -n $($(shell echo $* | sed 's/[0-9]//g')-expected-output) ] ; then \
|
|
if adb shell cat $(TEST_TMP_DIR)/strace-log-$* | grep $($(shell echo $* | sed 's/[0-9]//g')-expected-output) > /dev/null ; \
|
|
then printf >&2 "$*: PASSED\n" ; \
|
|
else printf >&2 "$*: FAILED\n" ; \
|
|
fi ; \
|
|
else \
|
|
printf >&2 "$*: PASSED\n" ; \
|
|
fi ; \
|
|
else \
|
|
printf >&2 "$*: FAILED\n" ; \
|
|
fi
|
|
|
|
adb-sync:
|
|
adb sync
|
|
|
|
run-strace32-test: $(foreach file, $(src_files), run-strace-$(basename $(file))32-test)
|
|
run-strace64-test: $(foreach file, $(src_files), run-strace-$(basename $(file))64-test)
|
|
|
|
run-strace-tests: adb-sync run-strace32-test run-strace64-test
|