summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/end-to-end/target-cache/artifacts-sync.sh43
-rw-r--r--test/end-to-end/target-cache/test-data-artifacts-sync/greetlib/main/TARGETS5
-rw-r--r--test/end-to-end/target-cache/test-data-artifacts-sync/greetlib/repos.json3
3 files changed, 40 insertions, 11 deletions
diff --git a/test/end-to-end/target-cache/artifacts-sync.sh b/test/end-to-end/target-cache/artifacts-sync.sh
index 552e04aa..fb4b7c0b 100644
--- a/test/end-to-end/target-cache/artifacts-sync.sh
+++ b/test/end-to-end/target-cache/artifacts-sync.sh
@@ -85,18 +85,29 @@ fi
if [ "${COMPATIBLE:-}" = "YES" ]; then
ARGS="--compatible"
HASH_TYPE="compatible-sha256"
+ TREE_CAS_DIR="casf"
else
ARGS=""
HASH_TYPE="git-sha1"
+ TREE_CAS_DIR="cast"
fi
-TCDIR="$LBRDIR/protocol-dependent/generation-0/$HASH_TYPE/tc"
+readonly FIRST_GEN="${LBRDIR}/protocol-dependent/generation-0/$HASH_TYPE"
+readonly TCDIR="$FIRST_GEN/tc"
+readonly EXEC_CAS="$FIRST_GEN/casx"
+readonly FILE_CAS="$FIRST_GEN/casf"
+readonly TREE_CAS="$FIRST_GEN/$TREE_CAS_DIR"
-# Print the CASF hash of the first target cache entry found for a given backend
+# Print the CASF hashes of all target cache entries found for a given backend
# (parameter $1)
-get_tc_hash() {
- TC_HASH0=$(ls -1 "$TCDIR/$1" | head -n1)
- TC_HASH1=$(ls -1 "$TCDIR/$1/$TC_HASH0" | head -n1)
- cat "$TCDIR/$1/$TC_HASH0/$TC_HASH1" | tr -d '[]' | cut -d: -f1
+get_tc_hashes() {
+ for FILE in $(find "$TCDIR/$1" -type f); do
+ cat "$FILE" | tr -d '[]' | cut -d: -f1
+ done
+}
+
+# print cache path (ab/cde...) for given hash (parameter $1)
+cache_path() {
+ echo "$(echo $1 | cut -b -2)/$(echo $1 | cut -b 3-)"
}
# ------------------------------------------------------------------------------
@@ -170,10 +181,20 @@ sed -i "s|RANDOM_STRING_2 \".*\"|RANDOM_STRING_2 \"$RANDOM_STRING\"|" greet/src/
"$JUST_MR" --norc --just "$JUST" --local-build-root "$LBRDIR" --main main build main $ARGS $REMOTE_EXECUTION_ARGS ${AUTH_ARGS}
# Check if file and tree artifacts have been downloaded correctly
-readonly TC_HASH=$(get_tc_hash $REMOTE_EXECUTION_ID)
-readonly TC_ENTRY=$("$JUST" install-cas --local-build-root "$LBRDIR" $ARGS ${TC_HASH})
-readonly FILE_HASH=$(echo $TC_ENTRY | jq -r '.artifacts."libgreet.a".data.id')
-readonly TREE_HASH=$(echo $TC_ENTRY | jq -r '.runfiles.greet.data.id')
+EXEC_HASH=
+FILE_HASH=
+TREE_HASH=
+readonly TC_HASHES=$(get_tc_hashes $REMOTE_EXECUTION_ID)
+for TC_HASH in $TC_HASHES; do
+ TC_ENTRY=$("$JUST" install-cas --local-build-root "$LBRDIR" $ARGS ${TC_HASH})
+ EXEC_HASH=${EXEC_HASH:-$(echo $TC_ENTRY | jq -r '.artifacts."main".data.id // ""')}
+ FILE_HASH=${FILE_HASH:-$(echo $TC_ENTRY | jq -r '.artifacts."libgreet.a".data.id // ""')}
+ TREE_HASH=${TREE_HASH:-$(echo $TC_ENTRY | jq -r '.runfiles.greet.data.id // ""')}
+done
+test -x ${EXEC_CAS}/$(cache_path $EXEC_HASH)
+test -f ${FILE_CAS}/$(cache_path $FILE_HASH)
+test -f ${TREE_CAS}/$(cache_path $TREE_HASH)
+"$JUST" install-cas --local-build-root "$LBRDIR" $ARGS ${EXEC_HASH} > /dev/null
"$JUST" install-cas --local-build-root "$LBRDIR" $ARGS ${FILE_HASH} > /dev/null
"$JUST" install-cas --local-build-root "$LBRDIR" $ARGS ${TREE_HASH} > /dev/null
@@ -237,6 +258,8 @@ else
readonly FOO_HASH=$(cat foo.py | git hash-object --stdin)
readonly BAR_HASH=$(cat bar.py | git hash-object --stdin)
fi
+test -f ${FILE_CAS}/$(cache_path $FOO_HASH)
+test -f ${FILE_CAS}/$(cache_path $BAR_HASH)
"$JUST" install-cas --local-build-root "$LBRDIR" $ARGS ${FOO_HASH} > /dev/null
"$JUST" install-cas --local-build-root "$LBRDIR" $ARGS ${BAR_HASH} > /dev/null
diff --git a/test/end-to-end/target-cache/test-data-artifacts-sync/greetlib/main/TARGETS b/test/end-to-end/target-cache/test-data-artifacts-sync/greetlib/main/TARGETS
index 746cd866..e59a88fd 100644
--- a/test/end-to-end/target-cache/test-data-artifacts-sync/greetlib/main/TARGETS
+++ b/test/end-to-end/target-cache/test-data-artifacts-sync/greetlib/main/TARGETS
@@ -1,4 +1,9 @@
{ "main":
+ { "type": "export"
+ , "target": "main_binary"
+ , "flexible_config": ["CXX", "CXXFLAGS", "AR", "ENV"]
+ }
+, "main_binary":
{ "type": ["@", "rules", "CC", "binary"]
, "name": ["main"]
, "srcs": ["main.cpp"]
diff --git a/test/end-to-end/target-cache/test-data-artifacts-sync/greetlib/repos.json b/test/end-to-end/target-cache/test-data-artifacts-sync/greetlib/repos.json
index 24bebd2d..8f836972 100644
--- a/test/end-to-end/target-cache/test-data-artifacts-sync/greetlib/repos.json
+++ b/test/end-to-end/target-cache/test-data-artifacts-sync/greetlib/repos.json
@@ -1,6 +1,7 @@
{ "repositories":
{ "main":
- { "repository": {"type": "file", "path": "./main"}
+ { "repository":
+ {"type": "file", "path": "./main", "pragma": {"to_git": true}}
, "bindings": {"rules": "rules", "greet": "greet"}
}
, "greet":