diff --git a/test/tap/tests/test_ssl_large_query-t.cpp b/test/tap/tests/test_ssl_large_query-t.cpp new file mode 100644 index 000000000..2f045184b --- /dev/null +++ b/test/tap/tests/test_ssl_large_query-t.cpp @@ -0,0 +1,106 @@ +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "tap.h" +#include "command_line.h" +#include "utils.h" + + +char * username = (char *)"user1459"; +char * password = (char *)"pass1459"; + +std::vector queries_set1 = { + "SET mysql-have_ssl='true'", + "LOAD MYSQL VARIABLES TO RUNTIME", + "DELETE FROM mysql_servers WHERE hostgroup_id = 1459", + "INSERT INTO mysql_servers (hostgroup_id, hostname, port, use_ssl) VALUES (1459, '127.0.0.1', 6030, 0)", + "LOAD MYSQL SERVERS TO RUNTIME", + "DELETE FROM mysql_users WHERE username = 'user1459'", + "INSERT INTO mysql_users (username,password,default_hostgroup) VALUES ('" + std::string(username) + "','" + std::string(password) + "',1459)", + "LOAD MYSQL USERS TO RUNTIME", +}; + +std::vector queries_SQL1 = { + "DROP TABLE IF EXISTS tbl1459", + "CREATE TABLE tbl1459 (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , t1 VARCHAR)", +}; + + +int run_queries_sets(std::vector& queries, MYSQL *my, const std::string& message_prefix) { + for (std::vector::iterator it = queries.begin(); it != queries.end(); it++) { + std::string q = *it; + diag("%s: %s", message_prefix.c_str(), q.c_str()); + MYSQL_QUERY(my, q.c_str()); + } + return 0; +} + + +int main(int argc, char** argv) { + CommandLine cl; + + if(cl.getEnv()) + return exit_status(); + + plan(33); + diag("Testing SSL and fast_forward"); + + MYSQL* mysqladmin = mysql_init(NULL); + if (!mysqladmin) + return exit_status(); + + if (!mysql_real_connect(mysqladmin, cl.host, cl.admin_username, cl.admin_password, NULL, cl.admin_port, NULL, 0)) { + fprintf(stderr, "File %s, line %d, Error: %s\n", + __FILE__, __LINE__, mysql_error(mysqladmin)); + return exit_status(); + } + + MYSQL * mysql = NULL; + + diag("We will reconfigure ProxySQL to use SQLite3 Server on hostgroup 1459, IP 127.0.0.1 and port 6030"); + if (run_queries_sets(queries_set1, mysqladmin, "Running on Admin")) + return exit_status(); + + mysql = mysql_init(NULL); + if (!mysql) + return exit_status(); + + mysql_ssl_set(mysql, NULL, NULL, NULL, NULL, NULL); + if (!mysql_real_connect(mysql, cl.host, username, password, NULL, cl.port, NULL, CLIENT_SSL)) { + fprintf(stderr, "Failed to connect to database: Error: %s\n", + mysql_error(mysql)); + return exit_status(); + } + const char * c = mysql_get_ssl_cipher(mysql); + ok(c != NULL , "Cipher in use: %s", c == NULL ? "NULL" : c); + + // We now create a table named tbl1459 + if (run_queries_sets(queries_SQL1, mysql, "Running on SQLite3")) + return exit_status(); + + std::string s0 = "0"; + for (int i=16001; i<=48000; i++) { + std::string s = "INSERT INTO tbl1459 VALUES (" + std::to_string(i) + ",'"; + for (int j=0; j