Blame


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