t0080-repo.sh 6.22 KB
Newer Older
Jeromy's avatar
Jeromy committed
1 2 3 4 5 6 7 8 9 10 11 12 13
#!/bin/sh
#
# Copyright (c) 2014 Jeromy Johnson
# MIT Licensed; see the LICENSE file in this repository.
#

test_description="Test ipfs repo operations"

. lib/test-lib.sh

test_init_ipfs
test_launch_ipfs_daemon

14 15 16 17 18 19 20 21 22
test_expect_success "'ipfs repo gc' succeeds" '
	ipfs repo gc >gc_out_actual
'

test_expect_success "'ipfs repo gc' looks good (empty)" '
	true >empty &&
	test_cmp empty gc_out_actual
'

Jeromy's avatar
Jeromy committed
23
test_expect_success "'ipfs add afile' succeeds" '
24
	echo "some text" >afile &&
25
	HASH=`ipfs add -q afile`
Jeromy's avatar
Jeromy committed
26 27 28
'

test_expect_success "added file was pinned" '
Etienne Laurin's avatar
Etienne Laurin committed
29
	ipfs pin ls --type=recursive >actual &&
30
	grep "$HASH" actual
Jeromy's avatar
Jeromy committed
31 32
'

33
test_expect_success "'ipfs repo gc' succeeds" '
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
34
	ipfs repo gc >gc_out_actual
35 36
'

37 38 39 40
test_expect_success "'ipfs repo gc' looks good (patch root)" '
	PATCH_ROOT=QmQXirSbubiySKnqaFyfs5YzziXRB5JEVQVjU6xsd7innr &&
	echo "removed $PATCH_ROOT" >patch_root &&
	test_cmp patch_root gc_out_actual
41 42 43
'

test_expect_success "'ipfs repo gc' doesnt remove file" '
44
	ipfs cat "$HASH" >out &&
45 46
	test_cmp out afile
'
Jeromy's avatar
Jeromy committed
47 48

test_expect_success "'ipfs pin rm' succeeds" '
49 50 51 52
	ipfs pin rm -r "$HASH" >actual1
'

test_expect_success "'ipfs pin rm' output looks good" '
53
	echo "unpinned $HASH" >expected1 &&
Jeromy's avatar
Jeromy committed
54
	test_cmp expected1 actual1
Jeromy's avatar
Jeromy committed
55 56
'

rht's avatar
rht committed
57 58 59 60 61 62 63 64 65 66
test_expect_failure "ipfs repo gc fully reverse ipfs add" '
    random 100000 41 >gcfile &&
    disk_usage "$IPFS_PATH/blocks" >expected &&
    hash=`ipfs add -q gcfile` &&
    ipfs pin rm -r $hash &&
    ipfs repo gc &&
    disk_usage "$IPFS_PATH/blocks" >actual &&
    test_cmp expected actual
'

Jeromy's avatar
Jeromy committed
67
test_expect_success "file no longer pinned" '
rht's avatar
rht committed
68
	# we expect the welcome files to show up here
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
69 70
	echo "$HASH_WELCOME_DOCS" >expected2 &&
	ipfs refs -r "$HASH_WELCOME_DOCS" >>expected2 &&
71 72
	EMPTY_DIR=QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn &&
	echo "$EMPTY_DIR" >>expected2 &&
73
	ipfs pin ls --type=recursive --quiet >actual2 &&
Christian Couder's avatar
Christian Couder committed
74
	test_sort_cmp expected2 actual2
Jeromy's avatar
Jeromy committed
75 76 77
'

test_expect_success "recursively pin afile" '
78
	HASH=`ipfs add -q afile` &&
79
	ipfs pin add -r "$HASH"
Jeromy's avatar
Jeromy committed
80 81 82
'

test_expect_success "pinning directly should fail now" '
83
	echo "Error: pin: $HASH already pinned recursively" >expected3 &&
