summaryrefslogtreecommitdiff
path: root/manual-tests/static-delta-generate-crosscheck.sh
blob: a9335007a4290d60ca3bd2d2383a38bfe87bc79e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/env bash
#
# Generate multiple variants of static deltas in a repo, then use them
# to upgrade in a test repository, verifying that fsck works.
#
# This test is manual so it's easy to run against arbitrary content.

set -euo pipefail

repo=$(pwd)/${1}
shift
branch=${1}
shift

from=$(ostree --repo=${repo} rev-parse "${branch}"^)
to=$(ostree --repo=${repo} rev-parse ${branch})

tmpdir=$(mktemp -d /var/tmp/ostree-delta-check.XXXXXX)
cd ${tmpdir}
touch ${tmpdir}/.tmp
echo "Using tmpdir ${tmpdir}"

cleanup_tmpdir() {
    if test -f ${tmpdir}/.tmp; then
	rm -rf ${tmpdir}
    fi
}
    
if test -z "${PRESERVE_TMP:-}"; then
    trap cleanup_tmpdir EXIT
fi

fatal() {
    echo "$@"
    exit 1
}

assert_streq() {
    if ! test $1 = $2; then
	fatal "assertion failed: $1 = $2"
    fi
}

validate_delta_options() {
    ostree --repo=testrepo init --mode=bare-user
    echo 'fsync=false' >> testrepo/config
    ostree --repo=testrepo remote add --set=gpg-verify=false local file://${repo}
    ostree --repo=${repo} static-delta generate $@ --from=${from} --to=${to}
    ostree --repo=${repo} summary -u
    ostree --repo=testrepo pull local ${branch}@${from}
    assert_streq $(ostree --repo=testrepo rev-parse ${branch}) ${from}
    ostree --repo=testrepo pull --require-static-deltas local ${branch}
    assert_streq $(ostree --repo=testrepo rev-parse ${branch}) ${to}
    ostree --repo=testrepo fsck
    rm testrepo -rf
}

set -x

validate_delta_options
validate_delta_options --inline
validate_delta_options --disable-bsdiff