mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-25 04:17:44 +08:00
fix(test): retry flaky t0125-twonode.sh
This makes is clear why test failed, and what were values. Fixes flaky test: It will re-run flaky advanced test until bitswap stats match expected value (something team has been doing anyway for the past year). It also adds /quic-v1 and /webtransport tests
This commit is contained in:
parent
1f3e1d1120
commit
b22aae76a4
@ -52,7 +52,7 @@ run_random_dir_test() {
|
||||
check_dir_fetch 1 $DIR_HASH
|
||||
}
|
||||
|
||||
run_advanced_test() {
|
||||
flaky_advanced_test() {
|
||||
startup_cluster 2 "$@"
|
||||
|
||||
test_expect_success "clean repo before test" '
|
||||
@ -64,20 +64,9 @@ run_advanced_test() {
|
||||
|
||||
run_random_dir_test
|
||||
|
||||
test_expect_success "node0 data transferred looks correct" '
|
||||
ipfsi 0 bitswap stat > stat0 &&
|
||||
grep "blocks sent: 126" stat0 > /dev/null &&
|
||||
grep "blocks received: 5" stat0 > /dev/null &&
|
||||
grep "data sent: 228113" stat0 > /dev/null &&
|
||||
grep "data received: 1000256" stat0 > /dev/null
|
||||
'
|
||||
|
||||
test_expect_success "node1 data transferred looks correct" '
|
||||
ipfsi 1 bitswap stat > stat1 &&
|
||||
grep "blocks received: 126" stat1 > /dev/null &&
|
||||
grep "blocks sent: 5" stat1 > /dev/null &&
|
||||
grep "data received: 228113" stat1 > /dev/null &&
|
||||
grep "data sent: 1000256" stat1 > /dev/null
|
||||
test_expect_success "gather bitswap stats" '
|
||||
ipfsi 0 bitswap stat -v > stat0 &&
|
||||
ipfsi 1 bitswap stat -v > stat1
|
||||
'
|
||||
|
||||
test_expect_success "shut down nodes" '
|
||||
@ -85,27 +74,62 @@ run_advanced_test() {
|
||||
'
|
||||
}
|
||||
|
||||
run_advanced_test() {
|
||||
# TODO: investigate why flaky_advanced_test is flaky
|
||||
# Context: https://github.com/ipfs/kubo/pull/9486
|
||||
# sometimes, bitswap status returns unexpected block transfers
|
||||
# and everyone has been re-running circleci until is passes for at least a year.
|
||||
# this re-runs test until it passes or a timeout hits
|
||||
|
||||
BLOCKS_0=126
|
||||
BLOCKS_1=5
|
||||
DATA_0=228113
|
||||
DATA_1=1000256
|
||||
for i in $(test_seq 1 600); do
|
||||
flaky_advanced_test
|
||||
(grep -q "$DATA_0" stat0 && grep -q "$DATA_1" stat1) && break
|
||||
go-sleep 100ms
|
||||
done
|
||||
|
||||
test_expect_success "node0 data transferred looks correct" '
|
||||
test_should_contain "blocks sent: $BLOCKS_0" stat0 &&
|
||||
test_should_contain "blocks received: $BLOCKS_1" stat0 &&
|
||||
test_should_contain "data sent: $DATA_0" stat0 &&
|
||||
test_should_contain "data received: $DATA_1" stat0
|
||||
'
|
||||
|
||||
test_expect_success "node1 data transferred looks correct" '
|
||||
test_should_contain "blocks received: $BLOCKS_0" stat1 &&
|
||||
test_should_contain "blocks sent: $BLOCKS_1" stat1 &&
|
||||
test_should_contain "data received: $DATA_0" stat1 &&
|
||||
test_should_contain "data sent: $DATA_1" stat1
|
||||
'
|
||||
|
||||
}
|
||||
|
||||
test_expect_success "set up tcp testbed" '
|
||||
iptb testbed create -type localipfs -count 2 -force -init
|
||||
'
|
||||
|
||||
addrs='"[\"/ip4/127.0.0.1/tcp/0\", \"/ip4/127.0.0.1/udp/0/quic\"]"'
|
||||
test_expect_success "configure addresses" '
|
||||
ipfsi 0 config --json Addresses.Swarm '"${addrs}"' &&
|
||||
ipfsi 1 config --json Addresses.Swarm '"${addrs}"'
|
||||
test_expect_success "disable routing, use direct peering" '
|
||||
iptb run -- ipfs config Routing.Type none &&
|
||||
iptb run -- ipfs config --json Bootstrap "[]"
|
||||
'
|
||||
|
||||
# Test TCP transport
|
||||
echo "Testing TCP"
|
||||
addrs='"[\"/ip4/127.0.0.1/tcp/0\"]"'
|
||||
test_expect_success "use TCP only" '
|
||||
iptb run -- ipfs config --json Addresses.Swarm '"${addrs}"' &&
|
||||
iptb run -- ipfs config --json Swarm.Transports.Network.QUIC false &&
|
||||
iptb run -- ipfs config --json Swarm.Transports.Network.Relay false &&
|
||||
iptb run -- ipfs config --json Swarm.Transports.Network.WebTransport false &&
|
||||
iptb run -- ipfs config --json Swarm.Transports.Network.Websocket false
|
||||
'
|
||||
run_advanced_test
|
||||
|
||||
# test multiplex muxer
|
||||
echo "Running advanced tests with mplex"
|
||||
echo "Running TCP tests with mplex"
|
||||
test_expect_success "disable yamux" '
|
||||
iptb run -- ipfs config --json Swarm.Transports.Multiplexers.Yamux false
|
||||
'
|
||||
@ -114,23 +138,35 @@ run_advanced_test
|
||||
test_expect_success "re-enable yamux" '
|
||||
iptb run -- ipfs config --json Swarm.Transports.Multiplexers.Yamux null
|
||||
'
|
||||
|
||||
# test Noise
|
||||
|
||||
echo "Running advanced tests with NOISE"
|
||||
echo "Running TCP tests with NOISE"
|
||||
test_expect_success "use noise only" '
|
||||
iptb run -- ipfs config --json Swarm.Transports.Security.TLS false
|
||||
'
|
||||
|
||||
run_advanced_test
|
||||
|
||||
test_expect_success "re-enable TLS" '
|
||||
iptb run -- ipfs config --json Swarm.Transports.Security.TLS null
|
||||
'
|
||||
|
||||
# test QUIC
|
||||
echo "Running advanced tests over QUIC"
|
||||
addrs='"[\"/ip4/127.0.0.1/udp/0/quic-v1\"]"'
|
||||
test_expect_success "use QUIC only" '
|
||||
iptb run -- ipfs config --json Addresses.Swarm '"${addrs}"' &&
|
||||
iptb run -- ipfs config --json Swarm.Transports.Network.QUIC true &&
|
||||
iptb run -- ipfs config --json Swarm.Transports.Network.TCP false
|
||||
'
|
||||
run_advanced_test
|
||||
|
||||
# test WebTransport
|
||||
echo "Running advanced tests over WebTransport"
|
||||
addrs='"[\"/ip4/127.0.0.1/udp/0/quic-v1/webtransport\"]"'
|
||||
test_expect_success "use WebTransport only" '
|
||||
iptb run -- ipfs config --json Addresses.Swarm '"${addrs}"' &&
|
||||
iptb run -- ipfs config --json Swarm.Transports.Network.QUIC true &&
|
||||
iptb run -- ipfs config --json Swarm.Transports.Network.WebTransport true
|
||||
'
|
||||
run_advanced_test
|
||||
|
||||
test_done
|
||||
|
||||
@ -19,7 +19,7 @@ export IPFS_HTTP_ROUTERS="http://127.0.0.1:$ROUTER_PORT"
|
||||
test_launch_ipfs_daemon
|
||||
|
||||
test_expect_success "start HTTP router proxy" '
|
||||
socat TCP-LISTEN:$ROUTER_PORT,reuseaddr,fork,bind=127.0.0.1 STDOUT > http_requests &
|
||||
socat TCP-LISTEN:$ROUTER_PORT,reuseaddr,fork,bind=127.0.0.1,retry=10 STDOUT > http_requests &
|
||||
NCPID=$!
|
||||
test_wait_for_file 50 100ms http_requests
|
||||
'
|
||||
|
||||
Loading…
Reference in New Issue
Block a user