84
	test_must_fail ipfs pin add "$HASH" 2>actual3 &&
Jeromy's avatar
Jeromy committed
85
	test_cmp expected3 actual3
Jeromy's avatar
Jeromy committed
86 87
'

88
test_expect_success "'ipfs pin rm <hash>' should fail" '
89
	echo "Error: $HASH is pinned recursively" >expected4 &&
90
	test_must_fail ipfs pin rm "$HASH" 2>actual4 &&
Jeromy's avatar
Jeromy committed
91
	test_cmp expected4 actual4
92 93
'

Jeromy's avatar
Jeromy committed
94
test_expect_success "remove recursive pin, add direct" '
95 96 97
	echo "unpinned $HASH" >expected5 &&
	ipfs pin rm -r "$HASH" >actual5 &&
	test_cmp expected5 actual5 &&
98
	ipfs pin add "$HASH"
Jeromy's avatar
Jeromy committed
99 100 101
'

test_expect_success "remove direct pin" '
102 103
	echo "unpinned $HASH" >expected6 &&
	ipfs pin rm "$HASH" >actual6 &&
Jeromy's avatar
Jeromy committed
104
	test_cmp expected6 actual6
Jeromy's avatar
Jeromy committed
105 106
'

107
test_expect_success "'ipfs repo gc' removes file" '
108 109
	echo "removed $PATCH_ROOT" >expected7 &&
	echo "removed $HASH" >>expected7 &&
110
	ipfs repo gc >actual7 &&
111
	test_sort_cmp expected7 actual7
112 113
'

114 115
# TODO: there seems to be a serious bug with leveldb not returning a key.
test_expect_failure "'ipfs refs local' no longer shows file" '
116 117
	EMPTY_DIR=QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn &&
	echo "$EMPTY_DIR" >expected8 &&
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
118 119
	echo "$HASH_WELCOME_DOCS" >>expected8 &&
	ipfs refs -r "$HASH_WELCOME_DOCS" >>expected8 &&
120
	ipfs refs local >actual8 &&
Christian Couder's avatar
Christian Couder committed
121
	test_sort_cmp expected8 actual8
122 123
'

Jeromy's avatar
Jeromy committed
124
test_expect_success "adding multiblock random file succeeds" '
125
	random 1000000 >multiblock &&
Jeromy's avatar
Jeromy committed
126 127 128
	MBLOCKHASH=`ipfs add -q multiblock`
'

Etienne Laurin's avatar
Etienne Laurin committed
129
test_expect_success "'ipfs pin ls --type=indirect' is correct" '
130
	ipfs refs "$MBLOCKHASH" >refsout &&
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
131
	ipfs refs -r "$HASH_WELCOME_DOCS" >>refsout &&
132
	sed -i="" "s/\(.*\)/\1 indirect/g" refsout &&
Etienne Laurin's avatar
Etienne Laurin committed
133
	ipfs pin ls --type=indirect >indirectpins &&
Christian Couder's avatar
Christian Couder committed
134
	test_sort_cmp refsout indirectpins
Jeromy's avatar
Jeromy committed
135 136 137
'

test_expect_success "pin something directly" '
138 139 140 141 142 143 144 145
	echo "ipfs is so awesome" >awesome &&
	DIRECTPIN=`ipfs add -q awesome` &&
	echo "unpinned $DIRECTPIN" >expected9 &&
	ipfs pin rm -r "$DIRECTPIN" >actual9 &&
	test_cmp expected9 actual9  &&

	echo "pinned $DIRECTPIN directly" >expected10 &&
	ipfs pin add "$DIRECTPIN" >actual10 &&
Jeromy's avatar
Jeromy committed
146 147 148
	test_cmp expected10 actual10
'

Etienne Laurin's avatar
Etienne Laurin committed
149
test_expect_success "'ipfs pin ls --type=direct' is correct" '
150
	echo "$DIRECTPIN direct" >directpinexpected &&
