mirror of
https://github.com/ipfs/kubo.git
synced 2025-07-02 03:28:25 +08:00
Merge pull request #2297 from ipfs/t0240-improvements
t0240 improvements
This commit is contained in:
@ -19,7 +19,7 @@ check_has_connection() {
|
|||||||
|
|
||||||
startup_cluster() {
|
startup_cluster() {
|
||||||
num_nodes="$1"
|
num_nodes="$1"
|
||||||
bound=$(expr $num_nodes - 1)
|
bound=$(expr "$num_nodes" - 1)
|
||||||
|
|
||||||
test_expect_success "start up nodes" '
|
test_expect_success "start up nodes" '
|
||||||
iptb start
|
iptb start
|
||||||
@ -29,7 +29,7 @@ startup_cluster() {
|
|||||||
iptb connect [1-$bound] 0
|
iptb connect [1-$bound] 0
|
||||||
'
|
'
|
||||||
|
|
||||||
for i in $(test_seq 1 $bound)
|
for i in $(test_seq 0 "$bound")
|
||||||
do
|
do
|
||||||
test_expect_success "node $i is connected" '
|
test_expect_success "node $i is connected" '
|
||||||
check_has_connection "$i" ||
|
check_has_connection "$i" ||
|
||||||
|
@ -11,34 +11,22 @@ test_description="Test ipfs repo operations"
|
|||||||
export DEBUG=true
|
export DEBUG=true
|
||||||
|
|
||||||
setup_iptb() {
|
setup_iptb() {
|
||||||
|
num_nodes="$1"
|
||||||
|
bound=$(expr "$num_nodes" - 1)
|
||||||
|
|
||||||
test_expect_success "iptb init" '
|
test_expect_success "iptb init" '
|
||||||
iptb init -n4 --bootstrap none --port 0
|
iptb init -n$num_nodes --bootstrap none --port 0
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success "set configs up" '
|
for i in $(test_seq 0 "$bound")
|
||||||
for i in $(test_seq 0 3)
|
do
|
||||||
do
|
test_expect_success "set configs up for node $i" '
|
||||||
ipfsi $i config Ipns.RepublishPeriod 20s
|
ipfsi "$i" config Ipns.RepublishPeriod 20s &&
|
||||||
ipfsi $i config --json Ipns.ResolveCacheSize 0
|
ipfsi "$i" config --json Ipns.ResolveCacheSize 0
|
||||||
done
|
'
|
||||||
'
|
done
|
||||||
|
|
||||||
test_expect_success "start up nodes" '
|
startup_cluster "$num_nodes"
|
||||||
iptb start
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success "connect nodes" '
|
|
||||||
iptb connect 0 1 &&
|
|
||||||
iptb connect 0 2 &&
|
|
||||||
iptb connect 0 3
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success "nodes have connections" '
|
|
||||||
ipfsi 0 swarm peers | grep ipfs &&
|
|
||||||
ipfsi 1 swarm peers | grep ipfs &&
|
|
||||||
ipfsi 2 swarm peers | grep ipfs &&
|
|
||||||
ipfsi 3 swarm peers | grep ipfs
|
|
||||||
'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
teardown_iptb() {
|
teardown_iptb() {
|
||||||
@ -48,62 +36,63 @@ teardown_iptb() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
verify_can_resolve() {
|
verify_can_resolve() {
|
||||||
node=$1
|
num_nodes="$1"
|
||||||
name=$2
|
bound=$(expr "$num_nodes" - 1)
|
||||||
expected=$3
|
name="$2"
|
||||||
|
expected="$3"
|
||||||
|
msg="$4"
|
||||||
|
|
||||||
test_expect_success "node can resolve entry" '
|
for node in $(test_seq 0 "$bound")
|
||||||
ipfsi $node name resolve $name > resolve
|
do
|
||||||
'
|
test_expect_success "$msg: node $node can resolve entry" '
|
||||||
|
ipfsi "$node" name resolve "$name" > resolve
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success "output looks right" '
|
test_expect_success "$msg: output for node $node looks right" '
|
||||||
printf "/ipfs/$expected\n" > expected &&
|
printf "/ipfs/$expected\n" > expected &&
|
||||||
test_cmp expected resolve
|
test_cmp expected resolve
|
||||||
'
|
'
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
verify_cannot_resolve() {
|
verify_cannot_resolve() {
|
||||||
node=$1
|
num_nodes="$1"
|
||||||
name=$2
|
bound=$(expr "$num_nodes" - 1)
|
||||||
|
name="$2"
|
||||||
|
msg="$3"
|
||||||
|
|
||||||
echo "verifying resolution fails on node $node"
|
for node in $(test_seq 0 "$bound")
|
||||||
test_expect_success "node cannot resolve entry" '
|
do
|
||||||
# TODO: this should work without the timeout option
|
test_expect_success "$msg: resolution fails on node $node" '
|
||||||
# but it currently hangs for some reason every so often
|
# TODO: this should work without the timeout option
|
||||||
test_expect_code 1 ipfsi $node name resolve --timeout=300ms $name
|
# but it currently hangs for some reason every so often
|
||||||
'
|
test_expect_code 1 ipfsi "$node" name resolve --timeout=300ms "$name"
|
||||||
|
'
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_iptb
|
num_test_nodes=4
|
||||||
|
|
||||||
|
setup_iptb "$num_test_nodes"
|
||||||
|
|
||||||
test_expect_success "publish succeeds" '
|
test_expect_success "publish succeeds" '
|
||||||
HASH=$(echo "foobar" | ipfsi 1 add -q) &&
|
HASH=$(echo "foobar" | ipfsi 1 add -q) &&
|
||||||
ipfsi 1 name publish -t 5s $HASH
|
ipfsi 1 name publish -t 5s $HASH
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success "other nodes can resolve" '
|
test_expect_success "get id succeeds" '
|
||||||
id=$(ipfsi 1 id -f "<id>") &&
|
id=$(ipfsi 1 id -f "<id>")
|
||||||
verify_can_resolve 0 $id $HASH &&
|
|
||||||
verify_can_resolve 1 $id $HASH &&
|
|
||||||
verify_can_resolve 2 $id $HASH &&
|
|
||||||
verify_can_resolve 3 $id $HASH
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success "after five seconds, records are invalid" '
|
verify_can_resolve "$num_test_nodes" "$id" "$HASH" "just after publishing"
|
||||||
go-sleep 5s &&
|
|
||||||
verify_cannot_resolve 0 $id &&
|
|
||||||
verify_cannot_resolve 1 $id &&
|
|
||||||
verify_cannot_resolve 2 $id &&
|
|
||||||
verify_cannot_resolve 3 $id
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success "republisher fires after twenty seconds" '
|
go-sleep 5s
|
||||||
go-sleep 15s &&
|
|
||||||
verify_can_resolve 0 $id $HASH &&
|
verify_cannot_resolve "$num_test_nodes" "$id" "after five seconds, records are invalid"
|
||||||
verify_can_resolve 1 $id $HASH &&
|
|
||||||
verify_can_resolve 2 $id $HASH &&
|
go-sleep 15s
|
||||||
verify_can_resolve 3 $id $HASH
|
|
||||||
'
|
verify_can_resolve "$num_test_nodes" "$id" "$HASH" "republisher fires after twenty seconds"
|
||||||
|
|
||||||
teardown_iptb
|
teardown_iptb
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user