@@ -199,7 +199,8 @@ jobs:
199199 "listen_port": 9003,
200200 "transport": "plain",
201201 "hashsum": "${WASM_HASH}",
202- "wasm_available_at": ["http://127.0.0.1:8888/plain.wasm"]
202+ "wasm_available_at": ["http://127.0.0.1:8888/plain.wasm"],
203+ "config": {}
203204 }],
204205 "outbounds": [{
205206 "type": "direct",
@@ -239,13 +240,16 @@ jobs:
239240 READYEOF
240241
241242 - name : Test ALGeneva
243+ id : test_algeneva
244+ continue-on-error : true
242245 env :
243246 DROPLET_IP : ${{ steps.droplet.outputs.droplet_ip }}
244247 run : |
245248 # Generate client config
249+ # Use a simple strategy that only modifies the host header (not the CONNECT request line)
246250 cat > /tmp/algeneva-client.json << JSONEOF
247251 {
248- "log": {"level": "debug "},
252+ "log": {"level": "trace "},
249253 "inbounds": [{
250254 "type": "mixed",
251255 "tag": "mixed-in",
@@ -257,7 +261,7 @@ jobs:
257261 "tag": "algeneva-out",
258262 "server": "${DROPLET_IP}",
259263 "server_port": 9001,
260- "strategy": "[HTTP:method :*]-insert{%0A:end:value:2 }-|"
264+ "strategy": "[HTTP:host :*]-changecase{lower }-|"
261265 }]
262266 }
263267 JSONEOF
@@ -275,11 +279,14 @@ jobs:
275279 fi
276280
277281 # Test
282+ set +e
278283 RESPONSE=$(curl -sf -x socks5h://127.0.0.1:1081 -m 30 http://example.com)
284+ CURL_EXIT=$?
285+ set -e
279286 if echo "$RESPONSE" | grep -q "Example Domain"; then
280287 echo "ALGeneva test PASSED"
281288 else
282- echo "ALGeneva test FAILED"
289+ echo "ALGeneva test FAILED (curl exit code: $CURL_EXIT) "
283290 echo "Response: $RESPONSE"
284291 cat /tmp/algeneva-client.log
285292 kill $CLIENT_PID 2>/dev/null || true
@@ -289,6 +296,8 @@ jobs:
289296 kill $CLIENT_PID 2>/dev/null || true
290297
291298 - name : Test Samizdat
299+ id : test_samizdat
300+ continue-on-error : true
292301 env :
293302 DROPLET_IP : ${{ steps.droplet.outputs.droplet_ip }}
294303 SAMIZDAT_PUB : ${{ steps.creds.outputs.samizdat_pub }}
@@ -325,11 +334,14 @@ jobs:
325334 exit 1
326335 fi
327336
337+ set +e
328338 RESPONSE=$(curl -sf -x socks5h://127.0.0.1:1082 -m 30 http://example.com)
339+ CURL_EXIT=$?
340+ set -e
329341 if echo "$RESPONSE" | grep -q "Example Domain"; then
330342 echo "Samizdat test PASSED"
331343 else
332- echo "Samizdat test FAILED"
344+ echo "Samizdat test FAILED (curl exit code: $CURL_EXIT) "
333345 echo "Response: $RESPONSE"
334346 cat /tmp/samizdat-client.log
335347 kill $CLIENT_PID 2>/dev/null || true
@@ -339,6 +351,8 @@ jobs:
339351 kill $CLIENT_PID 2>/dev/null || true
340352
341353 - name : Test WATER
354+ id : test_water
355+ continue-on-error : true
342356 env :
343357 DROPLET_IP : ${{ steps.droplet.outputs.droplet_ip }}
344358 WASM_HASH : ${{ steps.creds.outputs.wasm_hash }}
@@ -361,7 +375,8 @@ jobs:
361375 "hashsum": "${WASM_HASH}",
362376 "wasm_available_at": ["http://${DROPLET_IP}:8888/plain.wasm"],
363377 "download_timeout": "60s",
364- "water_dir": "/tmp/water"
378+ "water_dir": "/tmp/water",
379+ "config": {}
365380 }]
366381 }
367382 JSONEOF
@@ -376,11 +391,14 @@ jobs:
376391 exit 1
377392 fi
378393
394+ set +e
379395 RESPONSE=$(curl -sf -x socks5h://127.0.0.1:1083 -m 30 http://example.com)
396+ CURL_EXIT=$?
397+ set -e
380398 if echo "$RESPONSE" | grep -q "Example Domain"; then
381399 echo "WATER test PASSED"
382400 else
383- echo "WATER test FAILED"
401+ echo "WATER test FAILED (curl exit code: $CURL_EXIT) "
384402 echo "Response: $RESPONSE"
385403 cat /tmp/water-client.log
386404 kill $CLIENT_PID 2>/dev/null || true
@@ -389,6 +407,35 @@ jobs:
389407
390408 kill $CLIENT_PID 2>/dev/null || true
391409
410+ - name : Check test results
411+ if : always()
412+ run : |
413+ FAILED=0
414+ echo "=== E2E Test Results ==="
415+ if [ "${{ steps.test_algeneva.outcome }}" = "success" ]; then
416+ echo "ALGeneva: PASSED"
417+ else
418+ echo "ALGeneva: FAILED"
419+ FAILED=1
420+ fi
421+ if [ "${{ steps.test_samizdat.outcome }}" = "success" ]; then
422+ echo "Samizdat: PASSED"
423+ else
424+ echo "Samizdat: FAILED"
425+ FAILED=1
426+ fi
427+ if [ "${{ steps.test_water.outcome }}" = "success" ]; then
428+ echo "WATER: PASSED"
429+ else
430+ echo "WATER: FAILED"
431+ FAILED=1
432+ fi
433+ echo "========================"
434+ if [ "$FAILED" -ne 0 ]; then
435+ echo "One or more tests failed"
436+ exit 1
437+ fi
438+
392439 - name : Collect server logs
393440 if : always()
394441 env :
0 commit comments