diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-04-19 18:03:51 +0200 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-04-22 11:20:58 +0200 |
commit | e79f95584bab08191c0b765ad6481308a7ef36a3 (patch) | |
tree | 4ae5d7893431681e1613e3d983ae9a156b2ef731 | |
parent | 0519f2064817e77d54d7b2941f8f27ae4a859493 (diff) | |
download | justbuild-e79f95584bab08191c0b765ad6481308a7ef36a3.tar.gz |
add end-to-end test executing local binaries remotely
-rw-r--r-- | test/end-to-end/remote-execution/TARGETS | 7 | ||||
-rw-r--r-- | test/end-to-end/remote-execution/execute.sh | 83 |
2 files changed, 90 insertions, 0 deletions
diff --git a/test/end-to-end/remote-execution/TARGETS b/test/end-to-end/remote-execution/TARGETS index 9d3709a6..727197b9 100644 --- a/test/end-to-end/remote-execution/TARGETS +++ b/test/end-to-end/remote-execution/TARGETS @@ -23,6 +23,12 @@ , "test": ["install.sh"] , "deps": [["end-to-end", "tool-under-test"]] } +, "execute": + { "type": ["end-to-end", "with remote"] + , "name": ["execute"] + , "test": ["execute.sh"] + , "deps": [["end-to-end", "tool-under-test"]] + } , "install-cas": { "type": ["end-to-end", "with remote"] , "name": ["install-cas"] @@ -79,6 +85,7 @@ , "install-cas" , "dispatch" , "split-splice" + , "execute" ] , { "type": "if" , "cond": diff --git a/test/end-to-end/remote-execution/execute.sh b/test/end-to-end/remote-execution/execute.sh new file mode 100644 index 00000000..0881e940 --- /dev/null +++ b/test/end-to-end/remote-execution/execute.sh @@ -0,0 +1,83 @@ +#!/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 -eu + +readonly JUST="${PWD}/bin/tool-under-test" +readonly LBR="${TEST_TMPDIR}/local-build-root" + +REMOTE_EXECUTION_ARGS="-r ${REMOTE_EXECUTION_ADDRESS}" +LOCAL_ARGS="" +if [ -n "${COMPATIBLE:-}" ] +then + REMOTE_EXECUTION_ARGS="${REMOTE_EXECUTION_ARGS} --compatible" + LOCAL_ARGS="--compatible" +fi + +mkdir work +cd work +touch ROOT + +for i in `seq 1 32` +do + cat > generate-$i.sh <<EOF +#!/bin/sh + echo \$i > \$1 +EOF + chmod 755 generate-$i.sh +done + +cat > TARGETS <<EOF +{ "": + { "type": "install" + , "dirs": +[ ["1", "1"] +EOF +for i in `seq 2 32` +do + cat >> TARGETS <<EOF +, ["$i", "$i"] +EOF +done +echo ']}' >> TARGETS +for i in `seq 1 32` +do + cat >> TARGETS <<EOF +, "$i": { "type": "generic" + , "cmds": ["./generate-$i.sh $i.out"] + , "outs": ["$i.out"] + , "deps": ["generate-$i.sh"] + } +EOF +done +echo '}' >> TARGETS + +cat TARGETS +echo + +# remote build should succeed +"${JUST}" build --local-build-root "${LBR}" \ + ${REMOTE_EXECUTION_ARGS} --dump-artifacts remote.json 2>&1 +echo + +# local build should succeed, and yield the same result +"${JUST}" build --local-build-root "${LBR}" \ + ${LOCAL_ARGS} --dump-artifacts local.json 2>&1 + +echo +diff remote.json local.json + +echo OK |