0d73d33ef5
This commit continues the work of taking advantage of the streaming capabilities in go-libp2p-gorpc by improving the ipfsconnector and pintracker components. StatusAll and RecoverAll methods are now streaming methods, with the REST API output changing accordingly to produce a stream of GlobalPinInfos rather than a json array. pin/ls request to the ipfs daemon now use ?stream=true and avoid having to load the full pinset map on memory. StatusAllLocal and RecoverAllLocal requests to the pin tracker stream all the way and no longer store the full pinset, and the full PinInfo status slice before sending it out. We have additionally switched to a pattern where streaming methods receive the channel as an argument, allowing the caller to decide on whether to launch a goroutine, do buffering etc.
71 lines
2.9 KiB
Bash
Executable File
71 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
test_description="Test service state import"
|
|
|
|
. lib/test-lib.sh
|
|
|
|
test_ipfs_init
|
|
test_cluster_init
|
|
|
|
test_expect_success IPFS,CLUSTER "state cleanup refreshes state on restart (crdt)" '
|
|
cid=`docker exec ipfs sh -c "echo test_54 | ipfs add -q"` &&
|
|
ipfs-cluster-ctl pin add "$cid" && sleep 5 &&
|
|
ipfs-cluster-ctl pin ls "$cid" | grep -q "$cid" &&
|
|
ipfs-cluster-ctl status "$cid" | grep -q -i "PINNED" &&
|
|
[ 1 -eq "$(ipfs-cluster-ctl --enc=json status | jq -n "[inputs] | length")" ] &&
|
|
cluster_kill && sleep 5 &&
|
|
ipfs-cluster-service --config "test-config" state cleanup -f &&
|
|
cluster_start && sleep 5 &&
|
|
[ 0 -eq "$(ipfs-cluster-ctl --enc=json status | jq -n "[inputs] | length")" ]
|
|
'
|
|
|
|
test_expect_success IPFS,CLUSTER "export + cleanup + import == noop (crdt)" '
|
|
cid=`docker exec ipfs sh -c "echo test_54 | ipfs add -q"` &&
|
|
ipfs-cluster-ctl pin add "$cid" && sleep 5 &&
|
|
[ 1 -eq "$(ipfs-cluster-ctl --enc=json status | jq -n "[inputs] | length")" ] &&
|
|
cluster_kill && sleep 5 &&
|
|
ipfs-cluster-service --config "test-config" state export -f import.json &&
|
|
ipfs-cluster-service --config "test-config" state cleanup -f &&
|
|
ipfs-cluster-service --config "test-config" state import -f import.json &&
|
|
cluster_start && sleep 5 &&
|
|
ipfs-cluster-ctl pin ls "$cid" | grep -q "$cid" &&
|
|
ipfs-cluster-ctl status "$cid" | grep -q -i "PINNED" &&
|
|
[ 1 -eq "$(ipfs-cluster-ctl --enc=json status | jq -n "[inputs] | length")" ]
|
|
'
|
|
|
|
cluster_kill
|
|
sleep 5
|
|
test_cluster_init "" raft
|
|
|
|
test_expect_success IPFS,CLUSTER "state cleanup refreshes state on restart (raft)" '
|
|
cid=`docker exec ipfs sh -c "echo test_54 | ipfs add -q"` &&
|
|
ipfs-cluster-ctl pin add "$cid" && sleep 5 &&
|
|
ipfs-cluster-ctl pin ls "$cid" | grep -q "$cid" &&
|
|
ipfs-cluster-ctl status "$cid" | grep -q -i "PINNED" &&
|
|
[ 1 -eq "$(ipfs-cluster-ctl --enc=json status | jq -n "[inputs] | length")" ] &&
|
|
cluster_kill && sleep 5 &&
|
|
ipfs-cluster-service --config "test-config" state cleanup -f &&
|
|
cluster_start && sleep 5 &&
|
|
[ 0 -eq "$(ipfs-cluster-ctl --enc=json status | jq -n "[inputs] | length")" ]
|
|
'
|
|
|
|
test_expect_success IPFS,CLUSTER "export + cleanup + import == noop (raft)" '
|
|
cid=`docker exec ipfs sh -c "echo test_54 | ipfs add -q"` &&
|
|
ipfs-cluster-ctl pin add "$cid" && sleep 5 &&
|
|
[ 1 -eq "$(ipfs-cluster-ctl --enc=json status | jq -n "[inputs] | length")" ] &&
|
|
cluster_kill && sleep 5 &&
|
|
ipfs-cluster-service --config "test-config" state export -f import.json &&
|
|
ipfs-cluster-service --config "test-config" state cleanup -f &&
|
|
ipfs-cluster-service --config "test-config" state import -f import.json &&
|
|
cluster_start && sleep 5 &&
|
|
ipfs-cluster-ctl pin ls "$cid" | grep -q "$cid" &&
|
|
ipfs-cluster-ctl status "$cid" | grep -q -i "PINNED" &&
|
|
[ 1 -eq "$(ipfs-cluster-ctl --enc=json status | jq -n "[inputs] | length")" ]
|
|
'
|
|
|
|
|
|
test_clean_ipfs
|
|
test_clean_cluster
|
|
|
|
test_done
|