Skip to content

Commit d171f17

Browse files
committed
internal res object tests
some, need more.
1 parent f92a428 commit d171f17

3 files changed

Lines changed: 76 additions & 0 deletions

File tree

proxy_internal.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,7 @@ static inline int _mcplib_internal_run(LIBEVENT_THREAD *t, mcp_request_t *rq, mc
231231
r->cmd = rq->pr.command;
232232
// Always return OK from here as this is signalling an internal error.
233233
r->status = MCMC_OK;
234+
// TODO: r->mode = inherit the noreply/quiet mode.
234235

235236
return 0;
236237
}

t/proxyinternal.lua

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,26 @@ function mcp_config_routes(zones)
2121
fg:ready({ n = "internal", f = function(rctx)
2222
return function(r)
2323
local k = r:key()
24+
local cmd = r:command()
2425
if string.find(k, "^/sub/") then
2526
return rctx:enqueue_and_wait(r, hsub)
2627
else
2728
if k == "log" then
2829
local res = rctx:enqueue_and_wait(r, h)
2930
mcp.log_req(r, res, "testing")
3031
return res
32+
elseif cmd == mcp.CMD_MG and k == "response/hit" then
33+
local res = rctx:enqueue_and_wait(r, h)
34+
return string.format("SERVER_ERROR res:hit = %q\r\n", res:hit())
35+
elseif cmd == mcp.CMD_MG and k == "response/code" then
36+
local res = rctx:enqueue_and_wait(r, h)
37+
return string.format("SERVER_ERROR res:code = %q\r\n", res:code())
38+
elseif cmd == mcp.CMD_MG and k == "response/line" then
39+
local res = rctx:enqueue_and_wait(r, h)
40+
return string.format("SERVER_ERROR res:line = %q\r\n", res:line())
41+
elseif cmd == mcp.CMD_MG and k == "response/vlen" then
42+
local res = rctx:enqueue_and_wait(r, h)
43+
return string.format("SERVER_ERROR res:vlen = %q\r\n", res:vlen())
3144
else
3245
return rctx:enqueue_and_wait(r, h)
3346
end

t/proxyinternal.t

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,74 @@ $ps->autoflush(1);
4040
$t->set_c($ps);
4141

4242
{
43+
test_res();
4344
test_basics();
4445
test_fetch_extstore();
4546
test_pipe_extstore();
4647
test_etc();
4748
}
4849

50+
# ensure the result objects still function for internal RES.
51+
# NOTE: could cuddle the mode with P or L flags but I wanted to seed the item
52+
# for each individual test.
53+
sub test_res {
54+
subtest 'response/hit' => sub {
55+
$t->c_send("mg response/hit v t\r\n");
56+
$t->c_recv("SERVER_ERROR res:hit = false\r\n");
57+
58+
$t->c_send("ms response/hit 2\r\nhi\r\n");
59+
$t->c_recv("HD\r\n", "seeding hit response");
60+
61+
$t->c_send("mg response/hit v t\r\n");
62+
$t->c_recv("SERVER_ERROR res:hit = true\r\n");
63+
64+
$t->clear();
65+
};
66+
67+
# NOTE: if this test fails it may be because MCMC_CODE numbers changed
68+
subtest 'response/code' => sub {
69+
$t->c_send("mg response/code v t\r\n");
70+
$t->c_recv("SERVER_ERROR res:code = 17\r\n");
71+
72+
$t->c_send("ms response/code 2\r\nhi\r\n");
73+
$t->c_recv("HD\r\n", "seeding response");
74+
75+
$t->c_send("mg response/code v t\r\n");
76+
$t->c_recv("SERVER_ERROR res:code = 15\r\n");
77+
78+
$t->clear();
79+
};
80+
81+
subtest 'response/line' => sub {
82+
$t->c_send("mg response/line v t\r\n");
83+
$t->c_recv("SERVER_ERROR res:line = nil\r\n");
84+
85+
$t->c_send("ms response/line 2\r\nhi\r\n");
86+
$t->c_recv("HD\r\n", "seeding response");
87+
88+
$t->c_send("mg response/line v t s h\r\n");
89+
$t->c_recv("SERVER_ERROR res:line = \"t-1 s2 h0\"\r\n");
90+
91+
$t->clear();
92+
};
93+
94+
subtest 'response/line' => sub {
95+
$t->c_send("mg response/vlen v t\r\n");
96+
$t->c_recv("SERVER_ERROR res:vlen = 0\r\n");
97+
98+
$t->c_send("ms response/vlen 5\r\nhello\r\n");
99+
$t->c_recv("HD\r\n", "seeding response");
100+
101+
$t->c_send("mg response/vlen v t\r\n");
102+
$t->c_recv("SERVER_ERROR res:vlen = 5\r\n");
103+
104+
$t->clear();
105+
};
106+
107+
# TODO: test quiet and noreply.
108+
109+
}
110+
49111
sub test_basics {
50112
subtest 'ms/mg' => sub {
51113
$t->c_send("ms /b/a 2\r\nhi\r\n");

0 commit comments

Comments
 (0)