Add monitor TLS test case

Added a test that verifies the server state is Down when the backend
doesn't support TLS.
This commit is contained in:
Markus Mäkelä 2020-02-19 14:27:06 +02:00
parent b241f7ed2a
commit 0614a44a4d
No known key found for this signature in database
GPG Key ID: 5CE746D557ACC499
3 changed files with 85 additions and 0 deletions

View File

@ -988,6 +988,9 @@ add_test_executable(mxs2621_lower_case_tables.cpp mxs2621_lower_case_tables mxs2
# MXS-2631: Duplicate system tables not ignored
add_test_executable(mxs2631_ignore_system_tables.cpp mxs2631_ignore_system_tables mxs2631_ignore_system_tables LABELS schemarouter BREAKS_REPL REPL_BACKEND)
# MXS-2878: Verify that TLS is required
add_test_executable(mxs2878_monitor_ssl.cpp mxs2878_monitor_ssl mxs2878_monitor_ssl LABELS REPL_BACKEND)
############################################
# END: Normal tests #
############################################

View File

@ -0,0 +1,47 @@
[maxscale]
threads=###threads###
[server1]
type=server
address=###node_server_IP_1###
port=###node_server_port_1###
protocol=MySQLBackend
ssl=true
[server2]
type=server
address=###node_server_IP_2###
port=###node_server_port_2###
protocol=MySQLBackend
ssl=true
[server3]
type=server
address=###node_server_IP_3###
port=###node_server_port_3###
protocol=MySQLBackend
ssl=true
[server4]
type=server
address=###node_server_IP_4###
port=###node_server_port_4###
protocol=MySQLBackend
ssl=true
[MySQL-Monitor]
type=monitor
module=mysqlmon
servers=server1,server2,server3,server4
user=maxskysql
password=skysql
[CLI]
type=service
router=cli
[CLI-Listener]
type=listener
service=CLI
protocol=maxscaled
socket=default

View File

@ -0,0 +1,35 @@
/**
* Covers the following bugs:
* MXS-2878: Monitor connections do not insist on SSL being used
* MXS-2896: Server wrongly in Running state after failure to connect
*/
#include "testconnections.h"
#include <sstream>
std::string join(StringSet st)
{
std::ostringstream ss;
for (const auto& a : st)
{
ss << a << " ";
}
return ss.str();
}
int main(int argc, char** argv)
{
TestConnections test(argc, argv);
for (auto srv : {"server1", "server2", "server3", "server4"})
{
StringSet expected = {"Down"};
auto status = test.maxscales->get_server_status(srv);
test.expect(status == expected,
"Expected '%s' but got '%s'", join(expected).c_str(), join(status).c_str());
}
return test.global_result;
}