Skip to content

Commit c658e22

Browse files
committed
tests: 139-ssl-cert.t: added test cases asserting support for 'ngx.thread.kill()' and 'ngx.socket.udp' in 'ssl_certificate_by_lua*'.
1 parent 97f0101 commit c658e22

File tree

1 file changed

+174
-0
lines changed

1 file changed

+174
-0
lines changed

t/139-ssl-cert-by.t

+174
Original file line numberDiff line numberDiff line change
@@ -2142,3 +2142,177 @@ qr/elapsed in ssl_certificate_by_lua\*: 0\.(?:09|1[01])\d+,/,
21422142
[error]
21432143
[alert]
21442144
[emerg]
2145+
2146+
2147+
2148+
=== TEST 25: cosocket (UDP)
2149+
--- http_config
2150+
server {
2151+
listen unix:$TEST_NGINX_HTML_DIR/nginx.sock ssl;
2152+
server_name test.com;
2153+
ssl_certificate ../../cert/test.crt;
2154+
ssl_certificate_key ../../cert/test.key;
2155+
server_tokens off;
2156+
2157+
ssl_certificate_by_lua_block {
2158+
local sock = ngx.socket.udp()
2159+
2160+
sock:settimeout(1000)
2161+
2162+
local ok, err = sock:setpeername("127.0.0.1", $TEST_NGINX_MEMCACHED_PORT)
2163+
if not ok then
2164+
ngx.log(ngx.ERR, "failed to connect to memc: ", err)
2165+
return
2166+
end
2167+
2168+
local req = "\0\1\0\0\0\1\0\0flush_all\r\n"
2169+
local ok, err = sock:send(req)
2170+
if not ok then
2171+
ngx.log(ngx.ERR, "failed to send flush_all to memc: ", err)
2172+
return
2173+
end
2174+
2175+
local res, err = sock:receive()
2176+
if not res then
2177+
ngx.log(ngx.ERR, "failed to receive memc reply: ", err)
2178+
return
2179+
end
2180+
2181+
ngx.log(ngx.INFO, "received memc reply of ", #res, " bytes")
2182+
}
2183+
}
2184+
--- config
2185+
server_tokens off;
2186+
lua_ssl_trusted_certificate ../../cert/test.crt;
2187+
lua_ssl_verify_depth 3;
2188+
2189+
location /t {
2190+
content_by_lua_block {
2191+
do
2192+
local sock = ngx.socket.tcp()
2193+
2194+
sock:settimeout(2000)
2195+
2196+
local ok, err = sock:connect("unix:$TEST_NGINX_HTML_DIR/nginx.sock")
2197+
if not ok then
2198+
ngx.say("failed to connect: ", err)
2199+
return
2200+
end
2201+
2202+
ngx.say("connected: ", ok)
2203+
2204+
local sess, err = sock:sslhandshake(nil, "test.com", true)
2205+
if not sess then
2206+
ngx.say("failed to do SSL handshake: ", err)
2207+
return
2208+
end
2209+
2210+
ngx.say("ssl handshake: ", type(sess))
2211+
end -- do
2212+
-- collectgarbage()
2213+
}
2214+
}
2215+
--- request
2216+
GET /t
2217+
--- response_body
2218+
connected: 1
2219+
ssl handshake: userdata
2220+
--- no_error_log
2221+
[error]
2222+
[alert]
2223+
[emerg]
2224+
--- grep_error_log eval: qr/received memc reply of \d+ bytes/
2225+
--- grep_error_log_out eval
2226+
[
2227+
'received memc reply of 12 bytes
2228+
',
2229+
'received memc reply of 12 bytes
2230+
',
2231+
'received memc reply of 12 bytes
2232+
',
2233+
'received memc reply of 12 bytes
2234+
',
2235+
]
2236+
2237+
2238+
2239+
=== TEST 26: uthread (kill)
2240+
--- http_config
2241+
server {
2242+
listen unix:$TEST_NGINX_HTML_DIR/nginx.sock ssl;
2243+
server_name test.com;
2244+
ssl_certificate ../../cert/test.crt;
2245+
ssl_certificate_key ../../cert/test.key;
2246+
server_tokens off;
2247+
2248+
ssl_certificate_by_lua_block {
2249+
local function f()
2250+
ngx.log(ngx.INFO, "uthread: hello from f()")
2251+
ngx.sleep(1)
2252+
end
2253+
2254+
local t, err = ngx.thread.spawn(f)
2255+
if not t then
2256+
ngx.log(ngx.ERR, "failed to spawn thread: ", err)
2257+
return ngx.exit(ngx.ERROR)
2258+
end
2259+
2260+
local ok, res = ngx.thread.kill(t)
2261+
if not ok then
2262+
ngx.log(ngx.ERR, "failed to kill thread: ", res)
2263+
return
2264+
end
2265+
2266+
ngx.log(ngx.INFO, "uthread: killed")
2267+
2268+
local ok, err = ngx.thread.kill(t)
2269+
if not ok then
2270+
ngx.log(ngx.INFO, "uthread: failed to kill: ", err)
2271+
end
2272+
}
2273+
}
2274+
--- config
2275+
server_tokens off;
2276+
lua_ssl_trusted_certificate ../../cert/test.crt;
2277+
lua_ssl_verify_depth 3;
2278+
2279+
location /t {
2280+
content_by_lua_block {
2281+
do
2282+
local sock = ngx.socket.tcp()
2283+
2284+
sock:settimeout(2000)
2285+
2286+
local ok, err = sock:connect("unix:$TEST_NGINX_HTML_DIR/nginx.sock")
2287+
if not ok then
2288+
ngx.say("failed to connect: ", err)
2289+
return
2290+
end
2291+
2292+
ngx.say("connected: ", ok)
2293+
2294+
local sess, err = sock:sslhandshake(nil, "test.com", true)
2295+
if not sess then
2296+
ngx.say("failed to do SSL handshake: ", err)
2297+
return
2298+
end
2299+
2300+
ngx.say("ssl handshake: ", type(sess))
2301+
end -- do
2302+
-- collectgarbage()
2303+
}
2304+
}
2305+
--- request
2306+
GET /t
2307+
--- response_body
2308+
connected: 1
2309+
ssl handshake: userdata
2310+
--- no_error_log
2311+
[error]
2312+
[alert]
2313+
[emerg]
2314+
--- grep_error_log eval: qr/uthread: [^.,]+/
2315+
--- grep_error_log_out
2316+
uthread: hello from f()
2317+
uthread: killed
2318+
uthread: failed to kill: already waited or killed

0 commit comments

Comments
 (0)