iinitial repo - geomyidae-tests - geomyidae tests Err bitreich.org 70 hgit clone git://bitreich.org/geomyidae-tests/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae-tests/ URL:git://bitreich.org/geomyidae-tests/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae-tests/ bitreich.org 70 1Log /scm/geomyidae-tests/log.gph bitreich.org 70 1Files /scm/geomyidae-tests/files.gph bitreich.org 70 1Refs /scm/geomyidae-tests/refs.gph bitreich.org 70 1Tags /scm/geomyidae-tests/tag bitreich.org 70 1README /scm/geomyidae-tests/file/README.gph bitreich.org 70 1LICENSE /scm/geomyidae-tests/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 77772ad44967239799ef0fa93ab220d8d133b15e /scm/geomyidae-tests/commit/77772ad44967239799ef0fa93ab220d8d133b15e.gph bitreich.org 70 hAuthor: Hiltjo Posthuma URL:mailto:hiltjo@codemadness.org bitreich.org 70 iDate: Fri, 21 Jul 2023 13:58:55 +0200 Err bitreich.org 70 i Err bitreich.org 70 iinitial repo Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i A Makefile | 13 +++++++++++++ Err bitreich.org 70 i A README | 7 +++++++ Err bitreich.org 70 i A env.c | 14 ++++++++++++++ Err bitreich.org 70 i A run.sh | 35 +++++++++++++++++++++++++++++++ Err bitreich.org 70 i A test.c | 97 ++++++++++++++++++++++++++++++ Err bitreich.org 70 i A tests | 7 +++++++ Err bitreich.org 70 i Err bitreich.org 70 i6 files changed, 173 insertions(+), 0 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/Makefile b/Makefile /scm/geomyidae-tests/file/Makefile.gph bitreich.org 70 i@@ -0,0 +1,13 @@ Err bitreich.org 70 i+build: clean Err bitreich.org 70 i+ ${CC} -o test.cgi test.c -static Err bitreich.org 70 i+ Err bitreich.org 70 i+setup: Err bitreich.org 70 i+ mkdir -p results Err bitreich.org 70 i+ rm -f test_counter.txt Err bitreich.org 70 i+ Err bitreich.org 70 i+clean-results: Err bitreich.org 70 i+ rm -rf results Err bitreich.org 70 i+ rm -f test_counter.txt Err bitreich.org 70 i+ Err bitreich.org 70 i+clean: Err bitreich.org 70 i+ rm -f test.cgi Err bitreich.org 70 1diff --git a/README b/README /scm/geomyidae-tests/file/README.gph bitreich.org 70 i@@ -0,0 +1,7 @@ Err bitreich.org 70 i+geomyidae testsuite initial prototype Err bitreich.org 70 i+ Err bitreich.org 70 i+steps to run: Err bitreich.org 70 i+ Err bitreich.org 70 i+as root: ./run.sh Err bitreich.org 70 i+ Err bitreich.org 70 i+make sure geomyidae is not running Err bitreich.org 70 1diff --git a/env.c b/env.c /scm/geomyidae-tests/file/env.c.gph bitreich.org 70 i@@ -0,0 +1,14 @@ Err bitreich.org 70 i+#include Err bitreich.org 70 i+ Err bitreich.org 70 i+extern char **environ; Err bitreich.org 70 i+ Err bitreich.org 70 i+int Err bitreich.org 70 i+main(void) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ char **p; Err bitreich.org 70 i+ Err bitreich.org 70 i+ for (p = environ; p && *p; p++) Err bitreich.org 70 i+ puts(*p); Err bitreich.org 70 i+ Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i+} Err bitreich.org 70 1diff --git a/run.sh b/run.sh /scm/geomyidae-tests/file/run.sh.gph bitreich.org 70 i@@ -0,0 +1,35 @@ Err bitreich.org 70 i+#!/bin/sh Err bitreich.org 70 i+bin="/home/hiltjo/p/geomyidae/geomyidae" Err bitreich.org 70 i+host="127.0.0.1" Err bitreich.org 70 i+port="7070" Err bitreich.org 70 i+base="$(pwd)" Err bitreich.org 70 i+user="hiltjo" Err bitreich.org 70 i+group="hiltjo" Err bitreich.org 70 i+ Err bitreich.org 70 i+run_tests() { Err bitreich.org 70 i+ while read -r line; do Err bitreich.org 70 i+ printf '%s\r\n' "$line" | nc "$host" "$port" Err bitreich.org 70 i+ done < tests Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+uid=$(id -u) Err bitreich.org 70 i+if test "$uid" != "0"; then Err bitreich.org 70 i+ echo "needs to be run as root to be able to chroot the daemon, etc" >&2 Err bitreich.org 70 i+ exit 1 Err bitreich.org 70 i+fi Err bitreich.org 70 i+ Err bitreich.org 70 i+# clean previous tests Err bitreich.org 70 i+rm -rf results Err bitreich.org 70 i+mkdir -p results Err bitreich.org 70 i+chown "$user:$group" results Err bitreich.org 70 i+rm -f test_counter.txt Err bitreich.org 70 i+ Err bitreich.org 70 i+"$bin" -4 -d -b "$base" -p "$port" -o "$port" -h "$host" -u "$user" -g "$group" & Err bitreich.org 70 i+run_tests Err bitreich.org 70 i+pkill geomyidae Err bitreich.org 70 i+ Err bitreich.org 70 i+"$bin" -4 -c -d -b "$base" -p "$port" -o "$port" -h "$host" -u "$user" -g "$group" & Err bitreich.org 70 i+run_tests Err bitreich.org 70 i+pkill geomyidae Err bitreich.org 70 i+ Err bitreich.org 70 i+# TOOD: test TLS Err bitreich.org 70 1diff --git a/test.c b/test.c /scm/geomyidae-tests/file/test.c.gph bitreich.org 70 i@@ -0,0 +1,97 @@ Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+ Err bitreich.org 70 i+const char *counter_path = "test_counter.txt"; Err bitreich.org 70 i+ Err bitreich.org 70 i+/* read counter */ Err bitreich.org 70 i+long Err bitreich.org 70 i+get_test_counter(void) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ FILE *fp; Err bitreich.org 70 i+ char buf[32]; Err bitreich.org 70 i+ size_t n; Err bitreich.org 70 i+ long counter; Err bitreich.org 70 i+ Err bitreich.org 70 i+ fp = fopen(counter_path, "rb+"); Err bitreich.org 70 i+ if (!fp) Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i+ Err bitreich.org 70 i+ n = fread(buf, 1, sizeof(buf), fp); Err bitreich.org 70 i+ if (n < 0 || ferror(fp)) Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i+ buf[n] = '\0'; Err bitreich.org 70 i+ counter = strtol(buf, NULL, 10); Err bitreich.org 70 i+ Err bitreich.org 70 i+ return counter; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+/* write new counter */ Err bitreich.org 70 i+int Err bitreich.org 70 i+write_test_counter(long counter) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ FILE *fp; Err bitreich.org 70 i+ char buf[32]; Err bitreich.org 70 i+ size_t n; Err bitreich.org 70 i+ int ret; Err bitreich.org 70 i+ Err bitreich.org 70 i+ fp = fopen(counter_path, "wb+"); Err bitreich.org 70 i+ if (!fp) { Err bitreich.org 70 i+ fprintf(stderr, "error opening path for writing counter: %s", Err bitreich.org 70 i+ strerror(errno)); Err bitreich.org 70 i+ return -1; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ snprintf(buf, sizeof(buf), "%ld", counter); Err bitreich.org 70 i+ fwrite(buf, 1, strlen(buf), fp); Err bitreich.org 70 i+ ret = (fflush(fp) || ferror(fp)) ? -1 : 0; Err bitreich.org 70 i+ fclose(fp); Err bitreich.org 70 i+ Err bitreich.org 70 i+ return ret; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+int Err bitreich.org 70 i+main(void) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ FILE *fp; Err bitreich.org 70 i+ char path[PATH_MAX]; Err bitreich.org 70 i+ const char *envs[] = { Err bitreich.org 70 i+ "PATH_INFO", Err bitreich.org 70 i+ "PATH_TRANSLATED", Err bitreich.org 70 i+ "QUERY_STRING", Err bitreich.org 70 i+ "SCRIPT_NAME", Err bitreich.org 70 i+ /* TLS */ Err bitreich.org 70 i+ "SERVER_PROTOCOL", Err bitreich.org 70 i+ "HTTPS", Err bitreich.org 70 i+ /* gopher-specific: */ Err bitreich.org 70 i+ "SEARCHREQUEST", Err bitreich.org 70 i+ "X_GOPHER_SEARCH" Err bitreich.org 70 i+ }; Err bitreich.org 70 i+ char *p; Err bitreich.org 70 i+ int i; Err bitreich.org 70 i+ long counter; Err bitreich.org 70 i+ Err bitreich.org 70 i+ counter = get_test_counter(); Err bitreich.org 70 i+ Err bitreich.org 70 i+ snprintf(path, sizeof(path), "results/%lld.txt", counter); Err bitreich.org 70 i+ fp = fopen(path, "wb+"); Err bitreich.org 70 i+ if (!fp) { Err bitreich.org 70 i+ fprintf(stderr, "error writing result to path: %s: %s\n", Err bitreich.org 70 i+ path, strerror(errno)); Err bitreich.org 70 i+ return 1; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ for (i = 0; i < sizeof(envs) / sizeof(envs[0]); i++) { Err bitreich.org 70 i+ p = getenv(envs[i]); Err bitreich.org 70 i+ if (!p) Err bitreich.org 70 i+ p = "(null)"; Err bitreich.org 70 i+ fprintf(fp, "%s = %s\n", envs[i], p); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ fclose(fp); Err bitreich.org 70 i+ Err bitreich.org 70 i+ write_test_counter(counter + 1); Err bitreich.org 70 i+ Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i+} Err bitreich.org 70 1diff --git a/tests b/tests /scm/geomyidae-tests/file/tests.gph bitreich.org 70 i@@ -0,0 +1,7 @@ Err bitreich.org 70 i+test.cgi Err bitreich.org 70 i+/test.cgi Err bitreich.org 70 i+//test.cgi Err bitreich.org 70 i+/?query Err bitreich.org 70 i+/test.cgi?query Err bitreich.org 70 i+/test.cgi?query=test Err bitreich.org 70 i+/test.cgi?query=/test Err bitreich.org 70 .