forked from cerc-io/ipld-eth-server
75 lines
1.8 KiB
Bash
Executable File
75 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# MIT Licensed; see the LICENSE file in this repository.
|
|
#
|
|
|
|
test_description="Test ipfs repo auto gc"
|
|
|
|
. lib/test-lib.sh
|
|
|
|
skip_all="skipping auto repo gc tests until they can be fixed"
|
|
|
|
test_done
|
|
|
|
check_ipfs_storage() {
|
|
ipfs config Datastore.StorageMax
|
|
}
|
|
|
|
test_init_ipfs
|
|
|
|
test_expect_success "generate 2 600 kB files and 2 MB file using go-random" '
|
|
random 600k 41 >600k1 &&
|
|
random 600k 42 >600k2 &&
|
|
random 2M 43 >2M
|
|
'
|
|
|
|
test_expect_success "set ipfs gc watermark, storage max, and gc timeout" '
|
|
test_config_set Datastore.StorageMax "2MB" &&
|
|
test_config_set --json Datastore.StorageGCWatermark 60 &&
|
|
test_config_set Datastore.GCPeriod "20ms"
|
|
'
|
|
|
|
test_launch_ipfs_daemon --enable-gc
|
|
|
|
test_gc() {
|
|
test_expect_success "adding data below watermark doesn't trigger auto gc" '
|
|
ipfs add 600k1 >/dev/null &&
|
|
disk_usage "$IPFS_PATH/blocks" >expected &&
|
|
go-sleep 40ms &&
|
|
disk_usage "$IPFS_PATH/blocks" >actual &&
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_expect_success "adding data beyond watermark triggers auto gc" '
|
|
HASH=`ipfs add -q 600k2` &&
|
|
ipfs pin rm -r $HASH &&
|
|
go-sleep 40ms &&
|
|
DU=$(disk_usage "$IPFS_PATH/blocks") &&
|
|
if test $(uname -s) = "Darwin"; then
|
|
test "$DU" -lt 1400 # 60% of 2MB
|
|
else
|
|
test "$DU" -lt 1000000
|
|
fi
|
|
'
|
|
}
|
|
|
|
#TODO: conditional GC test is disabled due to files size bug in ipfs add
|
|
#test_expect_success "adding data beyond storageMax fails" '
|
|
# test_must_fail ipfs add 2M 2>add_fail_out
|
|
#'
|
|
#test_expect_success "ipfs add not enough space message looks good" '
|
|
# echo "Error: file size exceeds slack space allowed by storageMax. Maybe unpin some files?" >add_fail_exp &&
|
|
# test_cmp add_fail_exp add_fail_out
|
|
#'
|
|
|
|
test_expect_success "periodic auto gc stress test" '
|
|
for i in $(test_seq 1 20)
|
|
do
|
|
test_gc || return 1
|
|
done
|
|
'
|
|
|
|
test_kill_ipfs_daemon
|
|
|
|
test_done
|