filestore util: add tests for verifying and listing filestore blocks.
License: MIT Signed-off-by: Kevin Atkinson <k@kevina.org>
Kevin Atkinson committed
Feb 6, 2017 at 15:50 UTC
033c442d32c48f3e36eb3e4cb740e43ca67cdd9f
1 file changed
+153
test/sharness/t0271-filestore-verify.sh
new
+153
@@ -0,0 +1,153 @@
1
+#!/bin/sh
2
+#
3
+# Copyright (c) 2017 Jeromy Johnson
4
+# MIT Licensed; see the LICENSE file in this repository.
5
+#
6
+
7
+test_description="Test out the filestore nocopy functionality"
8
+
9
+. lib/test-lib.sh
10
+
11
+
12
+test_init_dataset() {
13
+ test_expect_success "create a dataset" '
14
+ rm -r somedir
15
+ mkdir somedir &&
16
+ random 1000 1 > somedir/file1 &&
17
+ random 10000 2 > somedir/file2 &&
18
+ random 1000000 3 > somedir/file3
19
+ '
20
+}
21
+
22
+EXPHASH="QmRueCuPMYYvdxWz1vWncF7wzCScEx4qasZXo5aVBb1R4V"
23
+
24
+cat <<EOF > ls_expect
25
+zb2rhaPkR7ZF9BzSC2BfqbcGivi9QMdauermW9YB6NvS7FZMo 10000 somedir/file2 0
26
+zb2rhav4wcdvNXtaKDTWHYAqtUHMEpygT1cxqMsfK7QrDuHxH 262144 somedir/file3 524288
27
+zb2rhbcZ3aUXYcrbhhDH1JyrpDcpdw1KFJ5Xs5covjnvMpxDR 1000 somedir/file1 0
28
+zb2rhe28UqCDm7TFib7PRyQYEkvuq8iahcXA2AbgaxCLvNhfk 262144 somedir/file3 0
29
+zb2rhebtyTTuHKyTbJPnkDUSruU5Uma4DN8t2EkvYZ6fP36mm 262144 somedir/file3 262144
30
+zb2rhm9VTrX2mfatggYUk8mHLz78XBxVUTTzLvM2N3d6frdAU 213568 somedir/file3 786432
31
+EOF
32
+
33
+FILE1_HASH=zb2rhbcZ3aUXYcrbhhDH1JyrpDcpdw1KFJ5Xs5covjnvMpxDR
34
+FILE2_HASH=zb2rhaPkR7ZF9BzSC2BfqbcGivi9QMdauermW9YB6NvS7FZMo
35
+FILE3_HASH=QmfE4SDQazxTD7u8VTYs9AJqQL8rrJPUAorLeJXKSZrVf9
36
+
37
+cat <<EOF > verify_expect
38
+ok zb2rhaPkR7ZF9BzSC2BfqbcGivi9QMdauermW9YB6NvS7FZMo 10000 somedir/file2 0
39
+ok zb2rhav4wcdvNXtaKDTWHYAqtUHMEpygT1cxqMsfK7QrDuHxH 262144 somedir/file3 524288
40
+ok zb2rhbcZ3aUXYcrbhhDH1JyrpDcpdw1KFJ5Xs5covjnvMpxDR 1000 somedir/file1 0
41
+ok zb2rhe28UqCDm7TFib7PRyQYEkvuq8iahcXA2AbgaxCLvNhfk 262144 somedir/file3 0
42
+ok zb2rhebtyTTuHKyTbJPnkDUSruU5Uma4DN8t2EkvYZ6fP36mm 262144 somedir/file3 262144
43
+ok zb2rhm9VTrX2mfatggYUk8mHLz78XBxVUTTzLvM2N3d6frdAU 213568 somedir/file3 786432
44
+EOF
45
+
46
+test_filestore_adds() {
47
+ test_expect_success "nocopy add succeeds" '
48
+ HASH=$(ipfs add --raw-leaves --nocopy -r -q somedir | tail -n1)
49
+ '
50
+
51
+ test_expect_success "nocopy add has right hash" '
52
+ test "$HASH" = "$EXPHASH"
53
+ '
54
+
55
+ test_expect_success "'ipfs filestore ls' output looks good'" '
56
+ ipfs filestore ls | sort > ls_actual &&
57
+ test_cmp ls_expect ls_actual
58
+ '
59
+
60
+ test_expect_success "'ipfs filestore ls HASH' works" '
61
+ ipfs filestore ls $FILE1_HASH > ls_actual &&
62
+ grep -q somedir/file1 ls_actual
63
+ '
64
+
65
+ test_expect_success "can retrieve multi-block file" '
66
+ ipfs cat $FILE3_HASH > file3.data &&
67
+ test_cmp somedir/file3 file3.data
68
+ '
69
+}
70
+
71
+test_filestore_verify() {
72
+ test_expect_success "ipfs filestore verify' output looks good'" '
73
+ ipfs filestore verify | LC_ALL=C sort > verify_actual
74
+ test_cmp verify_expect verify_actual
75
+ '
76
+
77
+ test_expect_success "'ipfs filestore verify HASH' works" '
78
+ ipfs filestore verify $FILE1_HASH > verify_actual &&
79
+ grep -q somedir/file1 verify_actual
80
+ '
81
+
82
+ test_expect_success "rename a file" '
83
+ mv somedir/file1 somedir/file1.bk
84
+ '
85
+
86
+ test_expect_success "can not retrieve block after backing file moved" '
87
+ test_must_fail ipfs cat $FILE1_HASH
88
+ '
89
+
90
+ test_expect_success "'ipfs filestore verify' shows file as missing" '
91
+ ipfs filestore verify > verify_actual &&
92
+ grep no-file verify_actual | grep -q somedir/file1
93
+ '
94
+
95
+ test_expect_success "move file back" '
96
+ mv somedir/file1.bk somedir/file1
97
+ '
98
+
99
+ test_expect_success "block okay now" '
100
+ ipfs cat $FILE1_HASH > file1.data &&
101
+ test_cmp somedir/file1 file1.data
102
+ '
103
+
104
+ test_expect_success "change first bit of file" '
105
+ dd if=/dev/zero of=somedir/file3 bs=1024 count=1
106
+ '
107
+
108
+ test_expect_success "can not retrieve block after backing file changed" '
109
+ test_must_fail ipfs cat $FILE3_HASH
110
+ '
111
+
112
+ test_expect_success "'ipfs filestore verify' shows file as changed" '
113
+ ipfs filestore verify > verify_actual &&
114
+ grep changed verify_actual | grep -q somedir/file3
115
+ '
116
+}
117
+
118
+init_ipfs_filestore() {
119
+ test_expect_success "clean up old node" '
120
+ rm -rf "$IPFS_PATH" mountdir ipfs ipns
121
+ '
122
+
123
+ test_init_ipfs
124
+
125
+ test_expect_success "enable filestore config setting" '
126
+ ipfs config --json Experimental.FilestoreEnabled true
127
+ '
128
+}
129
+
130
+test_init_dataset
131
+
132
+init_ipfs_filestore
133
+
134
+test_filestore_adds
135
+
136
+test_filestore_verify
137
+
138
+echo "WORKING DIR"
139
+echo "IPFS PATH = " $IPFS_PATH
140
+pwd
141
+
142
+
143
+test_init_dataset
144
+
145
+init_ipfs_filestore
146
+
147
+test_launch_ipfs_daemon
148
+
149
+test_filestore_adds
150
+
151
+test_kill_ipfs_daemon
152
+
153
+test_done