summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2023-07-26 15:12:33 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2023-07-26 15:35:19 +0200
commite0663fd415934287ed338784abdf8181c6c77e24 (patch)
treeddfe5174218b9a526403eccdfd4a846eda1be634
parent57d3222a4ff1ab3cc64e0d33d721a30827b684e3 (diff)
downloadjustbuild-e0663fd415934287ed338784abdf8181c6c77e24.tar.gz
Add basic test for install-cas
... verifying the consistency of the representation of trees between local and remote CAS.
-rw-r--r--test/end-to-end/remote-execution/TARGETS12
-rw-r--r--test/end-to-end/remote-execution/install-cas.sh69
2 files changed, 81 insertions, 0 deletions
diff --git a/test/end-to-end/remote-execution/TARGETS b/test/end-to-end/remote-execution/TARGETS
index b6071b25..951499d1 100644
--- a/test/end-to-end/remote-execution/TARGETS
+++ b/test/end-to-end/remote-execution/TARGETS
@@ -23,6 +23,18 @@
, "test": ["install.sh"]
, "deps": [["end-to-end", "tool-under-test"]]
}
+, "install-cas":
+ { "type": ["end-to-end", "with remote"]
+ , "name": ["install-cas"]
+ , "test": ["install-cas.sh"]
+ , "deps": [["end-to-end", "tool-under-test"]]
+ , "keep":
+ [ "out/stdout/remote"
+ , "out/stdout/remote-raw"
+ , "out/stdout/local"
+ , "out/stdout/local-raw"
+ ]
+ }
, "dispatch":
{ "type": ["end-to-end", "with remote"]
, "name": ["dispatch"]
diff --git a/test/end-to-end/remote-execution/install-cas.sh b/test/end-to-end/remote-execution/install-cas.sh
new file mode 100644
index 00000000..e39ff41e
--- /dev/null
+++ b/test/end-to-end/remote-execution/install-cas.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+# Copyright 2023 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 LBRDIR="${TEST_TMPDIR}/local-build-root"
+readonly OUTDIR="${PWD}/out"
+
+LOCAL_ARGS="--local-build-root ${LBRDIR}"
+REMOTE_ARGS="${LOCAL_ARGS} -r ${REMOTE_EXECUTION_ADDRESS}"
+if [ "${REMOTE_EXECUTION_PROPERTIES:-}" != "" ]
+then
+ REMOTE_ARGS="${REMOTE_EXECUTION_ARGS} --remote-execution-property ${REMOTE_EXECUTION_PROPERTIES}"
+fi
+if [ -n "${COMPATIBLE:-}" ]
+then
+ REMOTE_ARGS="${REMOTE_ARGS} --compatible"
+ LOCAL_ARGS="${LOCAL_ARGS} --compatible"
+fi
+
+# Build a tree remotely and get its identifier
+mkdir src
+cd src
+touch ROOT
+cat > TARGETS <<'EOF'
+{ "":
+ { "type": "generic"
+ , "out_dirs": ["out"]
+ , "cmds":
+ [ "mkdir -p out/deep/inside/path"
+ , "echo Hello World > out/deep/inside/path/hello.txt"
+ ]
+ }
+}
+EOF
+
+"${JUST}" build ${REMOTE_ARGS} --dump-artifacts artifacts.json 2>&1
+echo
+cat artifacts.json
+OUT="$(jq -r '.out.id' artifacts.json)::t"
+echo $OUT
+echo
+
+# install to stdout in all possible ways
+mkdir -p "${OUTDIR}/stdout"
+"${JUST}" install-cas ${REMOTE_ARGS} --raw-tree "${OUT}" > "${OUTDIR}/stdout/remote-raw"
+"${JUST}" install-cas ${REMOTE_ARGS} --remember "${OUT}" > "${OUTDIR}/stdout/remote"
+"${JUST}" install-cas ${LOCAL_ARGS} "${OUT}" --raw-tree > "${OUTDIR}/stdout/local-raw"
+"${JUST}" install-cas ${LOCAL_ARGS} "${OUT}" > "${OUTDIR}/stdout/local"
+
+# verify consistency between local and remote values
+cmp "${OUTDIR}/stdout/local-raw" "${OUTDIR}/stdout/remote-raw"
+cmp "${OUTDIR}/stdout/local" "${OUTDIR}/stdout/remote"
+
+echo OK