summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfengweihao <[email protected]>2024-06-27 10:02:02 +0800
committerfengweihao <[email protected]>2024-06-27 10:02:02 +0800
commit6d8774cf14678d6b8c6932e412dfb2c5c936df3d (patch)
tree5387ade3fce318175730b8ba64526f76b18fb4c7
parent19df9685b1e1ae0360c6859626e123dbe863a897 (diff)
The Swarmkv CLI test case name has been changed, and Cluster Sanity adapted to the CRDT ADD command.v4.4.0
-rw-r--r--test/swarmkv_cli_test.cpp23
-rw-r--r--tools/swarmkv_tools.c20
2 files changed, 23 insertions, 20 deletions
diff --git a/test/swarmkv_cli_test.cpp b/test/swarmkv_cli_test.cpp
index d921ddf..0db76c8 100644
--- a/test/swarmkv_cli_test.cpp
+++ b/test/swarmkv_cli_test.cpp
@@ -143,7 +143,7 @@ int swarmkv_cli_exec_cmd(const char *db, const char *ip_addr, unsigned int port,
return 1;
}
-TEST_F(SwarmkvCliNodes, CLI_Command)
+TEST_F(SwarmkvCliNodes, SwarmkvCliCommand)
{
int ret=0;
char result[2048]={0};
@@ -167,7 +167,7 @@ TEST_F(SwarmkvCliNodes, CLI_Command)
ret=ret;
}
-TEST_F(SwarmkvCliNodes, CLI_Get_Slots)
+TEST_F(SwarmkvCliNodes, GetSlotsAndOwner)
{
struct swarmkv *db=SwarmkvCliNodes::db;
struct swarmkv_reply *reply=NULL;
@@ -178,7 +178,7 @@ TEST_F(SwarmkvCliNodes, CLI_Get_Slots)
swarmkv_reply_free(reply);
}
-TEST_F(SwarmkvCliNodes, CLI_Get_Nodes)
+TEST_F(SwarmkvCliNodes, GetNodesAndLeader)
{
struct swarmkv *db=SwarmkvCliNodes::db2;
struct swarmkv_reply *reply=NULL;
@@ -192,7 +192,7 @@ TEST_F(SwarmkvCliNodes, CLI_Get_Nodes)
swarmkv_reply_free(reply);
}
-TEST_F(SwarmkvCliNodes, SANITY_BASIC)
+TEST_F(SwarmkvCliNodes, BasicSanityCheck)
{
struct swarmkv *db=SwarmkvCliNodes::db;
const char *cluster_name="swarmkv-cli-nodes";
@@ -254,7 +254,7 @@ TEST_F(SwarmkvCliNodes, SANITY_BASIC)
CLUSTER SANITY heal
GET xiaolv
*/
-TEST_F(SwarmkvCliNodes, SANITY_CRDT_DEL)
+TEST_F(SwarmkvCliNodes, CrdtDelAndSanityCheck)
{
struct swarmkv *db=SwarmkvCliNodes::db;
struct swarmkv *db2=SwarmkvCliNodes::db2;
@@ -300,7 +300,7 @@ TEST_F(SwarmkvCliNodes, SANITY_CRDT_DEL)
CLUSTER SANITY heal
GET xiaoqin
*/
-TEST_F(SwarmkvCliNodes, SANITY_KEYSPACE_RDEL)
+TEST_F(SwarmkvCliNodes, KeyspaceRdelAndSanityCheck)
{
struct swarmkv *db=SwarmkvCliNodes::db;
struct swarmkv *db2=SwarmkvCliNodes::db2;
@@ -344,7 +344,7 @@ TEST_F(SwarmkvCliNodes, SANITY_KEYSPACE_RDEL)
CLUSTER SANITY heal
KEYSPACE RLIST xiaolan
*/
-TEST_F(SwarmkvCliNodes, SANITY_KEYSPACE_RADD)
+TEST_F(SwarmkvCliNodes, KeyspaceRaddAndSanityCheck)
{
struct swarmkv *db=SwarmkvCliNodes::db;
struct swarmkv *db2=SwarmkvCliNodes::db2;
@@ -489,7 +489,7 @@ struct swarmkv *create_swarmkv_db()
* test for cluster_sanity_command
*
*/
-TEST_F(SwarmkvCliNodes, MultiInterface)
+TEST_F(SwarmkvCliNodes, AddSlotOwner)
{
struct swarmkv *db=SwarmkvCliNodes::db;
struct swarmkv *db2=SwarmkvCliNodes::db2;
@@ -546,7 +546,7 @@ TEST_F(SwarmkvCliNodes, MultiInterface)
reply = cluster_slots_command(db2, NULL, 0);
ASSERT_EQ(reply->type, SWARMKV_REPLY_VERBATIM);
snprintf(target, sizeof(target), "127.0.0.1:%zu", p2p_port_start+i);
- if(!strstr(result, target) || i==2)
+ if(!strstr(reply->str, target) || i==2)
{
break;
}
@@ -626,7 +626,7 @@ struct log_handle* SwarmkvTwoNodes::logger;
struct swarmkv* SwarmkvTwoNodes::db1;
struct swarmkv* SwarmkvTwoNodes::db2;
-TEST_F(SwarmkvTwoNodes, SANITY_BASIC)
+TEST_F(SwarmkvTwoNodes, BasicSanityCheck)
{
struct swarmkv *db1=SwarmkvTwoNodes::db1;
struct swarmkv *db2=SwarmkvTwoNodes::db2;
@@ -647,7 +647,6 @@ TEST_F(SwarmkvTwoNodes, SANITY_BASIC)
ASSERT_EQ(reply->type, SWARMKV_REPLY_INTEGER);
EXPECT_EQ(reply->integer, 1);
swarmkv_reply_free(reply);
- reply=NULL;
wait_for_node_run();
config_init(db1, cluster_name);
@@ -663,6 +662,7 @@ TEST_F(SwarmkvTwoNodes, SANITY_BASIC)
ASSERT_EQ(reply->n_element, 2);
EXPECT_STREQ(reply->elements[0]->str, "127.0.0.1:10211");
EXPECT_STREQ(reply->elements[1]->str, "127.0.0.1:10210");
+ swarmkv_reply_free(reply);
reply=swarmkv_command_on(db2, "127.0.0.1:10211", "CRDT DEL %s", "id01");
ASSERT_EQ(reply->type, SWARMKV_REPLY_INTEGER);
@@ -678,6 +678,7 @@ TEST_F(SwarmkvTwoNodes, SANITY_BASIC)
ASSERT_EQ(reply->type, SWARMKV_REPLY_ARRAY);
ASSERT_EQ(reply->n_element, 1);
EXPECT_STREQ(reply->elements[0]->str, "127.0.0.1:10210");
+ swarmkv_reply_free(reply);
reply=swarmkv_command_on(db2, "127.0.0.1:10210", "CRDT ADD %s %s", "id01", "127.0.0.1:10211");
ASSERT_EQ(reply->type, SWARMKV_REPLY_STATUS);
diff --git a/tools/swarmkv_tools.c b/tools/swarmkv_tools.c
index 1b3bd05..0b00fad 100644
--- a/tools/swarmkv_tools.c
+++ b/tools/swarmkv_tools.c
@@ -550,14 +550,21 @@ void exec_cmd_generic_callback(const struct swarmkv_reply* reply, void * cb_arg)
void exec_cmd_crdt_join(struct swarmkv *db, struct cluster_sanity_ctx *ctx, struct replica_list *keyspace_list, struct replica_node *crdt_addr, char *key)
{
+ struct swarmkv_reply* reply=NULL;
struct replica_node *tmp=NULL, *keyspace_addr=NULL;
HASH_ITER(hh, keyspace_list->replica_node_hash, keyspace_addr, tmp)
{
- ctx->reply_num++;
- swarmkv_async_command_on(db, exec_cmd_generic_callback, ctx, keyspace_addr->node.addr, "CRDT ADD %s %s", key, crdt_addr->node.addr);
- swarmkv_caller_loop(db, SWARMKV_LOOP_ONCE, NULL);
- }
+ reply=swarmkv_command_on(db, crdt_addr->node.addr, "CRDT EXISTS %s", key);
+ if(reply != NULL && reply->integer == 1)
+ {
+ swarmkv_reply_free(reply);
+ continue;
+ }
+ swarmkv_reply_free(reply);
+ reply=swarmkv_command_on(db, keyspace_addr->node.addr, "CRDT ADD %s %s", key, crdt_addr->node.addr);
+ swarmkv_reply_free(reply);
+ }
}
void build_crdt_replica_list(const struct swarmkv_reply* keys_reply, struct cluster_sanity_ctx *ctx, const node_t *node)
@@ -678,11 +685,6 @@ struct swarmkv_reply *cluster_sanity_command(struct swarmkv *db, char *argv[], s
{
keyspace_keys_reply=swarmkv_command_on(db, active_nodes[i].addr, "keyspace keys %d *", j);
swarmkv_reply_merge_array(&reply, keyspace_keys_reply);
- if(keyspace_keys_reply->type==SWARMKV_REPLY_NIL)
- {
- swarmkv_reply_free(keyspace_keys_reply);
- }
- keyspace_keys_reply=NULL;
}
swarmkv_reply_free(thread_reply);
}