diff options
author | EuAndreh <eu@euandre.org> | 2024-07-22 12:18:36 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-07-22 12:19:10 -0300 |
commit | dbdde42b3ef983c0ede6942119f716c1e2eb6ff3 (patch) | |
tree | 2bf7ac01dda46b12446b65be4fe562912fa339b2 /tests/integration.sh | |
parent | src/lib.go: Long when start listening (diff) | |
download | binder-dbdde42b3ef983c0ede6942119f716c1e2eb6ff3.tar.gz binder-dbdde42b3ef983c0ede6942119f716c1e2eb6ff3.tar.xz |
Add integration tests
Diffstat (limited to 'tests/integration.sh')
-rwxr-xr-x | tests/integration.sh | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/integration.sh b/tests/integration.sh new file mode 100755 index 0000000..4c59d3f --- /dev/null +++ b/tests/integration.sh @@ -0,0 +1,69 @@ +#!/bin/sh +set -eu + +. tests/lib.sh + + +test_exits_when_upstream_errors() { + testing 'exits when upstream errors' + + N="$LINENO" + OUT="$(mkstemp)" + ERR="$(mkstemp)" + trap 'rm -f "$OUT" "$ERR" s1.socket client.txt' EXIT + + rm -f s1.socket + ./binder.bin localhost:1234 s1.socket 1>"$OUT" 2>"$ERR" & + while ! lsof -s TCP:LISTEN -i :1234 > /dev/null; do + true + done + + echo request | socat tcp-connect:localhost:1234 stdio > client.txt + + assert_fgrep_stream '$OUT' "$OUT" 'listen-start' + assert_fgrep_stream '$OUT' "$OUT" 'active-connections' + assert_fgrep_stream '$OUT' "$OUT" 'dial-connection' + assert_empty_stderr + assert_empty_stream 'client.txt' client.txt + rm -f "$OUT" "$ERR" s1.socket client.txt + + test_ok +} + +test_works_from_client_to_server() { + testing 'works from client to server' + + N="$LINENO" + OUT="$(mkstemp)" + ERR="$(mkstemp)" + trap 'rm -f "$OUT" "$ERR" s2.socket client.txt server.txt' EXIT + + rm -f s2.socket + ./binder.bin localhost:1234 s2.socket 1>"$OUT" 2>"$ERR" & + pid=$! + while ! lsof -s TCP:LISTEN -i :1234 > /dev/null; do + true + done + + echo response | socat unix-listen:s2.socket stdio > server.txt & + while [ ! -S s2.socket ]; do + true + done + + echo request | socat tcp-connect:localhost:1234 stdio > client.txt + kill $pid + wait + + assert_fgrep_stream '$OUT' "$OUT" 'listen-start' + assert_fgrep_stream '$OUT' "$OUT" 'active-connections' + assert_empty_stderr + assert_fgrep_stream 'client.txt' client.txt 'response' + assert_fgrep_stream 'server.txt' server.txt 'request' + rm -f "$OUT" "$ERR" s2.socket client.txt server.txt + + test_ok +} + + +test_exits_when_upstream_errors +test_works_from_client_to_server |