summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2024-04-19 18:03:51 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2024-04-22 11:20:58 +0200
commite79f95584bab08191c0b765ad6481308a7ef36a3 (patch)
tree4ae5d7893431681e1613e3d983ae9a156b2ef731 /test
parent0519f2064817e77d54d7b2941f8f27ae4a859493 (diff)
downloadjustbuild-e79f95584bab08191c0b765ad6481308a7ef36a3.tar.gz
add end-to-end test executing local binaries remotely
Diffstat (limited to 'test')
-rw-r--r--test/end-to-end/remote-execution/TARGETS7
-rw-r--r--test/end-to-end/remote-execution/execute.sh83
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