forked from cerc-io/ipld-eth-server
154 lines
3.2 KiB
Bash
Executable File
154 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
test_description="Test reprovider"
|
|
|
|
. lib/test-lib.sh
|
|
|
|
NUM_NODES=6
|
|
|
|
init_strategy() {
|
|
test_expect_success 'init iptb' '
|
|
iptb testbed create -type localipfs -force -count $NUM_NODES -init
|
|
'
|
|
|
|
test_expect_success 'peer ids' '
|
|
PEERID_0=$(iptb attr get 0 id) &&
|
|
PEERID_1=$(iptb attr get 1 id)
|
|
'
|
|
|
|
test_expect_success 'use pinning startegy for reprovider' '
|
|
ipfsi 0 config Reprovider.Strategy '$1'
|
|
'
|
|
|
|
startup_cluster ${NUM_NODES}
|
|
}
|
|
|
|
findprovs_empty() {
|
|
test_expect_success 'findprovs '$1' succeeds' '
|
|
ipfsi 1 dht findprovs -n 1 '$1' > findprovsOut
|
|
'
|
|
|
|
test_expect_success "findprovs $1 output is empty" '
|
|
test_must_be_empty findprovsOut
|
|
'
|
|
}
|
|
|
|
findprovs_expect() {
|
|
test_expect_success 'findprovs '$1' succeeds' '
|
|
ipfsi 1 dht findprovs -n 1 '$1' > findprovsOut &&
|
|
echo '$2' > expected
|
|
'
|
|
|
|
test_expect_success "findprovs $1 output looks good" '
|
|
test_cmp findprovsOut expected
|
|
'
|
|
}
|
|
|
|
reprovide() {
|
|
test_expect_success 'reprovide' '
|
|
# TODO: this hangs, though only after reprovision was done
|
|
ipfsi 0 bitswap reprovide
|
|
'
|
|
}
|
|
|
|
# Test 'all' strategy
|
|
init_strategy 'all'
|
|
|
|
test_expect_success 'add test object' '
|
|
HASH_0=$(echo "foo" | ipfsi 0 add -q --local)
|
|
'
|
|
|
|
findprovs_empty '$HASH_0'
|
|
reprovide
|
|
findprovs_expect '$HASH_0' '$PEERID_0'
|
|
|
|
# Test 'pinned' strategy
|
|
init_strategy 'pinned'
|
|
|
|
test_expect_success 'prepare test files' '
|
|
echo foo > f1 &&
|
|
echo bar > f2
|
|
'
|
|
|
|
test_expect_success 'add test objects' '
|
|
HASH_FOO=$(ipfsi 0 add -q --local --pin=false f1) &&
|
|
HASH_BAR=$(ipfsi 0 add -q --local --pin=false f2) &&
|
|
HASH_BAR_DIR=$(ipfsi 0 add -q --local -w f2)
|
|
'
|
|
|
|
findprovs_empty '$HASH_FOO'
|
|
findprovs_empty '$HASH_BAR'
|
|
findprovs_empty '$HASH_BAR_DIR'
|
|
|
|
reprovide
|
|
|
|
findprovs_empty '$HASH_FOO'
|
|
findprovs_expect '$HASH_BAR' '$PEERID_0'
|
|
findprovs_expect '$HASH_BAR_DIR' '$PEERID_0'
|
|
|
|
test_expect_success 'stop peer 1' '
|
|
iptb stop 1
|
|
'
|
|
|
|
# Test 'roots' strategy
|
|
init_strategy 'roots'
|
|
|
|
test_expect_success 'prepare test files' '
|
|
echo foo > f1 &&
|
|
echo bar > f2 &&
|
|
echo baz > f3
|
|
'
|
|
|
|
test_expect_success 'add test objects' '
|
|
HASH_FOO=$(ipfsi 0 add -q --local --pin=false f1) &&
|
|
HASH_BAR=$(ipfsi 0 add -q --local --pin=false f2) &&
|
|
HASH_BAZ=$(ipfsi 0 add -q --local f3) &&
|
|
HASH_BAR_DIR=$(ipfsi 0 add -q --local -w f2 | tail -1)
|
|
'
|
|
|
|
findprovs_empty '$HASH_FOO'
|
|
findprovs_empty '$HASH_BAR'
|
|
findprovs_empty '$HASH_BAR_DIR'
|
|
|
|
reprovide
|
|
|
|
findprovs_empty '$HASH_FOO'
|
|
findprovs_empty '$HASH_BAR'
|
|
findprovs_expect '$HASH_BAZ' '$PEERID_0'
|
|
findprovs_expect '$HASH_BAR_DIR' '$PEERID_0'
|
|
|
|
test_expect_success 'stop peer 1' '
|
|
iptb stop 1
|
|
'
|
|
|
|
# Test reprovider working with ticking disabled
|
|
test_expect_success 'init iptb' '
|
|
iptb testbed create -type localipfs -force -count $NUM_NODES -init
|
|
'
|
|
|
|
test_expect_success 'peer ids' '
|
|
PEERID_0=$(iptb attr get 0 id) &&
|
|
PEERID_1=$(iptb attr get 1 id)
|
|
'
|
|
|
|
test_expect_success 'Disable reprovider ticking' '
|
|
ipfsi 0 config Reprovider.Interval 0
|
|
'
|
|
|
|
startup_cluster ${NUM_NODES}
|
|
|
|
test_expect_success 'add test object' '
|
|
HASH_0=$(echo "foo" | ipfsi 0 add -q --local)
|
|
'
|
|
|
|
findprovs_empty '$HASH_0'
|
|
reprovide
|
|
findprovs_expect '$HASH_0' '$PEERID_0'
|
|
|
|
test_expect_success 'resolve object $HASH_0' '
|
|
HASH_WITH_PREFIX=$(ipfsi 1 resolve $HASH_0)
|
|
'
|
|
findprovs_expect '$HASH_WITH_PREFIX' '$PEERID_0'
|
|
|
|
test_done
|