]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
tests: control socket test improvements
authorPetr Špaček <petr.spacek@nic.cz>
Mon, 26 Oct 2020 08:28:47 +0000 (09:28 +0100)
committerPetr Špaček <petr.spacek@nic.cz>
Tue, 27 Oct 2020 10:25:55 +0000 (11:25 +0100)
daemon/lua/controlsock.test.lua

index ab730cbeb3b249838670452fbe32f8d2d40d01f8..53650e0148fdb4b01916834322fb7ef22593a996 100644 (file)
@@ -1,6 +1,7 @@
 -- SPDX-License-Identifier: GPL-3.0-or-later
 local cqsocket = require('cqueues.socket')
 local strerror = require('cqueues.errno').strerror
+local timeout = 5  -- seconds, per socket operation
 
 -- TODO: we get memory leaks from cqueues, but CI runs this without leak detection anyway
 
@@ -15,8 +16,8 @@ end
 
 
 local function switch_to_binary_mode(sock)
-       data = sock:read(2)
-       sock:write('__binary\n')
+       data = sock:xread(2, nil, timeout)
+       sock:xwrite('__binary\n', nil, timeout)
        same(data, '> ', 'propably successsful switch to binary mode')
 end
 
@@ -45,20 +46,20 @@ local function socket_fixture()
 end
 
 local function test_text_prompt()
-       data = ctrl_sock_txt:xread(2)
+       data = ctrl_sock_txt:xread(2, nil, timeout)
        same(data, '> ', 'text prompt looks like expected')
 end
 
 local function test_text_single_command()
        local expect = "this is test"
