@cryptotaxi247 / kubo / commits / 033c442d3

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