summaryrefslogtreecommitdiff
path: root/test/end-to-end/execution-service
diff options
context:
space:
mode:
authorAlberto Sartori <alberto.sartori@huawei.com>2023-02-01 09:17:07 +0100
committerAlberto Sartori <alberto.sartori@huawei.com>2023-02-02 17:57:19 +0100
commit3da8351199ef811e60edb2c958342492987561cd (patch)
tree94440cc1a88734e49393e0fb29e44be5485451c2 /test/end-to-end/execution-service
parentbd66d45945dc186a0d08db7d9845ef657d549577 (diff)
downloadjustbuild-3da8351199ef811e60edb2c958342492987561cd.tar.gz
execution-service: add end-to-end test
Co-authored by: Klaus Aehlig <klaus.aehlig@huawei.com>
Diffstat (limited to 'test/end-to-end/execution-service')
-rw-r--r--test/end-to-end/execution-service/TARGETS8
-rwxr-xr-xtest/end-to-end/execution-service/simple_build.sh81
2 files changed, 89 insertions, 0 deletions
diff --git a/test/end-to-end/execution-service/TARGETS b/test/end-to-end/execution-service/TARGETS
new file mode 100644
index 00000000..f27220b9
--- /dev/null
+++ b/test/end-to-end/execution-service/TARGETS
@@ -0,0 +1,8 @@
+{ "simple_build":
+ { "type": ["@", "rules", "shell/test", "script"]
+ , "name": ["simple_build"]
+ , "test": ["simple_build.sh"]
+ , "deps": [["test/end-to-end", "tool-under-test"]]
+ }
+, "TESTS": {"type": "install", "tainted": ["test"], "deps": ["simple_build"]}
+}
diff --git a/test/end-to-end/execution-service/simple_build.sh b/test/end-to-end/execution-service/simple_build.sh
new file mode 100755
index 00000000..bd754137
--- /dev/null
+++ b/test/end-to-end/execution-service/simple_build.sh
@@ -0,0 +1,81 @@
+#!/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="${PWD}/local-build-root"
+readonly ESDIR="${PWD}/service-build-root"
+readonly INFOFILE="${PWD}/info.json"
+readonly PIDFILE="${PWD}/pid.txt"
+
+readonly REFERENCE_OUTPUT="FooOOoo"
+readonly SERVER_BIN_DIR="${TMPDIR}/server/bin"
+mkdir -p "${SERVER_BIN_DIR}"
+cat > "${SERVER_BIN_DIR}/server-only-tool-foo" <<EOF
+#!/bin/sh
+echo -n "${REFERENCE_OUTPUT}"
+EOF
+chmod 755 "${SERVER_BIN_DIR}/server-only-tool-foo"
+cat "${SERVER_BIN_DIR}/server-only-tool-foo"
+echo
+
+LOCAL_LAUNCHER='["env", "PATH='"${PATH}:${SERVER_BIN_DIR}"'"]'
+echo "will use ${LOCAL_LAUNCHER} as local launcher"
+echo
+
+${JUST} execute --info-file "$INFOFILE" --pid-file "$PIDFILE" \
+ --log-limit 6 --local-build-root ${ESDIR} \
+ -L "${LOCAL_LAUNCHER}" 2>&1 &
+
+for _ in `seq 1 10`
+do
+ if test -f "${INFOFILE}"
+ then
+ break
+ fi
+ sleep 1;
+done
+
+if ! test -f "${INFOFILE}"
+then
+ echo "Did not find ${INFOFILE}"
+ exit 1
+fi
+
+readonly PORT=$(jq '."port"' "${INFOFILE}")
+
+touch ROOT
+
+cat <<EOF > TARGETS
+{ "":
+ { "type": "generic"
+ , "cmds": ["server-only-tool-foo > foo.txt"]
+ , "outs": ["foo.txt"]
+ }
+}
+EOF
+
+"${JUST}" install -r localhost:${PORT} --local-build-root="${LBRDIR}" --local-launcher '["env", "--", "PATH=/nonexistent"]' -o . 2>&1
+kill $(cat "${PIDFILE}")
+
+readonly OUT=$(cat foo.txt)
+echo "Found output: ${OUT}"
+
+if ! [ "${OUT}" = "${REFERENCE_OUTPUT}" ]
+then
+ printf 'expecting "%s", got "%s"\n' "${REF}" "${OUT}" > /dev/stderr && exit 1
+fi