#include "hircluster.h"
#include "test_utils.h"
#include "win32.h"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CLUSTER_NODE_IPV6 "::1:7200"
// Successful connection an IPv6 cluster
void test_successful_ipv6_connection(void) {
redisClusterContext *cc = redisClusterContextInit();
assert(cc);
int status;
struct timeval timeout = {0, 500000}; // 0.5s
status = redisClusterSetOptionConnectTimeout(cc, timeout);
ASSERT_MSG(status == REDIS_OK, cc->errstr);
status = redisClusterSetOptionAddNodes(cc, CLUSTER_NODE_IPV6);
ASSERT_MSG(status == REDIS_OK, cc->errstr);
status = redisClusterSetOptionRouteUseSlots(cc);
ASSERT_MSG(status == REDIS_OK, cc->errstr);
status = redisClusterConnect2(cc);
ASSERT_MSG(status == REDIS_OK, cc->errstr);
redisReply *reply;
reply = (redisReply *)redisClusterCommand(cc, "SET key_ipv6 value");
CHECK_REPLY_OK(cc, reply);
freeReplyObject(reply);
reply = (redisReply *)redisClusterCommand(cc, "GET key_ipv6");
CHECK_REPLY_STR(cc, reply, "value");
freeReplyObject(reply);
redisClusterFree(cc);
}
int main(void) {
test_successful_ipv6_connection();
return 0;
}