From: Petr Špaček Date: Mon, 26 Oct 2020 08:28:47 +0000 (+0100) Subject: tests: control socket test improvements X-Git-Tag: v5.2.0~6^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ce775ef0df1d58fc0393e10d225ab26fe59e701;p=thirdparty%2Fknot-resolver.git tests: control socket test improvements --- diff --git a/daemon/lua/controlsock.test.lua b/daemon/lua/controlsock.test.lua index ab730cbeb..53650e014 100644 --- a/daemon/lua/controlsock.test.lua +++ b/daemon/lua/controlsock.test.lua @@ -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