| #!/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}" |