-       ctrl_sock_txt:xwrite(string.format('"%s"\n', expect))
-       data = ctrl_sock_txt:xread(#expect + 2, nil, 1 --[[ sec ]])
+       ctrl_sock_txt:xwrite(string.format('"%s"\n', expect), nil, timeout)
+       data = ctrl_sock_txt:xread(#expect + 2, nil, timeout)
        same(data, expect .. '\n\n',
                'text mode returns output in expected format')
 end
 
 local function binary_xread_len(sock)
-       data = sock:xread(4)
+       data = sock:xread(4, nil, timeout)
        local len = tonumber(data:byte(1))
        for i=2,4 do
                len = bit.bor(bit.lshift(len, 8), tonumber(data:byte(i)))
@@ -70,74 +71,74 @@ end
 local function test_binary_more_syscalls()
        local len
 
-       ctrl_sock_bin:xwrite('worker.p')
+       ctrl_sock_bin:xwrite('worker.p', nil, timeout)
        worker.sleep(0.01)
-       ctrl_sock_bin:xwrite('id\n')
+       ctrl_sock_bin:xwrite('id\n', nil, timeout)
        len = binary_xread_len(ctrl_sock_bin)
-       data = ctrl_sock_bin:xread(len, nil, 5)
+       data = ctrl_sock_bin:xread(len, nil, timeout)
        same(data, worker.pid..'\n', 'binary mode returns output in expected format')
 
-       ctrl_sock_bin:xwrite('worker.p')
+       ctrl_sock_bin:xwrite('worker.p', nil, timeout)
        worker.sleep(0.01)
-       ctrl_sock_bin:xwrite('id\nworker.id\n')
+       ctrl_sock_bin:xwrite('id\nworker.id\n', nil, timeout)
        len = binary_xread_len(ctrl_sock_bin)
-       data = ctrl_sock_bin:xread(len, nil, 5)
+       data = ctrl_sock_bin:xread(len, nil, timeout)
        same(data, worker.pid..'\n', 'binary mode returns output in expected format')
        len = binary_xread_len(ctrl_sock_bin)
-       data = ctrl_sock_bin:xread(len, nil, 5)
+       data = ctrl_sock_bin:xread(len, nil, timeout)
        same(data, worker.id..'\n', 'binary mode returns output in expected format')
 
-       ctrl_sock_bin:xwrite('worker.pid')
+       ctrl_sock_bin:xwrite('worker.pid', nil, timeout)
        worker.sleep(0.01)
-       ctrl_sock_bin:xwrite('\n')
+       ctrl_sock_bin:xwrite('\n', nil, timeout)
        len = binary_xread_len(ctrl_sock_bin)
-       data = ctrl_sock_bin:xread(len, nil, 5)
+       data = ctrl_sock_bin:xread(len, nil, timeout)
        same(data, worker.pid..'\n', 'binary mode returns output in expected format')
 
-       ctrl_sock_bin:xwrite('worker.pid')
+       ctrl_sock_bin:xwrite('worker.pid', nil, timeout)
        worker.sleep(0.01)
-       ctrl_sock_bin:xwrite('\nworker.id')
+       ctrl_sock_bin:xwrite('\nworker.id', nil, timeout)
        worker.sleep(0.01)
-       ctrl_sock_bin:xwrite('\n')
+       ctrl_sock_bin:xwrite('\n', nil, timeout)
        len = binary_xread_len(ctrl_sock_bin)
-       data = ctrl_sock_bin:xread(len, nil, 5)
+       data = ctrl_sock_bin:xread(len, nil, timeout)
        same(data, worker.pid..'\n', 'binary mode returns output in expected format')
        len = binary_xread_len(ctrl_sock_bin)
-       data = ctrl_sock_bin:xread(len, nil, 5)
+       data = ctrl_sock_bin:xread(len, nil, timeout)
        same(data, worker.id..'\n', 'binary mode returns output in expected format')
 
-       ctrl_sock_bin:xwrite('worker.pid\nworker.pid\nworker.pid\nworker.pid\n')
+       ctrl_sock_bin:xwrite('worker.pid\nworker.pid\nworker.pid\nworker.pid\n', nil, timeout)
        len = binary_xread_len(ctrl_sock_bin)
-       data = ctrl_sock_bin:xread(len, nil, 5)
+       data = ctrl_sock_bin:xread(len, nil, timeout)
        same(data, worker.pid..'\n', 'binary mode returns output in expected format')
        len = binary_xread_len(ctrl_sock_bin)
-       data = ctrl_sock_bin:xread(len, nil, 5)
+       data = ctrl_sock_bin:xread(len, nil, timeout)
        same(data, worker.pid..'\n', 'binary mode returns output in expected format')
        len = binary_xread_len(ctrl_sock_bin)
-       data = ctrl_sock_bin:xread(len, nil, 5)
+       data = ctrl_sock_bin:xread(len, nil, timeout)
        same(data, worker.pid..'\n', 'binary mode returns output in expected format')
        len = binary_xread_len(ctrl_sock_bin)
-       data = ctrl_sock_bin:xread(len, nil, 5)
+       data = ctrl_sock_bin:xread(len, nil, timeout)
        same(data, worker.pid..'\n', 'binary mode returns output in expected format')
 end
 
-local function test_close_uncomplete_cmd()
-       ctrl_sock_txt_partcmd:xwrite('worker.p')
+local function test_close_incomplete_cmd()
+       ctrl_sock_txt_partcmd:xwrite('worker.p', nil, timeout)
        ctrl_sock_txt_partcmd:close()
        pass('close text socket with short incomplete command')
 
-       ctrl_sock_bin_partcmd:xwrite('worker.p')
+       ctrl_sock_bin_partcmd:xwrite('worker.p', nil, timeout)
        ctrl_sock_bin_partcmd:close()
        pass('close binary socket with short incomplete command')
 end
 
 
 local function test_close_during_transfer()
-       ctrl_sock_txt_longcmd:xwrite(string.rep('a', 1024*1024*10))
+       ctrl_sock_txt_longcmd:xwrite(string.rep('a', 1024*1024*10), nil, timeout)
        ctrl_sock_txt_longcmd:close()
        pass('close text socket with long incomplete command')
 
-       ctrl_sock_bin_longcmd:xwrite(string.rep('a', 1024*1024*10))
+       ctrl_sock_bin_longcmd:xwrite(string.rep('a', 1024*1024*10), nil, timeout)
        ctrl_sock_bin_longcmd:close()
        pass('close binary socket with long incomplete command')
 end
@@ -147,7 +148,7 @@ local tests = {
        test_text_prompt, -- prompt after connect
        test_text_single_command,
        test_text_prompt, -- new prompt when command is finished
-       test_close_uncomplete_cmd,
+       test_close_incomplete_cmd,
        test_close_during_transfer,
        test_binary_more_syscalls,
        test_text_single_command, -- command in text mode after execute commands in binary mode