#!/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