commit cc7f49b: [Test] Add functional tests for ssl in lua_tcp
Vsevolod Stakhov
vsevolod at highsecure.ru
Fri May 31 14:21:06 UTC 2019
Author: Vsevolod Stakhov
Date: 2019-05-31 15:19:43 +0100
URL: https://github.com/rspamd/rspamd/commit/cc7f49b369afad5a061603f73ce1445cafec07fa (HEAD -> master)
[Test] Add functional tests for ssl in lua_tcp
---
src/lua/lua_task.c | 3 ++-
test/functional/cases/230_tcp.robot | 21 ++++++++++++++++-----
test/functional/lib/rspamd.py | 14 ++++++--------
test/functional/lua/tcp.lua | 33 +++++++++++++++++++++++++++++++++
4 files changed, 57 insertions(+), 14 deletions(-)
diff --git a/src/lua/lua_task.c b/src/lua/lua_task.c
index bfae06fc7..c1b50484d 100644
--- a/src/lua/lua_task.c
+++ b/src/lua/lua_task.c
@@ -4872,7 +4872,8 @@ lua_task_get_settings_id (lua_State *L)
guint32 *hp;
if (task != NULL) {
- hp = rspamd_mempool_get_variable (task->task_pool, "settings_hash");
+ hp = rspamd_mempool_get_variable (task->task_pool,
+ RSPAMD_MEMPOOL_SETTINGS_HASH);
if (hp) {
lua_pushnumber (L, *hp);
diff --git a/test/functional/cases/230_tcp.robot b/test/functional/cases/230_tcp.robot
index 4d8b2fbd6..cbdbc6640 100644
--- a/test/functional/cases/230_tcp.robot
+++ b/test/functional/cases/230_tcp.robot
@@ -1,6 +1,6 @@
*** Settings ***
-Test Setup Http Setup
-Test Teardown Http Teardown
+Test Setup Servers Setup
+Test Teardown Servers Teardown
Library Process
Library ${TESTDIR}/lib/rspamd.py
Resource ${TESTDIR}/lib/rspamd.robot
@@ -19,6 +19,10 @@ Simple TCP request
Check Rspamc ${result} HTTP_ASYNC_RESPONSE
Check Rspamc ${result} HTTP_ASYNC_RESPONSE_2
+SSL TCP request
+ ${result} = Scan Message With Rspamc ${MESSAGE}
+ Check Rspamc ${result} TCP_SSL_RESPONSE (0.00)[test]
+ Check Rspamc ${result} TCP_SSL_RESPONSE_2 (0.00)[test2]
Sync API TCP request
${result} = Scan Message With Rspamc ${MESSAGE}
@@ -41,20 +45,27 @@ Lua Setup
Set Global Variable ${LUA_SCRIPT}
Generic Setup
-Http Setup
+Servers Setup
Run Dummy Http
+ Run Dummy Ssl
Lua Setup ${TESTDIR}/lua/tcp.lua
-Http Teardown
+Servers Teardown
${http_pid} = Get File /tmp/dummy_http.pid
Shutdown Process With Children ${http_pid}
+ ${ssl_pid} = Get File /tmp/dummy_ssl.pid
+ Shutdown Process With Children ${ssl_pid}
Normal Teardown
Run Dummy Http
[Arguments]
${result} = Start Process ${TESTDIR}/util/dummy_http.py
- Wait Until Created /tmp/dummy_http.pid
+ Wait Until Created /tmp/dummy_http.pid timeout=2 second
+Run Dummy Ssl
+ [Arguments]
+ ${result} = Start Process ${TESTDIR}/util/dummy_ssl.py ${TESTDIR}/util/server.pem
+ Wait Until Created /tmp/dummy_ssl.pid timeout=2 second
Check url
[Arguments] ${url} ${method} @{expect_results}
diff --git a/test/functional/lib/rspamd.py b/test/functional/lib/rspamd.py
index bd3e0c382..c46b06fbe 100644
--- a/test/functional/lib/rspamd.py
+++ b/test/functional/lib/rspamd.py
@@ -1,4 +1,3 @@
-import demjson
import grp
import os
import os.path
@@ -25,7 +24,7 @@ except:
import httplib
def Check_JSON(j):
- d = demjson.decode(j, strict=True)
+ d = json.loads(j, strict=True)
assert len(d) > 0
assert 'error' not in d
return d
@@ -38,7 +37,7 @@ def save_run_results(directory, filenames):
suite_name = BuiltIn().get_variable_value("${SUITE_NAME}")
test_name = BuiltIn().get_variable_value("${TEST NAME}")
if test_name is None:
- # this is suite-level tear down
+ # this is suite-level tear down
destination_directory = "%s/robot-save/%s" % (current_directory, suite_name)
else:
destination_directory = "%s/robot-save/%s/%s" % (current_directory, suite_name, test_name)
@@ -185,19 +184,18 @@ def shutdown_process(process):
process.wait(TERM_TIMEOUT)
return
except psutil.TimeoutExpired:
- logger.info( "PID {} is not termianated in {} seconds, sending SIGKILL..." %
- (process.pid, TERM_TIMEOUT))
+ logger.info( "PID {} is not terminated in {} seconds, sending SIGKILL...".format(process.pid, TERM_TIMEOUT))
try:
# send SIGKILL
process.kill()
except psutil.NoSuchProcess:
- # process exited just befor we tried to kill
+ # process exited just before we tried to kill
return
try:
process.wait(KILL_WAIT)
except psutil.TimeoutExpired:
- raise RuntimeError("Failed to shutdown process %d (%s)" % (process.pid, process.name()))
+ raise RuntimeError("Failed to shutdown process {} ({})".format(process.pid, process.name()))
def shutdown_process_with_children(pid):
@@ -229,7 +227,7 @@ def get_file_if_exists(file_path):
return myfile.read()
return None
-# copy-paste from
+# copy-paste from
# https://hg.python.org/cpython/file/6860263c05b3/Lib/shutil.py#l1068
# As soon as we move to Python 3, this should be removed in favor of shutil.which()
def python3_which(cmd, mode=os.F_OK | os.X_OK, path=None):
diff --git a/test/functional/lua/tcp.lua b/test/functional/lua/tcp.lua
index d032a049f..a95497086 100644
--- a/test/functional/lua/tcp.lua
+++ b/test/functional/lua/tcp.lua
@@ -32,6 +32,33 @@ local function http_simple_tcp_async_symbol(task)
})
end
+local function http_simple_tcp_ssl_symbol(task)
+ logger.errx(task, 'ssl_tcp_symbol: begin')
+ local function ssl_get_cb(err, data, conn)
+ logger.errx(task, 'ssl_get_cb: got reply: %s, error: %s, conn: %s', data, err, conn)
+ task:insert_result('TCP_SSL_RESPONSE_2', 1.0, tostring(data):gsub('%s', ''))
+ end
+ local function ssl_read_post_cb(err, conn)
+ logger.errx(task, 'ssl_read_post_cb: write done: error: %s, conn: %s', err, conn)
+ conn:add_read(ssl_get_cb)
+ end
+ local function ssl_read_cb(err, data, conn)
+ logger.errx(task, 'ssl_read_cb: got reply: %s, error: %s, conn: %s', data, err, conn)
+ conn:add_write(ssl_read_post_cb, "test2\n")
+ task:insert_result('TCP_SSL_RESPONSE', 1.0, tostring(data):gsub('%s', ''))
+ end
+ rspamd_tcp:request({
+ task = task,
+ callback = ssl_read_cb,
+ host = '127.0.0.1',
+ data = {'test\n'},
+ read = true,
+ ssl = true,
+ ssl_noverify = true,
+ port = 14433,
+ })
+end
+
local function http_simple_tcp_symbol(task)
logger.errx(task, 'connect_sync, before')
@@ -178,6 +205,12 @@ rspamd_config:register_symbol({
callback = http_simple_tcp_async_symbol,
no_squeeze = true
})
+rspamd_config:register_symbol({
+ name = 'SIMPLE_TCP_ASYNC_SSL_TEST',
+ score = 1.0,
+ callback = http_simple_tcp_ssl_symbol,
+ no_squeeze = true
+})
rspamd_config:register_symbol({
name = 'SIMPLE_TCP_TEST',
score = 1.0,
More information about the Commits
mailing list