diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-12-11 11:57:37 +0100 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-12-11 14:20:56 +0100 |
commit | bb3d8e8e4451211331afa81cc7754a9d65c12e3e (patch) | |
tree | ee088ec5d09cd09fd73f595f529770c32b55b447 /test/end-to-end | |
parent | 4db441152a5b9b0b86206a4f08cebdbf885e9831 (diff) | |
download | justbuild-bb3d8e8e4451211331afa81cc7754a9d65c12e3e.tar.gz |
Add test verifying the upload of the log for failed root computation
Diffstat (limited to 'test/end-to-end')
-rw-r--r-- | test/end-to-end/computed-roots/TARGETS | 8 | ||||
-rw-r--r-- | test/end-to-end/computed-roots/error-remote.sh | 86 |
2 files changed, 94 insertions, 0 deletions
diff --git a/test/end-to-end/computed-roots/TARGETS b/test/end-to-end/computed-roots/TARGETS index 8abea7d7..94793785 100644 --- a/test/end-to-end/computed-roots/TARGETS +++ b/test/end-to-end/computed-roots/TARGETS @@ -26,6 +26,13 @@ , "keep": ["out/not-export.log", "out/not-content-fixed.log", "out/cycle.log"] } +, "error-remote": + { "type": ["end-to-end", "with remote"] + , "name": ["error-remote"] + , "test": ["error-remote.sh"] + , "deps": [["", "tool-under-test"]] + , "keep": ["out/build.log"] + } , "basic remote build": { "type": ["end-to-end", "with remote"] , "name": ["remote"] @@ -70,6 +77,7 @@ , "artifacts-only" , "basic" , "basic remote build" + , "error-remote" , "error-reporting" , "mr_computed_setup" , "remote sharding" diff --git a/test/end-to-end/computed-roots/error-remote.sh b/test/end-to-end/computed-roots/error-remote.sh new file mode 100644 index 00000000..30f9171c --- /dev/null +++ b/test/end-to-end/computed-roots/error-remote.sh @@ -0,0 +1,86 @@ +#!/bin/sh +# Copyright 2024 Huawei Cloud Computing Technology Co., Ltd. +# +# 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 -e + +readonly ROOT="$(pwd)" +readonly LBRA="$TMPDIR/local-build-root-A" +readonly LBRB="$TMPDIR/local-build-root-B" +readonly JUST="${ROOT}/bin/tool-under-test" +readonly OUT="${ROOT}/out" +mkdir -p "${OUT}" + +REMOTE_ARGS="-r ${REMOTE_EXECUTION_ADDRESS}" +if [ -n "${COMPATIBLE:-}" ] +then + REMOTE_ARGS="${REMOTE_ARGS} --compatible" +fi +echo Using ${REMOTE_ARGS} + +readonly BASE_ROOT="${ROOT}/base" +mkdir -p "${BASE_ROOT}" +cd "${BASE_ROOT}" +cat > TARGETS <<'EOF' +{ "": {"type": "export", "target": "failing build"} +, "failing build": + { "type": "generic" + , "outs": ["TARGETS"] + , "cmds": ["echo -n ThisWill", "echo FAIL", "false"] + } +} +EOF +git init 2>&1 +git branch -m stable-1.0 2>&1 +git config user.email "nobody@example.org" 2>&1 +git config user.name "Nobody" 2>&1 +git add . 2>&1 +git commit -m "Initial commit" 2>&1 +GIT_TREE=$(git log -n 1 --format="%T") + + +mkdir -p "${ROOT}/main" +cd "${ROOT}/main" +cat > repo-config.json <<EOF +{ "repositories": + { "base": + {"workspace_root": ["git tree", "${GIT_TREE}", "${BASE_ROOT}/.git"]} + , "": {"workspace_root": ["computed", "base", "", "", {}]} + } +} +EOF +cat repo-config.json + + +echo +echo 'Build depending on (failing) computed root' +echo +"${JUST}" build -C repo-config.json ${REMOTE_ARGS} \ + --local-build-root "${LBRA}" \ + -f "${OUT}/build.log" 2>&1 && exit 1 || : +LOG_BLOB=$(grep 'see [a-zA-Z0-9]* for details' "${OUT}/build.log" | sed 's/.*see //' | sed 's/ for details.*//') +echo +echo "Blob of log is ${LOG_BLOB}" + +echo +echo 'Verifying that the blob can be downloaded from a different client' +echo +"${JUST}" install-cas ${REMOTE_ARGS} \ + --local-build-root "${LBRB}" \ + -o "${TMPDIR}/log" "${LOG_BLOB}" 2>&1 +echo +grep ThisWillFAIL "${TMPDIR}/log" +echo + +echo OK |