|
#!/bin/sh
|
|
|
|
set -e
|
|
set -u
|
|
|
|
COLL_PATH=by_id/4fce132bc4ae9b4cc844115246a6bd41+175
|
|
|
|
fail() {
|
|
echo "ERROR: ${2:-failed}" >&2
|
|
exit "${1:-9}"
|
|
}
|
|
|
|
cd "$(mktemp --directory --tmpdir="$XDG_RUNTIME_DIR" MountTest-XXXXXXXX)"
|
|
mkdir mnt
|
|
UNIT_PATH="../systemd/transient/$(basename "$PWD").service"
|
|
MOUNT_SVC="$(basename "$UNIT_PATH")"
|
|
mkdir -p "$(dirname "$UNIT_PATH")"
|
|
cat >"$UNIT_PATH" <<EOF
|
|
[Service]
|
|
# --storage-classes default --disk-cache --disk-cache-dir /tmp/crunch-run.xngs1-dz642-44yn1hkxv0462mm.1723084189/keepcache3758109186 --file-cache 2147483648
|
|
Type=simple
|
|
WorkingDirectory=$PWD
|
|
ExecStart=$(command -v arv-mount) --foreground --read-write --crunchstat-interval=10 --allow-other --ram-cache --mount-tmp tmp0 --mount-by-pdh by_id --disable-event-listening --mount-by-id by_uuid mnt
|
|
ExecStop=$(command -v fusermount) -u mnt
|
|
StandardOutput=append:$PWD/arv-mount.out.log
|
|
StandardError=append:$PWD/arv-mount.err.log
|
|
EOF
|
|
systemctl --user daemon-reload
|
|
|
|
RUN=0
|
|
systemctl --user start "$MOUNT_SVC"
|
|
while ! [ -d mnt/tmp0 ]; do sleep .25s; done
|
|
sha256sum "mnt/$COLL_PATH"/* |
|
|
sed -r 's@ mnt/@ @' >SHA256SUMS ||
|
|
fail 12 "generating SHA256SUMS exited $?"
|
|
if ! [ -s SHA256SUMS ]; then
|
|
fail 12 "no SHA256SUMS generated (missing/empty file)"
|
|
fi
|
|
cat -A SHA256SUMS
|
|
systemctl --user stop "$MOUNT_SVC"
|
|
|
|
while [ "$RUN" -lt 2500 ]; do
|
|
RUN=$(( $RUN + 1 ))
|
|
printf "\rRun #$RUN at $(date --rfc-3339=seconds)... " >&2
|
|
systemctl --user start "$MOUNT_SVC"
|
|
while ! [ -d mnt/tmp0 ]; do sleep .25s; done
|
|
docker run --interactive --rm \
|
|
--attach stdin \
|
|
--mount type=bind,src="$PWD/mnt",dst=/keep \
|
|
--workdir /keep \
|
|
debian:bookworm-slim \
|
|
sha256sum --check --strict --quiet - <SHA256SUMS ||
|
|
fail 17 "Docker sha256 check #$RUN exited $?"
|
|
systemctl --user stop "$MOUNT_SVC"
|
|
done
|
|
printf "\nSuccess.\n" >&2
|