Compile core unit tests as C++
Since the core source is C++, the tests should also be C++.
This commit is contained in:
@ -1,27 +1,27 @@
|
|||||||
add_executable(test_atomic testatomic.c)
|
add_executable(test_atomic testatomic.cc)
|
||||||
add_executable(test_adminusers testadminusers.c)
|
add_executable(test_adminusers testadminusers.cc)
|
||||||
add_executable(test_buffer testbuffer.c)
|
add_executable(test_buffer testbuffer.cc)
|
||||||
add_executable(test_dcb testdcb.c)
|
add_executable(test_dcb testdcb.cc)
|
||||||
add_executable(test_filter testfilter.c)
|
add_executable(test_filter testfilter.cc)
|
||||||
add_executable(test_hash testhash.c)
|
add_executable(test_hash testhash.cc)
|
||||||
add_executable(test_hint testhint.c)
|
add_executable(test_hint testhint.cc)
|
||||||
add_executable(test_log testlog.c)
|
add_executable(test_log testlog.cc)
|
||||||
add_executable(test_logorder testlogorder.c)
|
add_executable(test_logorder testlogorder.cc)
|
||||||
add_executable(test_logthrottling testlogthrottling.cc)
|
add_executable(test_logthrottling testlogthrottling.cc)
|
||||||
add_executable(test_modutil testmodutil.c)
|
add_executable(test_modutil testmodutil.cc)
|
||||||
add_executable(test_poll testpoll.c)
|
add_executable(test_poll testpoll.cc)
|
||||||
add_executable(test_queuemanager testqueuemanager.c)
|
add_executable(test_queuemanager testqueuemanager.cc)
|
||||||
add_executable(test_semaphore testsemaphore.cc)
|
add_executable(test_semaphore testsemaphore.cc)
|
||||||
add_executable(test_server testserver.c)
|
add_executable(test_server testserver.cc)
|
||||||
add_executable(test_service testservice.c)
|
add_executable(test_service testservice.cc)
|
||||||
add_executable(test_spinlock testspinlock.c)
|
add_executable(test_spinlock testspinlock.cc)
|
||||||
add_executable(test_trxcompare testtrxcompare.cc ../../../query_classifier/test/testreader.cc)
|
add_executable(test_trxcompare testtrxcompare.cc ../../../query_classifier/test/testreader.cc)
|
||||||
add_executable(test_trxtracking testtrxtracking.cc)
|
add_executable(test_trxtracking testtrxtracking.cc)
|
||||||
add_executable(test_users testusers.c)
|
add_executable(test_users testusers.cc)
|
||||||
add_executable(testfeedback testfeedback.c)
|
add_executable(testfeedback testfeedback.cc)
|
||||||
add_executable(testmaxscalepcre2 testmaxscalepcre2.c)
|
add_executable(testmaxscalepcre2 testmaxscalepcre2.cc)
|
||||||
add_executable(testmodulecmd testmodulecmd.c)
|
add_executable(testmodulecmd testmodulecmd.cc)
|
||||||
add_executable(testconfig testconfig.c)
|
add_executable(testconfig testconfig.cc)
|
||||||
add_executable(trxboundaryparser_profile trxboundaryparser_profile.cc)
|
add_executable(trxboundaryparser_profile trxboundaryparser_profile.cc)
|
||||||
target_link_libraries(test_atomic maxscale-common)
|
target_link_libraries(test_atomic maxscale-common)
|
||||||
target_link_libraries(test_adminusers maxscale-common)
|
target_link_libraries(test_adminusers maxscale-common)
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
*/
|
*/
|
||||||
uint8_t* generate_data(size_t count)
|
uint8_t* generate_data(size_t count)
|
||||||
{
|
{
|
||||||
uint8_t* data = MXS_MALLOC(count);
|
uint8_t* data = (uint8_t*)MXS_MALLOC(count);
|
||||||
MXS_ABORT_IF_NULL(data);
|
MXS_ABORT_IF_NULL(data);
|
||||||
|
|
||||||
srand(0);
|
srand(0);
|
||||||
@ -79,7 +79,7 @@ GWBUF* create_test_buffer()
|
|||||||
uint8_t* data = generate_data(total);
|
uint8_t* data = generate_data(total);
|
||||||
total = 0;
|
total = 0;
|
||||||
|
|
||||||
for (int i = 0; i < sizeof(buffers) / sizeof(size_t); i++)
|
for (size_t i = 0; i < sizeof(buffers) / sizeof(size_t); i++)
|
||||||
{
|
{
|
||||||
head = gwbuf_append(head, gwbuf_alloc_and_load(buffers[i], data + total));
|
head = gwbuf_append(head, gwbuf_alloc_and_load(buffers[i], data + total));
|
||||||
total += buffers[i];
|
total += buffers[i];
|
||||||
@ -104,7 +104,7 @@ int get_length_at(int n)
|
|||||||
|
|
||||||
void split_buffer(int n, int offset)
|
void split_buffer(int n, int offset)
|
||||||
{
|
{
|
||||||
int cutoff = get_length_at(n) + offset;
|
size_t cutoff = get_length_at(n) + offset;
|
||||||
GWBUF* buffer = create_test_buffer();
|
GWBUF* buffer = create_test_buffer();
|
||||||
int len = gwbuf_length(buffer);
|
int len = gwbuf_length(buffer);
|
||||||
GWBUF* newbuf = gwbuf_split(&buffer, cutoff);
|
GWBUF* newbuf = gwbuf_split(&buffer, cutoff);
|
||||||
@ -119,7 +119,7 @@ void split_buffer(int n, int offset)
|
|||||||
|
|
||||||
void consume_buffer(int n, int offset)
|
void consume_buffer(int n, int offset)
|
||||||
{
|
{
|
||||||
int cutoff = get_length_at(n) + offset;
|
size_t cutoff = get_length_at(n) + offset;
|
||||||
GWBUF* buffer = create_test_buffer();
|
GWBUF* buffer = create_test_buffer();
|
||||||
int len = gwbuf_length(buffer);
|
int len = gwbuf_length(buffer);
|
||||||
buffer = gwbuf_consume(buffer, cutoff);
|
buffer = gwbuf_consume(buffer, cutoff);
|
||||||
@ -131,7 +131,7 @@ void consume_buffer(int n, int offset)
|
|||||||
|
|
||||||
void copy_buffer(int n, int offset)
|
void copy_buffer(int n, int offset)
|
||||||
{
|
{
|
||||||
int cutoff = get_length_at(n) + offset;
|
size_t cutoff = get_length_at(n) + offset;
|
||||||
uint8_t* data = generate_data(cutoff);
|
uint8_t* data = generate_data(cutoff);
|
||||||
GWBUF* buffer = create_test_buffer();
|
GWBUF* buffer = create_test_buffer();
|
||||||
int len = gwbuf_length(buffer);
|
int len = gwbuf_length(buffer);
|
||||||
@ -450,30 +450,30 @@ test1()
|
|||||||
{
|
{
|
||||||
GWBUF *buffer, *extra, *clone, *partclone;
|
GWBUF *buffer, *extra, *clone, *partclone;
|
||||||
HINT *hint;
|
HINT *hint;
|
||||||
int size = 100;
|
size_t size = 100;
|
||||||
int bite1 = 35;
|
size_t bite1 = 35;
|
||||||
int bite2 = 60;
|
size_t bite2 = 60;
|
||||||
int bite3 = 10;
|
size_t bite3 = 10;
|
||||||
int buflen;
|
size_t buflen;
|
||||||
|
|
||||||
/* Single buffer tests */
|
/* Single buffer tests */
|
||||||
ss_dfprintf(stderr,
|
ss_dfprintf(stderr,
|
||||||
"testbuffer : creating buffer with data size %d bytes",
|
"testbuffer : creating buffer with data size %lu bytes",
|
||||||
size);
|
size);
|
||||||
buffer = gwbuf_alloc(size);
|
buffer = gwbuf_alloc(size);
|
||||||
ss_dfprintf(stderr, "\t..done\nAllocated buffer of size %d.", size);
|
ss_dfprintf(stderr, "\t..done\nAllocated buffer of size %lu.", size);
|
||||||
buflen = GWBUF_LENGTH(buffer);
|
buflen = GWBUF_LENGTH(buffer);
|
||||||
ss_dfprintf(stderr, "\nBuffer length is now %d", buflen);
|
ss_dfprintf(stderr, "\nBuffer length is now %lu", buflen);
|
||||||
ss_info_dassert(size == buflen, "Incorrect buffer size");
|
ss_info_dassert(size == buflen, "Incorrect buffer size");
|
||||||
ss_info_dassert(0 == GWBUF_EMPTY(buffer), "Buffer should not be empty");
|
ss_info_dassert(0 == GWBUF_EMPTY(buffer), "Buffer should not be empty");
|
||||||
ss_info_dassert(GWBUF_IS_TYPE_UNDEFINED(buffer), "Buffer type should be undefined");
|
ss_info_dassert(GWBUF_IS_TYPE_UNDEFINED(buffer), "Buffer type should be undefined");
|
||||||
ss_dfprintf(stderr, "\t..done\nSet a hint for the buffer");
|
ss_dfprintf(stderr, "\t..done\nSet a hint for the buffer");
|
||||||
hint = hint_create_parameter(NULL, "name", "value");
|
hint = hint_create_parameter(NULL, (char*)"name", (char*)"value");
|
||||||
gwbuf_add_hint(buffer, hint);
|
gwbuf_add_hint(buffer, hint);
|
||||||
ss_info_dassert(hint == buffer->hint, "Buffer should point to first and only hint");
|
ss_info_dassert(hint == buffer->hint, "Buffer should point to first and only hint");
|
||||||
ss_dfprintf(stderr, "\t..done\nSet a property for the buffer");
|
ss_dfprintf(stderr, "\t..done\nSet a property for the buffer");
|
||||||
gwbuf_add_property(buffer, "name", "value");
|
gwbuf_add_property(buffer, (char*)"name", (char*)"value");
|
||||||
ss_info_dassert(0 == strcmp("value", gwbuf_get_property(buffer, "name")), "Should now have correct property");
|
ss_info_dassert(0 == strcmp("value", gwbuf_get_property(buffer, (char*)"name")), "Should now have correct property");
|
||||||
strcpy((char*)GWBUF_DATA(buffer), "The quick brown fox jumps over the lazy dog");
|
strcpy((char*)GWBUF_DATA(buffer), "The quick brown fox jumps over the lazy dog");
|
||||||
ss_dfprintf(stderr, "\t..done\nLoad some data into the buffer");
|
ss_dfprintf(stderr, "\t..done\nLoad some data into the buffer");
|
||||||
ss_info_dassert('q' == GWBUF_DATA_CHAR(buffer, 4), "Fourth character of buffer must be 'q'");
|
ss_info_dassert('q' == GWBUF_DATA_CHAR(buffer, 4), "Fourth character of buffer must be 'q'");
|
||||||
@ -485,7 +485,7 @@ test1()
|
|||||||
clone = gwbuf_clone(buffer);
|
clone = gwbuf_clone(buffer);
|
||||||
ss_dfprintf(stderr, "\t..done\nCloned buffer");
|
ss_dfprintf(stderr, "\t..done\nCloned buffer");
|
||||||
buflen = GWBUF_LENGTH(clone);
|
buflen = GWBUF_LENGTH(clone);
|
||||||
ss_dfprintf(stderr, "\nCloned buffer length is now %d", buflen);
|
ss_dfprintf(stderr, "\nCloned buffer length is now %lu", buflen);
|
||||||
ss_info_dassert(size == buflen, "Incorrect buffer size");
|
ss_info_dassert(size == buflen, "Incorrect buffer size");
|
||||||
ss_info_dassert(0 == GWBUF_EMPTY(clone), "Cloned buffer should not be empty");
|
ss_info_dassert(0 == GWBUF_EMPTY(clone), "Cloned buffer should not be empty");
|
||||||
ss_dfprintf(stderr, "\t..done\n");
|
ss_dfprintf(stderr, "\t..done\n");
|
||||||
@ -495,45 +495,45 @@ test1()
|
|||||||
buffer = gwbuf_consume(buffer, bite1);
|
buffer = gwbuf_consume(buffer, bite1);
|
||||||
ss_info_dassert(NULL != buffer, "Buffer should not be null");
|
ss_info_dassert(NULL != buffer, "Buffer should not be null");
|
||||||
buflen = GWBUF_LENGTH(buffer);
|
buflen = GWBUF_LENGTH(buffer);
|
||||||
ss_dfprintf(stderr, "Consumed %d bytes, now have %d, should have %d", bite1, buflen, size - bite1);
|
ss_dfprintf(stderr, "Consumed %lu bytes, now have %lu, should have %lu", bite1, buflen, size - bite1);
|
||||||
ss_info_dassert((size - bite1) == buflen, "Incorrect buffer size");
|
ss_info_dassert((size - bite1) == buflen, "Incorrect buffer size");
|
||||||
ss_info_dassert(0 == GWBUF_EMPTY(buffer), "Buffer should not be empty");
|
ss_info_dassert(0 == GWBUF_EMPTY(buffer), "Buffer should not be empty");
|
||||||
ss_dfprintf(stderr, "\t..done\n");
|
ss_dfprintf(stderr, "\t..done\n");
|
||||||
buffer = gwbuf_consume(buffer, bite2);
|
buffer = gwbuf_consume(buffer, bite2);
|
||||||
ss_info_dassert(NULL != buffer, "Buffer should not be null");
|
ss_info_dassert(NULL != buffer, "Buffer should not be null");
|
||||||
buflen = GWBUF_LENGTH(buffer);
|
buflen = GWBUF_LENGTH(buffer);
|
||||||
ss_dfprintf(stderr, "Consumed %d bytes, now have %d, should have %d", bite2, buflen, size - bite1 - bite2);
|
ss_dfprintf(stderr, "Consumed %lu bytes, now have %lu, should have %lu", bite2, buflen, size - bite1 - bite2);
|
||||||
ss_info_dassert((size - bite1 - bite2) == buflen, "Incorrect buffer size");
|
ss_info_dassert((size - bite1 - bite2) == buflen, "Incorrect buffer size");
|
||||||
ss_info_dassert(0 == GWBUF_EMPTY(buffer), "Buffer should not be empty");
|
ss_info_dassert(0 == GWBUF_EMPTY(buffer), "Buffer should not be empty");
|
||||||
ss_dfprintf(stderr, "\t..done\n");
|
ss_dfprintf(stderr, "\t..done\n");
|
||||||
buffer = gwbuf_consume(buffer, bite3);
|
buffer = gwbuf_consume(buffer, bite3);
|
||||||
ss_dfprintf(stderr, "Consumed %d bytes, should have null buffer", bite3);
|
ss_dfprintf(stderr, "Consumed %lu bytes, should have null buffer", bite3);
|
||||||
ss_info_dassert(NULL == buffer, "Buffer should be null");
|
ss_info_dassert(NULL == buffer, "Buffer should be null");
|
||||||
|
|
||||||
/* Buffer list tests */
|
/* Buffer list tests */
|
||||||
size = 100000;
|
size = 100000;
|
||||||
buffer = gwbuf_alloc(size);
|
buffer = gwbuf_alloc(size);
|
||||||
ss_dfprintf(stderr, "\t..done\nAllocated buffer of size %d.", size);
|
ss_dfprintf(stderr, "\t..done\nAllocated buffer of size %lu.", size);
|
||||||
buflen = GWBUF_LENGTH(buffer);
|
buflen = GWBUF_LENGTH(buffer);
|
||||||
ss_dfprintf(stderr, "\nBuffer length is now %d", buflen);
|
ss_dfprintf(stderr, "\nBuffer length is now %lu", buflen);
|
||||||
ss_info_dassert(size == buflen, "Incorrect buffer size");
|
ss_info_dassert(size == buflen, "Incorrect buffer size");
|
||||||
ss_info_dassert(0 == GWBUF_EMPTY(buffer), "Buffer should not be empty");
|
ss_info_dassert(0 == GWBUF_EMPTY(buffer), "Buffer should not be empty");
|
||||||
ss_info_dassert(GWBUF_IS_TYPE_UNDEFINED(buffer), "Buffer type should be undefined");
|
ss_info_dassert(GWBUF_IS_TYPE_UNDEFINED(buffer), "Buffer type should be undefined");
|
||||||
extra = gwbuf_alloc(size);
|
extra = gwbuf_alloc(size);
|
||||||
buflen = GWBUF_LENGTH(buffer);
|
buflen = GWBUF_LENGTH(buffer);
|
||||||
ss_dfprintf(stderr, "\t..done\nAllocated extra buffer of size %d.", size);
|
ss_dfprintf(stderr, "\t..done\nAllocated extra buffer of size %lu.", size);
|
||||||
ss_info_dassert(size == buflen, "Incorrect buffer size");
|
ss_info_dassert(size == buflen, "Incorrect buffer size");
|
||||||
buffer = gwbuf_append(buffer, extra);
|
buffer = gwbuf_append(buffer, extra);
|
||||||
buflen = gwbuf_length(buffer);
|
buflen = gwbuf_length(buffer);
|
||||||
ss_dfprintf(stderr, "\t..done\nAppended extra buffer to original buffer to create list of size %d", buflen);
|
ss_dfprintf(stderr, "\t..done\nAppended extra buffer to original buffer to create list of size %lu", buflen);
|
||||||
ss_info_dassert((size * 2) == gwbuf_length(buffer), "Incorrect size for set of buffers");
|
ss_info_dassert((size * 2) == gwbuf_length(buffer), "Incorrect size for set of buffers");
|
||||||
buffer = gwbuf_rtrim(buffer, 60000);
|
buffer = gwbuf_rtrim(buffer, 60000);
|
||||||
buflen = GWBUF_LENGTH(buffer);
|
buflen = GWBUF_LENGTH(buffer);
|
||||||
ss_dfprintf(stderr, "\t..done\nTrimmed 60 bytes from buffer, now size is %d.", buflen);
|
ss_dfprintf(stderr, "\t..done\nTrimmed 60 bytes from buffer, now size is %lu.", buflen);
|
||||||
ss_info_dassert((size - 60000) == buflen, "Incorrect buffer size");
|
ss_info_dassert((size - 60000) == buflen, "Incorrect buffer size");
|
||||||
buffer = gwbuf_rtrim(buffer, 60000);
|
buffer = gwbuf_rtrim(buffer, 60000);
|
||||||
buflen = GWBUF_LENGTH(buffer);
|
buflen = GWBUF_LENGTH(buffer);
|
||||||
ss_dfprintf(stderr, "\t..done\nTrimmed another 60 bytes from buffer, now size is %d.", buflen);
|
ss_dfprintf(stderr, "\t..done\nTrimmed another 60 bytes from buffer, now size is %lu.", buflen);
|
||||||
ss_info_dassert(100000 == buflen, "Incorrect buffer size");
|
ss_info_dassert(100000 == buflen, "Incorrect buffer size");
|
||||||
ss_info_dassert(buffer == extra, "The buffer pointer should now point to the extra buffer");
|
ss_info_dassert(buffer == extra, "The buffer pointer should now point to the extra buffer");
|
||||||
ss_dfprintf(stderr, "\t..done\n");
|
ss_dfprintf(stderr, "\t..done\n");
|
@ -43,7 +43,7 @@ int test_validity()
|
|||||||
{MXS_END_MODULE_PARAMS}
|
{MXS_END_MODULE_PARAMS}
|
||||||
};
|
};
|
||||||
|
|
||||||
CONFIG_CONTEXT ctx = {.object = ""};
|
CONFIG_CONTEXT ctx = {.object = (char*)""};
|
||||||
|
|
||||||
/** Int parameter */
|
/** Int parameter */
|
||||||
TEST(config_param_is_valid(params, "p1", "1", &ctx));
|
TEST(config_param_is_valid(params, "p1", "1", &ctx));
|
||||||
@ -90,7 +90,7 @@ int test_validity()
|
|||||||
TEST(!config_param_is_valid(params, "p6", "This is not a valid path", &ctx));
|
TEST(!config_param_is_valid(params, "p6", "This is not a valid path", &ctx));
|
||||||
|
|
||||||
/** Service parameter */
|
/** Service parameter */
|
||||||
CONFIG_CONTEXT svc = {.object = "test-service"};
|
CONFIG_CONTEXT svc = {.object = (char*)"test-service"};
|
||||||
ctx.next = &svc;
|
ctx.next = &svc;
|
||||||
config_add_param(&svc, "type", "service");
|
config_add_param(&svc, "type", "service");
|
||||||
TEST(config_param_is_valid(params, "p7", "test-service", &ctx));
|
TEST(config_param_is_valid(params, "p7", "test-service", &ctx));
|
||||||
@ -135,9 +135,12 @@ int test_add_parameter()
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
CONFIG_CONTEXT svc1 = {.object = "my-service"};
|
CONFIG_CONTEXT svc1, svc2, ctx;
|
||||||
CONFIG_CONTEXT svc2 = {.object = "some-service", .next = &svc1};
|
svc1.object = (char*)"my-service";
|
||||||
CONFIG_CONTEXT ctx = {.object = "", .next = &svc2};
|
svc2.object = (char*)"some-service";
|
||||||
|
svc2.next = &svc1;
|
||||||
|
ctx.object = (char*)"";
|
||||||
|
ctx.next = &svc2;
|
||||||
config_add_param(&svc1, "type", "service");
|
config_add_param(&svc1, "type", "service");
|
||||||
config_add_param(&svc2, "type", "service");
|
config_add_param(&svc2, "type", "service");
|
||||||
|
|
||||||
@ -190,7 +193,7 @@ int test_required_parameters()
|
|||||||
{MXS_END_MODULE_PARAMS}
|
{MXS_END_MODULE_PARAMS}
|
||||||
};
|
};
|
||||||
|
|
||||||
CONFIG_CONTEXT ctx = {.object = ""};
|
CONFIG_CONTEXT ctx = {.object = (char*)""};
|
||||||
|
|
||||||
TEST(missing_required_parameters(params, ctx.parameters));
|
TEST(missing_required_parameters(params, ctx.parameters));
|
||||||
config_add_defaults(&ctx, params);
|
config_add_defaults(&ctx, params);
|
@ -45,9 +45,11 @@
|
|||||||
#include <regex.h>
|
#include <regex.h>
|
||||||
#include <maxscale/maxscale_test.h>
|
#include <maxscale/maxscale_test.h>
|
||||||
|
|
||||||
|
#include "../maxscale/config.h"
|
||||||
|
|
||||||
#include "../load_utils.cc"
|
#include "../load_utils.cc"
|
||||||
|
|
||||||
static char* server_options[] =
|
static const char* server_options[] =
|
||||||
{
|
{
|
||||||
"MariaDB Corporation MaxScale",
|
"MariaDB Corporation MaxScale",
|
||||||
"--no-defaults",
|
"--no-defaults",
|
||||||
@ -60,7 +62,7 @@ static char* server_options[] =
|
|||||||
|
|
||||||
const int num_elements = (sizeof(server_options) / sizeof(char *)) - 1;
|
const int num_elements = (sizeof(server_options) / sizeof(char *)) - 1;
|
||||||
|
|
||||||
static char* server_groups[] =
|
static const char* server_groups[] =
|
||||||
{
|
{
|
||||||
"embedded",
|
"embedded",
|
||||||
"server",
|
"server",
|
||||||
@ -71,10 +73,6 @@ static char* server_groups[] =
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
int config_load(char *);
|
|
||||||
void config_enable_feedback_task(void);
|
|
||||||
int do_http_post(GWBUF *buffer, void *cfg);
|
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
FEEDBACK_CONF* fc;
|
FEEDBACK_CONF* fc;
|
||||||
@ -85,14 +83,14 @@ int main(int argc, char** argv)
|
|||||||
|
|
||||||
hkinit();
|
hkinit();
|
||||||
|
|
||||||
cnf = MXS_MALLOC(sizeof(char) * (strlen(TEST_DIR) + strlen("/maxscale.cnf") + 1));
|
cnf = (char*)MXS_MALLOC(sizeof(char) * (strlen(TEST_DIR) + strlen("/maxscale.cnf") + 1));
|
||||||
MXS_ABORT_IF_NULL(cnf);
|
MXS_ABORT_IF_NULL(cnf);
|
||||||
sprintf(cnf, "%s/maxscale.cnf", TEST_DIR);
|
sprintf(cnf, "%s/maxscale.cnf", TEST_DIR);
|
||||||
|
|
||||||
printf("Config: %s\n", cnf);
|
printf("Config: %s\n", cnf);
|
||||||
|
|
||||||
|
|
||||||
if (mysql_library_init(num_elements, server_options, server_groups))
|
if (mysql_library_init(num_elements, (char**)server_options, (char**)server_groups))
|
||||||
{
|
{
|
||||||
FAILTEST("Failed to initialize embedded library.");
|
FAILTEST("Failed to initialize embedded library.");
|
||||||
}
|
}
|
@ -54,7 +54,7 @@ test1()
|
|||||||
MXS_FREE(name);
|
MXS_FREE(name);
|
||||||
mxs_log_flush_sync();
|
mxs_log_flush_sync();
|
||||||
ss_info_dassert(NULL != hint, "New hint list should not be null");
|
ss_info_dassert(NULL != hint, "New hint list should not be null");
|
||||||
ss_info_dassert(0 == strcmp("value", hint->value), "Hint value should be correct");
|
ss_info_dassert(0 == strcmp("value", (char*)hint->value), "Hint value should be correct");
|
||||||
ss_info_dassert(0 != hint_exists(&hint, HINT_PARAMETER), "Hint of parameter type should exist");
|
ss_info_dassert(0 != hint_exists(&hint, HINT_PARAMETER), "Hint of parameter type should exist");
|
||||||
ss_dfprintf(stderr, "\t..done\nFree hints.");
|
ss_dfprintf(stderr, "\t..done\nFree hints.");
|
||||||
if (NULL != hint)
|
if (NULL != hint)
|
@ -35,7 +35,7 @@ static void skygw_log_disable(int priority)
|
|||||||
int main(int argc, char* argv[])
|
int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
char* logstr;
|
const char* logstr;
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
bool succp;
|
bool succp;
|
@ -82,7 +82,7 @@ static int test2()
|
|||||||
pcre2_code *re2 = pcre2_compile((PCRE2_SPTR) pattern2, PCRE2_ZERO_TERMINATED,
|
pcre2_code *re2 = pcre2_compile((PCRE2_SPTR) pattern2, PCRE2_ZERO_TERMINATED,
|
||||||
0, &err, &erroff, NULL);
|
0, &err, &erroff, NULL);
|
||||||
size_t size = 1000;
|
size_t size = 1000;
|
||||||
char* dest = MXS_MALLOC(size);
|
char* dest = (char*)MXS_MALLOC(size);
|
||||||
MXS_ABORT_IF_NULL(dest);
|
MXS_ABORT_IF_NULL(dest);
|
||||||
mxs_pcre2_result_t result = mxs_pcre2_substitute(re, subject, good_replace, &dest, &size);
|
mxs_pcre2_result_t result = mxs_pcre2_substitute(re, subject, good_replace, &dest, &size);
|
||||||
|
|
||||||
@ -90,12 +90,12 @@ static int test2()
|
|||||||
test_assert(strcmp(dest, expected) == 0, "Replaced text should match expected text");
|
test_assert(strcmp(dest, expected) == 0, "Replaced text should match expected text");
|
||||||
|
|
||||||
size = 1000;
|
size = 1000;
|
||||||
dest = MXS_REALLOC(dest, size);
|
dest = (char*)MXS_REALLOC(dest, size);
|
||||||
result = mxs_pcre2_substitute(re2, subject, good_replace, &dest, &size);
|
result = mxs_pcre2_substitute(re2, subject, good_replace, &dest, &size);
|
||||||
test_assert(result == MXS_PCRE2_NOMATCH, "Non-matching substitution should not substitute");
|
test_assert(result == MXS_PCRE2_NOMATCH, "Non-matching substitution should not substitute");
|
||||||
|
|
||||||
size = 1000;
|
size = 1000;
|
||||||
dest = MXS_REALLOC(dest, size);
|
dest = (char*)MXS_REALLOC(dest, size);
|
||||||
result = mxs_pcre2_substitute(re, subject, bad_replace, &dest, &size);
|
result = mxs_pcre2_substitute(re, subject, bad_replace, &dest, &size);
|
||||||
test_assert(result == MXS_PCRE2_ERROR, "Bad substitution should return an error");
|
test_assert(result == MXS_PCRE2_ERROR, "Bad substitution should return an error");
|
||||||
|
|
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#include "../maxscale/monitor.h"
|
#include "../maxscale/monitor.h"
|
||||||
|
|
||||||
#define TEST(a, b) do{if (!(a)){printf("%s:%d "b"\n", __FILE__, __LINE__);return 1;}}while(false)
|
#define TEST(a, b) do{if (!(a)){printf("%s:%d " b "\n", __FILE__, __LINE__);return 1;}}while(false)
|
||||||
|
|
||||||
static bool ok = false;
|
static bool ok = false;
|
||||||
|
|
||||||
@ -154,8 +154,8 @@ int test_optional_arguments()
|
|||||||
const void *params3[] = {"Hello", NULL};
|
const void *params3[] = {"Hello", NULL};
|
||||||
const void *params4[] = {NULL, NULL};
|
const void *params4[] = {NULL, NULL};
|
||||||
|
|
||||||
const void *ns = "test_optional_arguments";
|
const char *ns = "test_optional_arguments";
|
||||||
const void *id = "test_optional_arguments";
|
const char *id = "test_optional_arguments";
|
||||||
modulecmd_arg_type_t args1[] =
|
modulecmd_arg_type_t args1[] =
|
||||||
{
|
{
|
||||||
{MODULECMD_ARG_STRING | MODULECMD_ARG_OPTIONAL, ""},
|
{MODULECMD_ARG_STRING | MODULECMD_ARG_OPTIONAL, ""},
|
||||||
@ -375,7 +375,7 @@ int test_domain_matching()
|
|||||||
/** Create a monitor */
|
/** Create a monitor */
|
||||||
char *libdir = MXS_STRDUP_A("../../modules/monitor/mysqlmon/");
|
char *libdir = MXS_STRDUP_A("../../modules/monitor/mysqlmon/");
|
||||||
set_libdir(libdir);
|
set_libdir(libdir);
|
||||||
monitor_alloc((char*)ns, "mysqlmon");
|
monitor_alloc((char*)ns, (char*)"mysqlmon");
|
||||||
|
|
||||||
const void* params[] = {ns};
|
const void* params[] = {ns};
|
||||||
|
|
@ -62,7 +62,7 @@ test1()
|
|||||||
ss_dfprintf(stderr, "\t..done\nExtract SQL from buffer different way?");
|
ss_dfprintf(stderr, "\t..done\nExtract SQL from buffer different way?");
|
||||||
ss_info_dassert(0 == modutil_MySQL_Query(buffer, &sql, &length, &residual), "Default buffer should fail");
|
ss_info_dassert(0 == modutil_MySQL_Query(buffer, &sql, &length, &residual), "Default buffer should fail");
|
||||||
ss_dfprintf(stderr, "\t..done\nReplace SQL in buffer");
|
ss_dfprintf(stderr, "\t..done\nReplace SQL in buffer");
|
||||||
ss_info_dassert(0 == modutil_replace_SQL(buffer, "select * from some_table;"), "Default buffer should fail");
|
ss_info_dassert(0 == modutil_replace_SQL(buffer, (char*)"select * from some_table;"), "Default buffer should fail");
|
||||||
ss_dfprintf(stderr, "\t..done\nTidy up.");
|
ss_dfprintf(stderr, "\t..done\nTidy up.");
|
||||||
gwbuf_free(buffer);
|
gwbuf_free(buffer);
|
||||||
ss_dfprintf(stderr, "\t..done\n");
|
ss_dfprintf(stderr, "\t..done\n");
|
||||||
@ -89,7 +89,7 @@ test2()
|
|||||||
*((unsigned char*)buffer->start + 2) = 0;
|
*((unsigned char*)buffer->start + 2) = 0;
|
||||||
*((unsigned char*)buffer->start + 3) = 1;
|
*((unsigned char*)buffer->start + 3) = 1;
|
||||||
*((unsigned char*)buffer->start + 4) = 0x03;
|
*((unsigned char*)buffer->start + 4) = 0x03;
|
||||||
memcpy(buffer->start + 5, query, strlen(query));
|
memcpy((uint8_t*)buffer->start + 5, query, strlen(query));
|
||||||
char* result = modutil_get_SQL(buffer);
|
char* result = modutil_get_SQL(buffer);
|
||||||
ss_dassert(strcmp(result, query) == 0);
|
ss_dassert(strcmp(result, query) == 0);
|
||||||
gwbuf_free(buffer);
|
gwbuf_free(buffer);
|
||||||
@ -109,7 +109,7 @@ static char ok[] =
|
|||||||
* CREATE OR REPLACE TABLE test.t1 (id int);
|
* CREATE OR REPLACE TABLE test.t1 (id int);
|
||||||
* INSERT INTO test.t1 VALUES (3000);
|
* INSERT INTO test.t1 VALUES (3000);
|
||||||
* SELECT * FROM test.t1; */
|
* SELECT * FROM test.t1; */
|
||||||
static const char resultset[] =
|
static const uint8_t resultset[] =
|
||||||
{
|
{
|
||||||
/* Packet 1 */
|
/* Packet 1 */
|
||||||
0x01, 0x00, 0x00, 0x01, 0x01,
|
0x01, 0x00, 0x00, 0x01, 0x01,
|
||||||
@ -141,7 +141,7 @@ static const char resultset[] =
|
|||||||
struct packet
|
struct packet
|
||||||
{
|
{
|
||||||
int index;
|
int index;
|
||||||
int length;
|
unsigned int length;
|
||||||
} packets[] =
|
} packets[] =
|
||||||
{
|
{
|
||||||
{ PACKET_1_IDX, PACKET_1_LEN },
|
{ PACKET_1_IDX, PACKET_1_LEN },
|
||||||
@ -259,8 +259,8 @@ void test_multiple_sql_packets1()
|
|||||||
ss_info_dassert(gwbuf_length(complete) == sizeof(resultset),
|
ss_info_dassert(gwbuf_length(complete) == sizeof(resultset),
|
||||||
"Complete should be sizeof(resulset) bytes long");
|
"Complete should be sizeof(resulset) bytes long");
|
||||||
|
|
||||||
int headlen = gwbuf_length(head);
|
unsigned int headlen = gwbuf_length(head);
|
||||||
int completelen = complete ? gwbuf_length(complete) : 0;
|
unsigned int completelen = complete ? gwbuf_length(complete) : 0;
|
||||||
uint8_t databuf[sizeof(resultset)];
|
uint8_t databuf[sizeof(resultset)];
|
||||||
ss_info_dassert(gwbuf_copy_data(complete, 0, completelen, databuf) == completelen,
|
ss_info_dassert(gwbuf_copy_data(complete, 0, completelen, databuf) == completelen,
|
||||||
"Expected data should be readable");
|
"Expected data should be readable");
|
||||||
@ -344,7 +344,7 @@ void test_multiple_sql_packets2()
|
|||||||
|
|
||||||
buffer = gwbuf_alloc_and_load(sizeof(resultset), resultset);
|
buffer = gwbuf_alloc_and_load(sizeof(resultset), resultset);
|
||||||
// Empty buffer packet by packet.
|
// Empty buffer packet by packet.
|
||||||
for (int i = 0; i < N_PACKETS; i++)
|
for (unsigned int i = 0; i < N_PACKETS; i++)
|
||||||
{
|
{
|
||||||
GWBUF* next = modutil_get_next_MySQL_packet(&buffer);
|
GWBUF* next = modutil_get_next_MySQL_packet(&buffer);
|
||||||
ss_info_dassert(next, "Next packet buffer should not be NULL");
|
ss_info_dassert(next, "Next packet buffer should not be NULL");
|
||||||
@ -439,7 +439,7 @@ void test_multiple_sql_packets2()
|
|||||||
}
|
}
|
||||||
while (total < sizeof(resultset));
|
while (total < sizeof(resultset));
|
||||||
|
|
||||||
for (int i = 0; i < N_PACKETS; i++)
|
for (unsigned int i = 0; i < N_PACKETS; i++)
|
||||||
{
|
{
|
||||||
GWBUF* next = modutil_get_next_MySQL_packet(&buffer);
|
GWBUF* next = modutil_get_next_MySQL_packet(&buffer);
|
||||||
ss_info_dassert(next, "Next packet buffer should not be NULL");
|
ss_info_dassert(next, "Next packet buffer should not be NULL");
|
||||||
@ -580,7 +580,7 @@ void test_large_packets()
|
|||||||
for (int i = 2; i < 8; i++)
|
for (int i = 2; i < 8; i++)
|
||||||
{
|
{
|
||||||
GWBUF* buffer = gwbuf_append(create_buffer(0x00ffffff), create_buffer(i));
|
GWBUF* buffer = gwbuf_append(create_buffer(0x00ffffff), create_buffer(i));
|
||||||
ss_dassert(gwbuf_length(buffer) == 0xffffff + i + 8);
|
ss_dassert(gwbuf_length(buffer) == 0xffffffUL + i + 8);
|
||||||
GWBUF_RTRIM(buffer->next, 1)
|
GWBUF_RTRIM(buffer->next, 1)
|
||||||
GWBUF* complete = modutil_get_complete_packets(&buffer);
|
GWBUF* complete = modutil_get_complete_packets(&buffer);
|
||||||
ss_info_dassert(buffer, "Incomplete buffer is not NULL");
|
ss_info_dassert(buffer, "Incomplete buffer is not NULL");
|
||||||
@ -591,9 +591,9 @@ void test_large_packets()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char* bypass_whitespace(char* sql)
|
char* bypass_whitespace(const char* sql)
|
||||||
{
|
{
|
||||||
return modutil_MySQL_bypass_whitespace(sql, strlen(sql));
|
return modutil_MySQL_bypass_whitespace((char*)sql, strlen(sql));
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_bypass_whitespace()
|
void test_bypass_whitespace()
|
@ -93,7 +93,7 @@ test1()
|
|||||||
ss_dfprintf(stderr, "Filled %d, emptied %d, expired %d\n", filled, emptied, expired);
|
ss_dfprintf(stderr, "Filled %d, emptied %d, expired %d\n", filled, emptied, expired);
|
||||||
if (random_jkiss() % 2)
|
if (random_jkiss() % 2)
|
||||||
{
|
{
|
||||||
int *entrynumber = MXS_MALLOC(sizeof(int));
|
int *entrynumber = (int*)MXS_MALLOC(sizeof(int));
|
||||||
*entrynumber = input_counter;
|
*entrynumber = input_counter;
|
||||||
if (mxs_enqueue(queue, entrynumber))
|
if (mxs_enqueue(queue, entrynumber))
|
||||||
{
|
{
|
@ -64,10 +64,10 @@ test1()
|
|||||||
//ss_info_dassert(0 != service_isvalid(service), "Service must be valid after creation");
|
//ss_info_dassert(0 != service_isvalid(service), "Service must be valid after creation");
|
||||||
|
|
||||||
ss_dfprintf(stderr, "\t..done\nTest Parameter for Server.");
|
ss_dfprintf(stderr, "\t..done\nTest Parameter for Server.");
|
||||||
ss_info_dassert(NULL == server_get_parameter(server, "name"), "Parameter should be null when not set");
|
ss_info_dassert(NULL == server_get_parameter(server, (char*)"name"), "Parameter should be null when not set");
|
||||||
server_add_parameter(server, "name", "value");
|
server_add_parameter(server, "name", "value");
|
||||||
mxs_log_flush_sync();
|
mxs_log_flush_sync();
|
||||||
ss_info_dassert(0 == strcmp("value", server_get_parameter(server, "name")),
|
ss_info_dassert(0 == strcmp("value", server_get_parameter(server, (char*)"name")),
|
||||||
"Parameter should be returned correctly");
|
"Parameter should be returned correctly");
|
||||||
ss_dfprintf(stderr, "\t..done\nTesting Unique Name for Server.");
|
ss_dfprintf(stderr, "\t..done\nTesting Unique Name for Server.");
|
||||||
ss_info_dassert(NULL == server_find_by_unique_name("non-existent"),
|
ss_info_dassert(NULL == server_find_by_unique_name("non-existent"),
|
||||||
@ -115,7 +115,7 @@ bool test_load_config(const char *input, SERVER *server)
|
|||||||
|
|
||||||
if (duplicate_context_init(&dcontext))
|
if (duplicate_context_init(&dcontext))
|
||||||
{
|
{
|
||||||
CONFIG_CONTEXT ccontext = {.object = ""};
|
CONFIG_CONTEXT ccontext = {.object = (char*)""};
|
||||||
|
|
||||||
if (config_load_single_file(input, &dcontext, &ccontext))
|
if (config_load_single_file(input, &dcontext, &ccontext))
|
||||||
{
|
{
|
Reference in New Issue
Block a user