#!/bin/bash
# Copyright (C) 2018 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.
set -eux
SCRIPT_DIR="$(realpath "$(dirname "${BASH_SOURCE[0]}")")"
ROOT_DIR="$(realpath ${SCRIPT_DIR}/../..)"
cd ${ROOT_DIR}
# Check that the expected environment variables are present (due to set -u).
echo PERFETTO_TEST_GN_ARGS: ${PERFETTO_TEST_GN_ARGS}
echo PERFETTO_TEST_ENTRYPT: ${PERFETTO_TEST_ENTRYPT}
# Run PERFETTO_TEST_ENTRYPOINT inside the container with the following setup:
# Mount (readonly) the current source directory inside the container. Enter the
# container as root, make a mutable copy the source tree, and then invoke
# the test script as that user.
#
# SYS_PTRACE capability is added for [at least] the leak sanitizer.
# TODO(rsavitski): figure out why "su perfetto -c" was messing with the test
# scripts (at least the output truncation).
sudo docker run --rm -t \
--user=root:root \
--cap-add=SYS_PTRACE \
-e PERFETTO_TEST_GN_ARGS="${PERFETTO_TEST_GN_ARGS}" \
-v ${ROOT_DIR}:/perfetto:ro \
asia.gcr.io/perfetto-ci/perfetto-ci:latest \
/bin/bash \
"-c" \
"cp -r /perfetto /home/perfetto/src && \
cd /home/perfetto/src && \
${PERFETTO_TEST_ENTRYPT}"