-
Notifications
You must be signed in to change notification settings - Fork 5
/
test_cert_loader.lua
75 lines (63 loc) · 2.46 KB
/
test_cert_loader.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
local cert_loader = require('acid.cert_loader')
local time = require('acid.time')
function test.build_cert_tree_and_choose(t)
local sess = {
cert_path = 'test_certs',
cert_suffix = '.crt',
cert_key_suffix = '.key',
}
local r, err, errmsg = cert_loader.build_cert_tree(sess, 'cert_tree')
t:eq(nil, err, errmsg)
local cert_tree = r.value
t:neq(nil, cert_tree.com.aa.bb._cert_info.der_cert)
t:neq(nil, cert_tree.com.aa.bb._cert_info.der_key)
t:neq(nil, cert_tree.com.aa.bb.cc._cert_info.der_cert)
t:neq(nil, cert_tree.com.aa.bb.cc._cert_info.der_key)
t:neq(nil, cert_tree.root_cert._cert_info.der_cert)
t:neq(nil, cert_tree.root_cert._cert_info.der_key)
t:eq(nil, cert_tree.invalid_cert)
for _, server_name, cert_name, desc in t:case_iter(2, {
{'bb.aa.com', 'bb.aa.com'},
{'foo.bar.bb.aa.com', 'bb.aa.com'},
{'foo.cc.bb.aa.com', 'cc.bb.aa.com'},
{'cc.bb.aa.com', 'cc.bb.aa.com'},
{'bar.cc.bb.aa.com', 'cc.bb.aa.com'},
{'aa.com', nil},
{'foo', nil},
{'foo.root_cert', 'root_cert'},
}) do
local cert_info = cert_loader.choose_cert(cert_tree, server_name)
t:eq(cert_name, (cert_info or {}).cert_name, desc)
end
end
function test.get_cert_tree(t)
local opts = {
expire_time=0.1,
cache_expire_time=0.1,
cert_path='test_certs',
shared_dict_name='test_shared',
lock_shared_dict_name='shared_dict_lock',
}
local start_ms = time.get_ms()
local _, err, errmsg = cert_loader.get_cert_tree(opts)
local first_time_used = time.get_ms() - start_ms
t:eq(nil, err, errmsg)
test.dd(string.format('at first time, time used: %d ms.',
first_time_used))
ngx.sleep(1.1)
local start_ms = time.get_ms()
local _, err, errmsg = cert_loader.get_cert_tree(opts)
local second_time_used = time.get_ms() - start_ms
t:eq(nil, err, errmsg)
test.dd(string.format('at second time, time used: %d ms.',
second_time_used))
t:eq(true, second_time_used < first_time_used / 10)
ngx.sleep(1.1)
local start_ms = time.get_ms()
local _, err, errmsg = cert_loader.get_cert_tree(opts)
local third_time_used = time.get_ms() - start_ms
t:eq(nil, err, errmsg)
test.dd(string.format('at third time, time used: %d ms.',
third_time_used))
t:eq(true, third_time_used < first_time_used / 10)
end