Blame


1 5df699d1 2022-08-29 op ran_no=0
2 5df699d1 2022-08-29 op failed_no=0
3 176179b2 2021-10-04 op failed=
4 176179b2 2021-10-04 op
5 a5fb2593 2022-09-08 op ge="./../ge"
6 7a4ae106 2021-12-29 op gg="./../gg"
7 176179b2 2021-10-04 op gmid="./../gmid"
8 176179b2 2021-10-04 op current_test=
9 176179b2 2021-10-04 op
10 176179b2 2021-10-04 op run_test() {
11 176179b2 2021-10-04 op ggflags=
12 176179b2 2021-10-04 op port=10965
13 7b7def0a 2022-01-03 op config_common="prefork 1
14 176179b2 2021-10-04 op ipv6 off
15 176179b2 2021-10-04 op port $port
16 176179b2 2021-10-04 op "
17 176179b2 2021-10-04 op hdr=
18 176179b2 2021-10-04 op body=
19 ae0d3cdb 2021-12-09 op dont_check_server_alive=no
20 176179b2 2021-10-04 op
21 5df699d1 2022-08-29 op ran_no=$((ran_no + 1))
22 5df699d1 2022-08-29 op
23 176179b2 2021-10-04 op current_test=$1
24 176179b2 2021-10-04 op rm -f reg.conf
25 176179b2 2021-10-04 op
26 176179b2 2021-10-04 op if ! $1; then
27 176179b2 2021-10-04 op echo "$1 failed"
28 176179b2 2021-10-04 op failed="$failed $1"
29 5df699d1 2022-08-29 op failed_no=$((failed_no + 1))
30 7bb80ca9 2022-09-10 op return
31 176179b2 2021-10-04 op else
32 176179b2 2021-10-04 op echo "$1 passed"
33 176179b2 2021-10-04 op fi
34 176179b2 2021-10-04 op
35 ae0d3cdb 2021-12-09 op if [ "$dont_check_server_alive" != 'no' ]; then
36 176179b2 2021-10-04 op return
37 176179b2 2021-10-04 op fi
38 176179b2 2021-10-04 op
39 176179b2 2021-10-04 op if ! check; then
40 176179b2 2021-10-04 op echo "gmid crashed?"
41 176179b2 2021-10-04 op failed="$failed $1"
42 5df699d1 2022-08-29 op failed_no=$((failed_no + 1))
43 176179b2 2021-10-04 op fi
44 176179b2 2021-10-04 op }
45 176179b2 2021-10-04 op
46 4a2a525d 2021-10-04 op tests_done() {
47 5df699d1 2022-08-29 op ok=$((ran_no - failed_no))
48 5df699d1 2022-08-29 op echo
49 5df699d1 2022-08-29 op echo "tests: $ran_no / passed: $ok / failed: $failed_no"
50 4a2a525d 2021-10-04 op if [ "$failed" != "" ]; then
51 4a2a525d 2021-10-04 op echo
52 4a2a525d 2021-10-04 op echo "failed tests:$failed"
53 4a2a525d 2021-10-04 op exit 1
54 4a2a525d 2021-10-04 op fi
55 4a2a525d 2021-10-04 op exit 0
56 4a2a525d 2021-10-04 op }
57 4a2a525d 2021-10-04 op
58 176179b2 2021-10-04 op # usage: gen_config <global config> <server config>
59 176179b2 2021-10-04 op # generates a configuration file reg.conf
60 176179b2 2021-10-04 op gen_config() {
61 176179b2 2021-10-04 op cat <<EOF > reg.conf
62 176179b2 2021-10-04 op $config_common
63 176179b2 2021-10-04 op $1
64 176179b2 2021-10-04 op server "localhost" {
65 176179b2 2021-10-04 op cert "$PWD/cert.pem"
66 176179b2 2021-10-04 op key "$PWD/key.pem"
67 176179b2 2021-10-04 op root "$PWD/testdata"
68 176179b2 2021-10-04 op $2
69 176179b2 2021-10-04 op }
70 176179b2 2021-10-04 op EOF
71 176179b2 2021-10-04 op if ! checkconf; then
72 176179b2 2021-10-04 op echo "failed to parse the config" >&2
73 176179b2 2021-10-04 op return 1
74 176179b2 2021-10-04 op fi
75 176179b2 2021-10-04 op }
76 176179b2 2021-10-04 op
77 92a9f41d 2022-01-03 op set_proxy() {
78 92a9f41d 2022-01-03 op cat <<EOF >>reg.conf
79 92a9f41d 2022-01-03 op server "localhost.local" {
80 92a9f41d 2022-01-03 op cert "$PWD/cert.pem"
81 92a9f41d 2022-01-03 op key "$PWD/key.pem"
82 92a9f41d 2022-01-03 op proxy {
83 92a9f41d 2022-01-03 op relay-to "localhost:$port"
84 92a9f41d 2022-01-03 op $1
85 92a9f41d 2022-01-03 op }
86 92a9f41d 2022-01-03 op }
87 92a9f41d 2022-01-03 op EOF
88 92a9f41d 2022-01-03 op
89 92a9f41d 2022-01-03 op if ! checkconf; then
90 92a9f41d 2022-01-03 op echo "failed to parse the config" >&2
91 92a9f41d 2022-01-03 op return 1
92 92a9f41d 2022-01-03 op fi
93 92a9f41d 2022-01-03 op }
94 92a9f41d 2022-01-03 op
95 176179b2 2021-10-04 op checkconf() {
96 aae8f6bf 2022-09-08 op if ! $gmid -n -f reg.conf >/dev/null 2>&1; then
97 aae8f6bf 2022-09-08 op $gmid -n -f reg.conf
98 dd208aa2 2022-01-03 op fi
99 176179b2 2021-10-04 op }
100 176179b2 2021-10-04 op
101 176179b2 2021-10-04 op # usage: setup_simple_test <global config> <server config>
102 176179b2 2021-10-04 op # generates a configuration file with `gen_config', validates it and
103 176179b2 2021-10-04 op # launches the daemon
104 176179b2 2021-10-04 op setup_simple_test() {
105 176179b2 2021-10-04 op gen_config "$1" "$2"
106 176179b2 2021-10-04 op run
107 176179b2 2021-10-04 op }
108 176179b2 2021-10-04 op
109 176179b2 2021-10-04 op # usage: get <path>
110 176179b2 2021-10-04 op # return the body of the request on stdout
111 176179b2 2021-10-04 op get() {
112 7a4ae106 2021-12-29 op $gg -T10 $ggflags "gemini://localhost:10965/$1" || true
113 176179b2 2021-10-04 op }
114 176179b2 2021-10-04 op
115 176179b2 2021-10-04 op # usage: head <path>
116 176179b2 2021-10-04 op # return the meta response line on stdout
117 176179b2 2021-10-04 op head() {
118 7a4ae106 2021-12-29 op $gg -T10 -d header $ggflags "gemini://localhost:10965/$1" || true
119 176179b2 2021-10-04 op }
120 176179b2 2021-10-04 op
121 176179b2 2021-10-04 op # usage: fetch <path>
122 176179b2 2021-10-04 op # fetches the header and the body. They're returned in $hdr and
123 176179b2 2021-10-04 op # $body.
124 176179b2 2021-10-04 op fetch() {
125 176179b2 2021-10-04 op if ! hdr="$(head $1)" || ! body="$(get $1)"; then
126 176179b2 2021-10-04 op return 1
127 176179b2 2021-10-04 op fi
128 176179b2 2021-10-04 op }
129 176179b2 2021-10-04 op
130 176179b2 2021-10-04 op # usage: fetch_hdr <path>
131 176179b2 2021-10-04 op # fetches the header into $hdr
132 176179b2 2021-10-04 op fetch_hdr() {
133 176179b2 2021-10-04 op hdr="$(head $1)"
134 176179b2 2021-10-04 op body=""
135 176179b2 2021-10-04 op }
136 176179b2 2021-10-04 op
137 176179b2 2021-10-04 op # usage: check_reply header body
138 176179b2 2021-10-04 op # checks that $hdr and $body are equal to the given strings
139 176179b2 2021-10-04 op check_reply() {
140 176179b2 2021-10-04 op if [ "$hdr" != "$1" ]; then
141 176179b2 2021-10-04 op echo "Header mismatch" >&2
142 176179b2 2021-10-04 op echo "wants : $1" >&2
143 176179b2 2021-10-04 op echo "got : $hdr" >&2
144 176179b2 2021-10-04 op return 1
145 176179b2 2021-10-04 op fi
146 176179b2 2021-10-04 op
147 176179b2 2021-10-04 op if [ "$body" != "$2" ]; then
148 176179b2 2021-10-04 op echo "Body mismatch" >&2
149 ce09569f 2021-12-29 op echo "wants : $2" >&2
150 176179b2 2021-10-04 op echo "got : $body" >&2
151 176179b2 2021-10-04 op return 1
152 176179b2 2021-10-04 op fi
153 176179b2 2021-10-04 op }
154 176179b2 2021-10-04 op
155 176179b2 2021-10-04 op run() {
156 176179b2 2021-10-04 op if check; then
157 176179b2 2021-10-04 op kill -HUP "$(cat gmid.pid)"
158 176179b2 2021-10-04 op sleep 1
159 176179b2 2021-10-04 op return
160 176179b2 2021-10-04 op fi
161 176179b2 2021-10-04 op
162 aae8f6bf 2022-09-08 op $gmid -P gmid.pid -f reg.conf
163 176179b2 2021-10-04 op
164 176179b2 2021-10-04 op # give gmid time to bind the port, otherwise we end up
165 176179b2 2021-10-04 op # executing gg when gmid isn't ready yet.
166 176179b2 2021-10-04 op sleep 1
167 176179b2 2021-10-04 op }
168 176179b2 2021-10-04 op
169 176179b2 2021-10-04 op check() {
170 176179b2 2021-10-04 op if [ ! -f gmid.pid ]; then
171 176179b2 2021-10-04 op return 1
172 176179b2 2021-10-04 op fi
173 176179b2 2021-10-04 op
174 176179b2 2021-10-04 op pid="$(cat gmid.pid || true)"
175 5266f500 2022-01-30 op if [ "$pid" = "" ]; then
176 176179b2 2021-10-04 op return 1
177 176179b2 2021-10-04 op fi
178 176179b2 2021-10-04 op
179 176179b2 2021-10-04 op # remember: we're running under ``set -e''
180 176179b2 2021-10-04 op if ps $pid >/dev/null; then
181 176179b2 2021-10-04 op return 0
182 176179b2 2021-10-04 op fi
183 176179b2 2021-10-04 op
184 176179b2 2021-10-04 op return 1
185 176179b2 2021-10-04 op }
186 176179b2 2021-10-04 op
187 176179b2 2021-10-04 op count() {
188 176179b2 2021-10-04 op wc -l | xargs
189 176179b2 2021-10-04 op }
190 176179b2 2021-10-04 op
191 176179b2 2021-10-04 op quit() {
192 176179b2 2021-10-04 op pid="$(cat gmid.pid || true)"
193 176179b2 2021-10-04 op if [ "$pid" != "" ]; then
194 176179b2 2021-10-04 op kill $pid || true
195 176179b2 2021-10-04 op wait || true
196 176179b2 2021-10-04 op fi
197 176179b2 2021-10-04 op }
198 176179b2 2021-10-04 op
199 176179b2 2021-10-04 op onexit() {
200 176179b2 2021-10-04 op rm -f bigfile bigfile.sha
201 176179b2 2021-10-04 op quit
202 176179b2 2021-10-04 op }