diff --git a/test/tap/tap/Makefile b/test/tap/tap/Makefile index ae7671354..ff26e6886 100644 --- a/test/tap/tap/Makefile +++ b/test/tap/tap/Makefile @@ -9,7 +9,7 @@ clean: OPT=-O2 -libtap.a: tap.cpp tap.h command_line.cpp command_line.h - g++ -c tap.cpp command_line.cpp -std=c++11 -I$(INCLUDE) $(OPT) - ar rcs libtap.a tap.o command_line.o +libtap.a: tap.cpp tap.h command_line.cpp command_line.h utils.cpp utils.h + g++ -c tap.cpp command_line.cpp utils.cpp -std=c++11 -I$(INCLUDE) $(OPT) + ar rcs libtap.a tap.o command_line.o utils.o diff --git a/test/tap/tests/Makefile b/test/tap/tests/Makefile index 0a182e69b..a7f9d9709 100644 --- a/test/tap/tests/Makefile +++ b/test/tap/tests/Makefile @@ -74,13 +74,13 @@ all: tests .PHONY: clean clean: - rm -f basic-t set_character_set-t charset_unsigned_int-t select_config_file-t sqlite3-t galera_1_timeout_count galera_2_timeout_no_count aurora || true + rm -f basic-t set_character_set-t charset_unsigned_int-t select_config_file-t sqlite3-t galera_1_timeout_count galera_2_timeout_no_count aurora test_set_character_results-t || true OPT=-O2 -SRC=basic-t.cpp set_character_set-t.cpp charset_unsigned_int-t.cpp select_config_file-t.cpp sqlite3-t.cpp galera_1_timeout_count.cpp galera_2_timeout_no_count.cpp aurora.cpp +SRC=basic-t.cpp set_character_set-t.cpp charset_unsigned_int-t.cpp select_config_file-t.cpp sqlite3-t.cpp galera_1_timeout_count.cpp galera_2_timeout_no_count.cpp aurora.cpp test_set_character_results-t.cpp -tests: basic-t set_character_set-t charset_unsigned_int-t select_config_file-t sqlite3-t +tests: basic-t set_character_set-t charset_unsigned_int-t select_config_file-t sqlite3-t test_set_character_results-t testgalera: galera_1_timeout_count galera_2_timeout_no_count testaurora: aurora @@ -99,6 +99,9 @@ charset_unsigned_int-t: charset_unsigned_int-t.cpp $(TAP_LIBDIR)/libtap.a select_config_file-t: select_config_file-t.cpp $(TAP_LIBDIR)/libtap.a g++ select_config_file-t.cpp $(INCLUDEDIRS) $(LDIRS) $(OPT) -std=c++11 -ltap -ldl $(MYLIBS) -o select_config_file-t +test_set_character_results-t: test_set_character_results-t.cpp $(TAP_LIBDIR)/libtap.a + g++ test_set_character_results-t.cpp $(INCLUDEDIRS) $(LDIRS) $(OPT) -std=c++11 $(MYLIBS) -ltap -lssl -lcrypto -ldl -lpthread -o test_set_character_results-t + galera_1_timeout_count: galera_1_timeout_count.cpp $(TAP_LIBDIR)/libtap.a g++ -DTEST_GALERA -DDEBUG galera_1_timeout_count.cpp ../tap/SQLite3_Server.cpp $(INCLUDEDIRS) $(LDIRS) $(OPT) -std=c++11 $(OBJ) $(MYLIBS) -ltap -ldl -o galera_1_timeout_count -DGITVERSION=\"$(GIT_VERSION)\" diff --git a/test/tap/tests/charset_unsigned_int-t.cpp b/test/tap/tests/charset_unsigned_int-t.cpp index 0fe2a7331..378d1d542 100644 --- a/test/tap/tests/charset_unsigned_int-t.cpp +++ b/test/tap/tests/charset_unsigned_int-t.cpp @@ -8,82 +8,7 @@ #include "tap.h" #include "command_line.h" - -int show_variable(MYSQL *mysql, const std::string& var_name, std::string& var_value) { - char query[128]; - - snprintf(query, sizeof(query),"show variables like '%s'", var_name.c_str()); - if (mysql_query(mysql, query)) { - fprintf(stderr, "Failed to execute SHOW VARIABLES LIKE : no %d, %s\n", - mysql_errno(mysql), mysql_error(mysql)); - return -1; - } - - MYSQL_RES *result; - MYSQL_ROW row; - result = mysql_store_result(mysql); - - int num_fields = mysql_num_fields(result); - - row = mysql_fetch_row(result); - var_value = row[1]; - mysql_free_result(result); -} - -int show_admin_global_variable(MYSQL *mysql, const std::string& var_name, std::string& var_value) { - char query[128]; - - snprintf(query, sizeof(query),"select variable_value from global_variables where variable_name='%s'", var_name.c_str()); - if (mysql_query(mysql, query)) { - fprintf(stderr, "Failed to execute SHOW VARIABLES LIKE : no %d, %s\n", - mysql_errno(mysql), mysql_error(mysql)); - return -1; - } - - MYSQL_RES *result; - MYSQL_ROW row; - result = mysql_store_result(mysql); - - int num_fields = mysql_num_fields(result); - - row = mysql_fetch_row(result); - var_value = row[0]; - mysql_free_result(result); -} - -int set_admin_global_variable(MYSQL *mysql, const std::string& var_name, const std::string& var_value) { - char query[128]; - - snprintf(query, sizeof(query),"update global_variables set variable_value = '%s' where variable_name='%s'", var_value.c_str(), var_name.c_str()); - if (mysql_query(mysql, query)) { - fprintf(stderr, "Failed to execute SHOW VARIABLES LIKE : no %d, %s\n", - mysql_errno(mysql), mysql_error(mysql)); - return -1; - } -} - - -int get_server_version(MYSQL *mysql, std::string& version) { - char query[128]; - - if (mysql_query(mysql, "select @@version")) { - fprintf(stderr, "Error %d, %s\n", - mysql_errno(mysql), mysql_error(mysql)); - return -1; - } - - MYSQL_RES *result; - MYSQL_ROW row; - result = mysql_store_result(mysql); - - int num_fields = mysql_num_fields(result); - - row = mysql_fetch_row(result); - version = row[0]; - mysql_free_result(result); - - return 0; -} +#include "utils.h" int main(int argc, char** argv) { CommandLine cl; diff --git a/test/tap/tests/select_config_file-t.cpp b/test/tap/tests/select_config_file-t.cpp index 6ec977a73..64aa84aed 100644 --- a/test/tap/tests/select_config_file-t.cpp +++ b/test/tap/tests/select_config_file-t.cpp @@ -11,35 +11,7 @@ #include "tap.h" #include "command_line.h" - -#define MYSQL_QUERY(mysql, query) \ - do { \ - if (mysql_query(mysql, query)) { \ - fprintf(stderr, "File %s, line %d, Error: %s\n", \ - __FILE__, __LINE__, mysql_error(mysql)); \ - return exit_status(); \ - } \ - } while(0) - - -int show_variable(MYSQL *mysql, const std::string& var_name, std::string& var_value) { - char query[128]; - - snprintf(query, sizeof(query),"show variables like '%s'", var_name.c_str()); - if (mysql_query(mysql, query)) { - fprintf(stderr, "Failed to execute SHOW VARIABLES LIKE : no %d, %s\n", - mysql_errno(mysql), mysql_error(mysql)); - return -1; - } - - MYSQL_RES *result; - MYSQL_ROW row; - result = mysql_store_result(mysql); - - row = mysql_fetch_row(result); - var_value = row[1]; - mysql_free_result(result); -} +#include "utils.h" int select_config_file(MYSQL* mysql, std::string& resultset) { if (mysql_query(mysql, "select config file")) { diff --git a/test/tap/tests/set_character_set-t.cpp b/test/tap/tests/set_character_set-t.cpp index 19d3d659a..012f60619 100644 --- a/test/tap/tests/set_character_set-t.cpp +++ b/test/tap/tests/set_character_set-t.cpp @@ -8,27 +8,7 @@ #include "tap.h" #include "command_line.h" - -int show_variable(MYSQL *mysql, const std::string& var_name, std::string& var_value) { - char query[128]; - - snprintf(query, sizeof(query),"show variables like '%s'", var_name.c_str()); - if (mysql_query(mysql, query)) { - fprintf(stderr, "Failed to execute SHOW VARIABLES LIKE : no %d, %s\n", - mysql_errno(mysql), mysql_error(mysql)); - return -1; - } - - MYSQL_RES *result; - MYSQL_ROW row; - result = mysql_store_result(mysql); - - int num_fields = mysql_num_fields(result); - - row = mysql_fetch_row(result); - var_value = row[1]; - mysql_free_result(result); -} +#include "utils.h" int main(int argc, char** argv) { CommandLine cl; diff --git a/test/tap/tests/test_set_character_results-t.cpp b/test/tap/tests/test_set_character_results-t.cpp new file mode 100644 index 000000000..94c3da25c --- /dev/null +++ b/test/tap/tests/test_set_character_results-t.cpp @@ -0,0 +1,66 @@ +#include +#include +#include +#include + +#include +#include + +#include "tap.h" +#include "command_line.h" +#include "utils.h" + +int main(int argc, char** argv) { + CommandLine cl; + + if(cl.getEnv()) + return exit_status(); + + plan(2); + diag("Testing SET CHARACTER SET"); + + 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_QUERY(mysqladmin, "delete from global_variables"); + + MYSQL* mysql = mysql_init(NULL); + if (!mysql) + return exit_status(); + + if (mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "utf8")) { + fprintf(stderr, "File %s, line %d, Error: %s\n", + __FILE__, __LINE__, mysql_error(mysql)); + return exit_status(); + } + + if (!mysql_real_connect(mysql, cl.host, cl.username, cl.password, NULL, cl.port, NULL, 0)) { + fprintf(stderr, "Failed to connect to database: Error: %s\n", + mysql_error(mysql)); + return exit_status(); + } + + MYSQL_QUERY(mysql, "set character_set_results=NULL"); + std::string var_name="character_set_results"; + std::string var_value; + show_variable(mysql, var_name, var_value); + ok(var_value.empty(), "Correct result NULL"); + + MYSQL_QUERY(mysql, "set character_set_results='latin1'"); + var_name="character_set_results"; + show_variable(mysql, var_name, var_value); + ok(!var_value.compare("latin1"), "Correct result 'latin1'"); + + mysql_close(mysql); + mysql_close(mysqladmin); + + return exit_status(); +} +