Tests for context callbacks in non-blocking mode

This commit is contained in:
Pieter Noordhuis 2010-10-18 15:39:56 +02:00
parent 634314f386
commit a68cb9686e
1 changed files with 37 additions and 0 deletions

37
test.c
View File

@ -193,9 +193,46 @@ static void cleanup() {
redisFree(c);
}
static long __test_callback_flags = 0;
static void __test_callback(redisContext *c, const void *privdata) {
((void)c);
/* Shift to detect execution order */
__test_callback_flags <<= 8;
__test_callback_flags |= (long)privdata;
}
static void test_nonblocking_connection() {
redisContext *c;
__test_callback_flags = 0;
test("Calls command callback when command is issued: ");
c = redisConnectNonBlock("127.0.0.1", 6379, NULL);
redisSetCommandCallback(c,__test_callback,(const void*)1);
redisCommand(c,"PING");
test_cond(__test_callback_flags == 1);
redisFree(c);
__test_callback_flags = 0;
test("Calls disconnect callback on redisDisconnect: ");
c = redisConnectNonBlock("127.0.0.1", 6379, NULL);
redisSetDisconnectCallback(c,__test_callback,(const void*)2);
redisDisconnect(c);
test_cond(__test_callback_flags == 2);
redisFree(c);
__test_callback_flags = 0;
test("Calls disconnect callback and free callback on redisFree: ");
c = redisConnectNonBlock("127.0.0.1", 6379, NULL);
redisSetDisconnectCallback(c,__test_callback,(const void*)2);
redisSetFreeCallback(c,__test_callback,(const void*)4);
redisFree(c);
test_cond(__test_callback_flags == ((2 << 8) | 4));
}
int main(void) {
test_blocking_connection();
test_reply_reader();
test_nonblocking_connection();
test_throughput();
cleanup();