diff --git a/.github/workflows/gateway-conformance.yml b/.github/workflows/gateway-conformance.yml index 0c6a19024998..06e3ce04c0a9 100644 --- a/.github/workflows/gateway-conformance.yml +++ b/.github/workflows/gateway-conformance.yml @@ -129,17 +129,47 @@ jobs: ./ipfs config Addresses.API "/ip4/127.0.0.1/tcp/5002" working-directory: kubo-gateway/cmd/ipfs - # 9. Start the kubo http-p2p-proxy and setup the forwarder - - name: Start kubo-gateway + # 9. Start the kubo http-p2p-proxy + - name: Start kubo http-p2p-proxy env: IPFS_PATH: "~/.kubo-p2p-proxy" run: | - gatewayNodeId=$(./ipfs id -f="" --api=/ip4/127.0.0.1/tcp/5001) ./ipfs daemon --offline & - ./ipfs p2p forward --allow-custom-protocol /http/1.1 /ip4/127.0.0.1/tcp/8082 /p2p/$gatewayNodeId + + endpoint="http://127.0.0.1:5002/api/v0/version" + max_retries=5 + retry_interval=1 + + check_endpoint() { + curl -X POST --silent --fail "$endpoint" > /dev/null + return $? + } + + retries=0 + while ! check_endpoint; do + retries=$((retries+1)) + + if [ $retries -ge $max_retries ]; then + echo "daemon took too long to start" + exit 1 + fi + + sleep $retry_interval + done + echo "daemon started and ready to receive API calls" + working-directory: kubo-gateway/cmd/ipfs + + # 10. Start forwarding data from the http-p2p-proxy to the node serving the Gateway API over libp2p + - name: Start http-over-libp2p forwarding proxy + run: | + gatewayNodeId=$(./ipfs --api=/ip4/127.0.0.1/tcp/5001 id -f="") + echo gatewayNodeId $gatewayNodeId + proxyNodeId=$(./ipfs --api=/ip4/127.0.0.1/tcp/5002 id -f="") + echo proxyNodeId $proxyNodeId + ./ipfs --api=/ip4/127.0.0.1/tcp/5002 p2p forward --allow-custom-protocol /http/1.1 /ip4/127.0.0.1/tcp/8082 /p2p/$gatewayNodeId working-directory: kubo-gateway/cmd/ipfs - # 10. Run the gateway-conformance tests + # 11. Run the gateway-conformance tests over libp2p - name: Run gateway-conformance tests over libp2p uses: ipfs/gateway-conformance/.github/actions/test@v0.3 with: