added independent testing of the hint filter
This commit is contained in:
@ -1,6 +1,13 @@
|
|||||||
|
aux_source_directory(${CMAKE_SOURCE_DIR}/server/core CORE_ALL)
|
||||||
|
foreach(VAR ${CORE_ALL})
|
||||||
|
if(NOT( (${VAR} MATCHES "max[a-z_]*.c") OR (${VAR} MATCHES "gateway.c")))
|
||||||
|
list(APPEND CORE ${VAR})
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
add_executable(harness_ui harness_ui.c harness_common.c)
|
add_executable(harness_ui harness_ui.c harness_common.c)
|
||||||
add_executable(harness harness_util.c harness_common.c)
|
add_executable(harness harness_util.c harness_common.c ${CORE})
|
||||||
target_link_libraries(harness_ui log_manager utils pthread fullcore)
|
target_link_libraries(harness_ui fullcore log_manager utils)
|
||||||
target_link_libraries(harness log_manager utils pthread fullcore)
|
target_link_libraries(harness fullcore)
|
||||||
add_test(TestHintfilter /bin/sh -c "${CMAKE_CURRENT_BINARY_DIR}/harness -i ${CMAKE_CURRENT_SOURCE_DIR}/hint_testing.input -o ${CMAKE_CURRENT_BINARY_DIR}/hint_testig.output -c ${CMAKE_CURRENT_SOURCE_DIR}/hint_testing.cnf -t 2 -s 10 && diff ${CMAKE_CURRENT_SOURCE_DIR}/hint_testing.expected ${CMAKE_CURRENT_BINARY_DIR}/hint_testig.output;exit $?")
|
add_test(TestHintfilter /bin/sh -x -c "MAXSCALE_HOME=\"${CMAKE_BINARY_DIR}\" ${CMAKE_CURRENT_BINARY_DIR}/harness -i ${CMAKE_CURRENT_SOURCE_DIR}/hint_testing.input -o ${CMAKE_CURRENT_BINARY_DIR}/hint_testing.output -c ${CMAKE_CURRENT_SOURCE_DIR}/hint_testing.cnf -t 1 -s 1 && diff ${CMAKE_CURRENT_SOURCE_DIR}/hint_testing.expected ${CMAKE_CURRENT_BINARY_DIR}/hint_testing.output;exit $?")
|
||||||
@ -68,7 +68,7 @@
|
|||||||
#include <atomic.h>
|
#include <atomic.h>
|
||||||
#include <ini.h>
|
#include <ini.h>
|
||||||
#include <hint.h>
|
#include <hint.h>
|
||||||
|
#include <modutil.h>
|
||||||
/**
|
/**
|
||||||
* A single name-value pair and a link to the next item in the
|
* A single name-value pair and a link to the next item in the
|
||||||
* configuration.
|
* configuration.
|
||||||
|
|||||||
@ -158,12 +158,9 @@ int routeQuery(void* ins, void* session, GWBUF* queue)
|
|||||||
{
|
{
|
||||||
|
|
||||||
unsigned int buffsz = 0;
|
unsigned int buffsz = 0;
|
||||||
unsigned char* ptr = (void*)queue->start;
|
|
||||||
char *qstr;
|
char *qstr;
|
||||||
|
|
||||||
buffsz += *ptr++;
|
buffsz = (char*)queue->end - ((char*)queue->start + 5);
|
||||||
buffsz += *ptr++ << 8;
|
|
||||||
buffsz += *ptr++ << 16;
|
|
||||||
|
|
||||||
if(queue->hint){
|
if(queue->hint){
|
||||||
buffsz += 40;
|
buffsz += 40;
|
||||||
@ -175,12 +172,12 @@ int routeQuery(void* ins, void* session, GWBUF* queue)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
qstr = calloc(buffsz,sizeof(char));
|
qstr = calloc(buffsz + 1,sizeof(char));
|
||||||
|
|
||||||
if(qstr){
|
if(qstr){
|
||||||
memcpy(qstr,queue->start + 5,buffsz - 1);
|
memcpy(qstr,queue->start + 5,buffsz);
|
||||||
if(queue->hint){
|
if(queue->hint){
|
||||||
char *ptr = qstr + (int)(queue->end - 1 - (queue->start + 5));
|
char *ptr = qstr + strlen(qstr);
|
||||||
|
|
||||||
switch(queue->hint->type){
|
switch(queue->hint->type){
|
||||||
case HINT_ROUTE_TO_MASTER:
|
case HINT_ROUTE_TO_MASTER:
|
||||||
@ -210,16 +207,17 @@ int routeQuery(void* ins, void* session, GWBUF* queue)
|
|||||||
default:
|
default:
|
||||||
sprintf(ptr,"|HINT_UNDEFINED");
|
sprintf(ptr,"|HINT_UNDEFINED");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ptr += strlen(ptr);
|
ptr = qstr + strlen(qstr);
|
||||||
if(queue->hint->data){
|
if(queue->hint->data){
|
||||||
sprintf(ptr,"|%s",(char*)queue->hint->data);
|
sprintf(ptr,"|%s",(char*)queue->hint->data);
|
||||||
ptr += strlen(ptr);
|
ptr = qstr + strlen(qstr);
|
||||||
}
|
}
|
||||||
if(queue->hint->value){
|
if(queue->hint->value){
|
||||||
sprintf(ptr,"|%s",(char*)queue->hint->value);
|
sprintf(ptr,"|%s",(char*)queue->hint->value);
|
||||||
ptr += strlen(ptr);
|
ptr = qstr + strlen(qstr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,7 +232,7 @@ int routeQuery(void* ins, void* session, GWBUF* queue)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(instance.outfile>=0){
|
if(instance.outfile>=0){
|
||||||
write(instance.outfile,qstr,strnlen(qstr,buffsz));
|
write(instance.outfile,qstr,strlen(qstr));
|
||||||
write(instance.outfile,"\n",1);
|
write(instance.outfile,"\n",1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -508,7 +506,7 @@ int load_config( char* fname)
|
|||||||
if(!strcmp("module",item->name)){
|
if(!strcmp("module",item->name)){
|
||||||
|
|
||||||
if(instance.mod_dir){
|
if(instance.mod_dir){
|
||||||
char* modstr = malloc(sizeof(char)*(strlen(instance.mod_dir) + strlen(item->value)));
|
char* modstr = malloc(sizeof(char)*(strlen(instance.mod_dir) + strlen(item->value) + 1));
|
||||||
strcpy(modstr,instance.mod_dir);
|
strcpy(modstr,instance.mod_dir);
|
||||||
strcat(modstr,"/");
|
strcat(modstr,"/");
|
||||||
strcat(modstr,item->value);
|
strcat(modstr,item->value);
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
select @@server_id; -- maxscale begin route to master
|
select @@server_id; -- maxscale begin route to master|HINT_ROUTE_TO_MASTER
|
||||||
select @@server_id;
|
select @@server_id;|HINT_ROUTE_TO_MASTER
|
||||||
select @@server_id; -- maxscale route to server server3|HINT_ROUTE_TO_NAMED_SERVER|server3
|
select @@server_id; -- maxscale route to server server3|HINT_ROUTE_TO_NAMED_SERVER|server3
|
||||||
select @@server_id;
|
select @@server_id;|HINT_ROUTE_TO_MASTER
|
||||||
select @@server_id; -- maxscale end
|
select @@server_id; -- maxscale end
|
||||||
select @@server_id; -- maxscale named1 prepare route to master
|
select @@server_id; -- maxscale named1 prepare route to master
|
||||||
select @@server_id; -- maxscale named1 begin|HINT_ROUTE_TO_MASTER
|
select @@server_id; -- maxscale named1 begin|HINT_ROUTE_TO_MASTER
|
||||||
@ -14,10 +14,10 @@ select @@server_id;|HINT_ROUTE_TO_NAMED_SERVER|server2
|
|||||||
select @@server_id; -- maxscale route to server server3|HINT_ROUTE_TO_NAMED_SERVER|server3
|
select @@server_id; -- maxscale route to server server3|HINT_ROUTE_TO_NAMED_SERVER|server3
|
||||||
select @@server_id;|HINT_ROUTE_TO_NAMED_SERVER|server2
|
select @@server_id;|HINT_ROUTE_TO_NAMED_SERVER|server2
|
||||||
select @@server_id; -- maxscale end
|
select @@server_id; -- maxscale end
|
||||||
select @@server_id; # maxscale begin route to master
|
select @@server_id; # maxscale begin route to master|HINT_ROUTE_TO_MASTER
|
||||||
select @@server_id;
|
select @@server_id;|HINT_ROUTE_TO_MASTER
|
||||||
select @@server_id; # maxscale route to server server3|HINT_ROUTE_TO_NAMED_SERVER|server3
|
select @@server_id; # maxscale route to server server3|HINT_ROUTE_TO_NAMED_SERVER|server3
|
||||||
select @@server_id;
|
select @@server_id;|HINT_ROUTE_TO_MASTER
|
||||||
select @@server_id; # maxscale end
|
select @@server_id; # maxscale end
|
||||||
select @@server_id; # maxscale named2 prepare route to master
|
select @@server_id; # maxscale named2 prepare route to master
|
||||||
select @@server_id; # maxscale named2 begin|HINT_ROUTE_TO_MASTER
|
select @@server_id; # maxscale named2 begin|HINT_ROUTE_TO_MASTER
|
||||||
@ -30,19 +30,19 @@ select @@server_id;|HINT_ROUTE_TO_NAMED_SERVER|server2
|
|||||||
select @@server_id; # maxscale route to server server3|HINT_ROUTE_TO_NAMED_SERVER|server3
|
select @@server_id; # maxscale route to server server3|HINT_ROUTE_TO_NAMED_SERVER|server3
|
||||||
select @@server_id;|HINT_ROUTE_TO_NAMED_SERVER|server2
|
select @@server_id;|HINT_ROUTE_TO_NAMED_SERVER|server2
|
||||||
select @@server_id; # maxscale end
|
select @@server_id; # maxscale end
|
||||||
select @@server_id/* maxscale begin route to master */;
|
select @@server_id/* maxscale begin route to master */;|HINT_ROUTE_TO_MASTER
|
||||||
select @@server_id;
|
select @@server_id;|HINT_ROUTE_TO_MASTER
|
||||||
select @@server_id/* maxscale route to server server3 */;|HINT_ROUTE_TO_NAMED_SERVER|*/;
|
select @@server_id/* maxscale route to server server3 */;|HINT_ROUTE_TO_NAMED_SERVER|server3
|
||||||
select @@server_id;
|
select @@server_id;|HINT_ROUTE_TO_MASTER
|
||||||
select @@server_id/* maxscale end */;
|
select @@server_id/* maxscale end */;
|
||||||
select @@server_id/* maxscale named3 prepare route to master */;|HINT_ROUTE_TO_MASTER
|
select @@server_id/* maxscale named3 prepare route to master */;
|
||||||
select @@server_id/* maxscale named3 begin */;
|
select @@server_id/* maxscale named3 begin */;|HINT_ROUTE_TO_MASTER
|
||||||
select @@server_id;
|
select @@server_id;|HINT_ROUTE_TO_MASTER
|
||||||
select @@server_id/* maxscale route to server server3 */;|HINT_ROUTE_TO_NAMED_SERVER|*/;
|
select @@server_id/* maxscale route to server server3 */;|HINT_ROUTE_TO_NAMED_SERVER|server3
|
||||||
select @@server_id;
|
select @@server_id;|HINT_ROUTE_TO_MASTER
|
||||||
select @@server_id/* maxscale end */;
|
select @@server_id/* maxscale end */;
|
||||||
select @@server_id/* maxscale shorthand3 begin route to server server2 */; |HINT_ROUTE_TO_NAMED_SERVER|*/;
|
select @@server_id/* maxscale shorthand3 begin route to server server2 */; |HINT_ROUTE_TO_NAMED_SERVER|server2
|
||||||
select @@server_id;|HINT_ROUTE_TO_NAMED_SERVER|*/;
|
select @@server_id;|HINT_ROUTE_TO_NAMED_SERVER|server2
|
||||||
select @@server_id/* maxscale route to server server3 */;|HINT_ROUTE_TO_NAMED_SERVER|*/;
|
select @@server_id/* maxscale route to server server3 */;|HINT_ROUTE_TO_NAMED_SERVER|server3
|
||||||
select @@server_id;|HINT_ROUTE_TO_NAMED_SERVER|*/;
|
select @@server_id;|HINT_ROUTE_TO_NAMED_SERVER|server2
|
||||||
select @@server_id/* maxscale end */;
|
select @@server_id/* maxscale end */;
|
||||||
|
|||||||
Reference in New Issue
Block a user