Etienne Laurin's avatar
Etienne Laurin committed
151
	ipfs pin ls --type=direct >directpinout &&
Christian Couder's avatar
Christian Couder committed
152
	test_sort_cmp directpinexpected directpinout
Jeromy's avatar
Jeromy committed
153 154
'

Etienne Laurin's avatar
Etienne Laurin committed
155
test_expect_success "'ipfs pin ls --type=recursive' is correct" '
156
	echo "$MBLOCKHASH" >rp_expected &&
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
157
	echo "$HASH_WELCOME_DOCS" >>rp_expected &&
158
	echo "$EMPTY_DIR" >>rp_expected &&
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
159
	ipfs refs -r "$HASH_WELCOME_DOCS" >>rp_expected &&
160
	sed -i="" "s/\(.*\)/\1 recursive/g" rp_expected &&
Etienne Laurin's avatar
Etienne Laurin committed
161
	ipfs pin ls --type=recursive >rp_actual &&
Christian Couder's avatar
Christian Couder committed
162
	test_sort_cmp rp_expected rp_actual
Jeromy's avatar
Jeromy committed
163 164
'

165
test_expect_success "'ipfs pin ls --type=all --quiet' is correct" '
166 167 168
	cat directpinout >allpins &&
	cat rp_actual >>allpins &&
	cat indirectpins >>allpins &&
169 170 171
	cut -f1 -d " " allpins | sort | uniq >> allpins_uniq_hashes &&
	ipfs pin ls --type=all --quiet >actual_allpins &&
	test_sort_cmp allpins_uniq_hashes actual_allpins
Jeromy's avatar
Jeromy committed
172
'
Jeromy's avatar
Jeromy committed
173

gatesvp's avatar
gatesvp committed
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
test_expect_success "'ipfs refs --unique' is correct" '
	mkdir -p uniques &&
	cd uniques &&
	echo "content1" > file1 &&
	echo "content1" > file2 &&
	ROOT=$(ipfs add -r -q . | tail -n1) &&
	ipfs refs --unique $ROOT >expected &&
	ipfs add -q file1 >unique_hash &&
	test_cmp expected unique_hash
'

test_expect_success "'ipfs refs --unique --recursive' is correct" '
	mkdir -p a/b/c &&
	echo "c1" > a/f1 &&
	echo "c1" > a/b/f1 &&
	echo "c1" > a/b/c/f1 &&
	echo "c2" > a/b/c/f2 &&
	ROOT=$(ipfs add -r -q a | tail -n1) &&
	ipfs refs --unique --recursive $ROOT >refs_output &&
	wc -l refs_output | sed "s/^ *//g" >line_count &&
	echo "4 refs_output" >expected &&
	test_cmp expected line_count
'

198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
test_expect_success "'ipfs refs --recursive (bigger)'" '
	mkdir -p b/c/d/e &&
	echo "content1" >b/f &&
	echo "content1" >b/c/f1 &&
	echo "content1" >b/c/d/f2 &&
	echo "content2" >b/c/f2 &&
	echo "content2" >b/c/d/f1 &&
	echo "content2" >b/c/d/e/f &&
	cp -r b b2 && mv b2 b/b2 &&
	cp -r b b3 && mv b3 b/b3 &&
	cp -r b b4 && mv b4 b/b4 &&
	hash=$(ipfs add -r -q b | tail -n1) &&
	ipfs refs -r "$hash" | wc -l | sed "s/^ *//g" >actual &&
	echo "79" >expected &&
	test_cmp expected actual
'

test_expect_success "'ipfs refs --unique --recursive (bigger)'" '
	ipfs refs -r "$hash" | sort | uniq >expected &&
	ipfs refs -r -u "$hash" | sort >actual &&
	test_cmp expected actual
'

Jeromy's avatar
Jeromy committed
221 222 223
test_kill_ipfs_daemon

test_done