forked from cerc-io/ipld-eth-server
61 lines
1.1 KiB
Bash
Executable File
61 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Copyright (c) 2016 Jeromy Johnson
|
|
# MIT Licensed; see the LICENSE file in this repository.
|
|
#
|
|
|
|
test_description="Test ipfs repo fsck"
|
|
|
|
. lib/test-lib.sh
|
|
|
|
test_init_ipfs
|
|
|
|
sort_rand() {
|
|
case `uname` in
|
|
Linux|FreeBSD)
|
|
sort -R
|
|
;;
|
|
Darwin)
|
|
ruby -e 'puts STDIN.readlines.shuffle'
|
|
;;
|
|
*)
|
|
echo "unsupported system: $(uname)"
|
|
esac
|
|
}
|
|
|
|
check_random_corruption() {
|
|
to_break=$(find "$IPFS_PATH/blocks" -type f -name '*.data' | sort_rand | head -n 1)
|
|
|
|
test_expect_success "back up file and overwrite it" '
|
|
cp "$to_break" backup_file &&
|
|
echo "this is super broken" > "$to_break"
|
|
'
|
|
|
|
test_expect_success "repo verify detects failure" '
|
|
test_expect_code 1 ipfs repo verify
|
|
'
|
|
|
|
test_expect_success "replace the object" '
|
|
cp backup_file "$to_break"
|
|
'
|
|
|
|
test_expect_success "ipfs repo verify passes just fine now" '
|
|
ipfs repo verify
|
|
'
|
|
}
|
|
|
|
test_expect_success "create some files" '
|
|
random-files -depth=3 -dirs=4 -files=10 foobar > /dev/null
|
|
'
|
|
|
|
test_expect_success "add them all" '
|
|
ipfs add -r -q foobar > /dev/null
|
|
'
|
|
|
|
for i in `seq 20`
|
|
do
|
|
check_random_corruption
|
|
done
|
|
|
|
test_done
|