[PATCH] merge super_group's include and exclude sub_groups into one line

This commit is contained in:
liuwentan
2023-12-26 15:35:22 +08:00
parent cc1e1d2f7f
commit 3d0d410ac7
10 changed files with 472 additions and 395 deletions

View File

@@ -10,6 +10,7 @@
#define MODULE_GROUP_EXCLUDE_GTEST module_name_str("maat.group_exclude_gtest")
#define MAX_IDS_STR_LEN 64
#define MAX_ITEM_NUM 64
#define WAIT_FOR_EFFECTIVE_S 2
#define MAX_G2G_SCAN_TIMES (1000 * 1000)
@@ -18,9 +19,9 @@ const char *table_info_path = "./group_exclude_table_info.conf";
const char *log_file = "./group_exclude_gtest.log";
struct group_item {
long long group_id;
char incl_ids_str[MAX_IDS_STR_LEN];
char excl_ids_str[MAX_IDS_STR_LEN];
long long super_group_id;
int is_exclude;
};
struct group2group_rule {
@@ -30,6 +31,8 @@ struct group2group_rule {
struct group_item del_items[MAX_ITEM_NUM];
};
UT_icd ut_ex_group_id_icd = {sizeof(long long), NULL, NULL, NULL};
static int parse_config_file(const char *filename, struct group2group_rule *rules)
{
unsigned char *json_buff = NULL;
@@ -60,9 +63,10 @@ static int parse_config_file(const char *filename, struct group2group_rule *rule
rule_cnt = cJSON_GetArraySize(items_array);
for (size_t i = 0; i < rule_cnt; i++) {
cJSON *item_obj = cJSON_GetArrayItem(items_array, i);
cJSON *tmp_item = cJSON_GetObjectItem(item_obj, "group_id");
if (tmp_item != NULL && tmp_item->type == cJSON_Number) {
rules->add_items[i].group_id = tmp_item->valueint;
cJSON *tmp_item = cJSON_GetObjectItem(item_obj, "incl_group_ids");
if (tmp_item != NULL && tmp_item->type == cJSON_String) {
memcpy(rules->add_items[i].incl_ids_str, tmp_item->valuestring,
strlen(tmp_item->valuestring));
}
tmp_item = cJSON_GetObjectItem(item_obj, "super_group_id");
@@ -70,9 +74,10 @@ static int parse_config_file(const char *filename, struct group2group_rule *rule
rules->add_items[i].super_group_id = tmp_item->valueint;
}
tmp_item = cJSON_GetObjectItem(item_obj, "is_exclude");
if (tmp_item != NULL && tmp_item->type == cJSON_Number) {
rules->add_items[i].is_exclude = tmp_item->valueint;
tmp_item = cJSON_GetObjectItem(item_obj, "excl_group_ids");
if (tmp_item != NULL && tmp_item->type == cJSON_String) {
memcpy(rules->add_items[i].excl_ids_str, tmp_item->valuestring,
strlen(tmp_item->valuestring));
}
}
rules->n_add_item = rule_cnt;
@@ -87,9 +92,10 @@ static int parse_config_file(const char *filename, struct group2group_rule *rule
rule_cnt = cJSON_GetArraySize(items_array);
for (size_t i = 0; i < rule_cnt; i++) {
cJSON *item_obj = cJSON_GetArrayItem(items_array, i);
cJSON *tmp_item = cJSON_GetObjectItem(item_obj, "group_id");
if (tmp_item != NULL && tmp_item->type == cJSON_Number) {
rules->del_items[i].group_id = tmp_item->valueint;
cJSON *tmp_item = cJSON_GetObjectItem(item_obj, "incl_group_ids");
if (tmp_item != NULL && tmp_item->type == cJSON_String) {
memcpy(rules->del_items[i].incl_ids_str, tmp_item->valuestring,
strlen(tmp_item->valuestring));
}
tmp_item = cJSON_GetObjectItem(item_obj, "super_group_id");
@@ -97,9 +103,10 @@ static int parse_config_file(const char *filename, struct group2group_rule *rule
rules->del_items[i].super_group_id = tmp_item->valueint;
}
tmp_item = cJSON_GetObjectItem(item_obj, "is_exclude");
if (tmp_item != NULL && tmp_item->type == cJSON_Number) {
rules->del_items[i].is_exclude = tmp_item->valueint;
tmp_item = cJSON_GetObjectItem(item_obj, "excl_group_ids");
if (tmp_item != NULL && tmp_item->type == cJSON_String) {
memcpy(rules->del_items[i].excl_ids_str, tmp_item->valuestring,
strlen(tmp_item->valuestring));
}
}
rules->n_del_item = rule_cnt;
@@ -168,14 +175,15 @@ TEST_F(MaatGroupExclude, level_3_function) {
assert(0);
}
memset(&rules, 0, sizeof(rules));
int ret = parse_config_file("group_exclude_L3.conf", &rules);
EXPECT_EQ(ret, 0);
for (size_t i = 0; i < rules.n_add_item; i++) {
memset(table_line, 0, sizeof(table_line));
sprintf(table_line, "%lld\t%lld\t%d\t%d", rules.add_items[i].group_id,
rules.add_items[i].super_group_id, rules.add_items[i].is_exclude, 1);
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.add_items[i].incl_ids_str,
rules.add_items[i].super_group_id, rules.add_items[i].excl_ids_str, 1);
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
}
@@ -191,8 +199,8 @@ TEST_F(MaatGroupExclude, level_3_function) {
//delete group_id = 7, super_group_id = 6, is_exclude = 1
memset(table_line, 0, sizeof(table_line));
sprintf(table_line, "%lld\t%lld\t%d\t%d", rules.del_items[0].group_id,
rules.del_items[0].super_group_id, rules.del_items[0].is_exclude, 0);
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.del_items[0].incl_ids_str,
rules.del_items[0].super_group_id, rules.del_items[0].excl_ids_str, 0);
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
group2group_runtime_commit(g2g_runtime, table_name, 2);
@@ -205,8 +213,8 @@ TEST_F(MaatGroupExclude, level_3_function) {
//delete group_id = 13, super_group_id = 4, is_exclude = 1
memset(table_line, 0, sizeof(table_line));
sprintf(table_line, "%lld\t%lld\t%d\t%d", rules.del_items[1].group_id,
rules.del_items[1].super_group_id, rules.del_items[1].is_exclude, 0);
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.del_items[1].incl_ids_str,
rules.del_items[1].super_group_id, rules.del_items[1].excl_ids_str, 0);
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
group2group_runtime_commit(g2g_runtime, table_name, 3);
@@ -232,14 +240,15 @@ TEST_F(MaatGroupExclude, level_3_perf) {
assert(0);
}
memset(&rules, 0, sizeof(rules));
int ret = parse_config_file("group_exclude_L3.conf", &rules);
EXPECT_EQ(ret, 0);
for (size_t i = 0; i < rules.n_add_item; i++) {
memset(table_line, 0, sizeof(table_line));
sprintf(table_line, "%lld\t%lld\t%d\t%d", rules.add_items[i].group_id,
rules.add_items[i].super_group_id, rules.add_items[i].is_exclude, 1);
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.add_items[i].incl_ids_str,
rules.add_items[i].super_group_id, rules.add_items[i].excl_ids_str, 1);
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
}
@@ -262,8 +271,8 @@ TEST_F(MaatGroupExclude, level_3_perf) {
//delete group_id = 7, super_group_id = 6, is_exclude = 1
memset(table_line, 0, sizeof(table_line));
sprintf(table_line, "%lld\t%lld\t%d\t%d", rules.del_items[0].group_id,
rules.del_items[0].super_group_id, rules.del_items[0].is_exclude, 0);
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.del_items[0].incl_ids_str,
rules.del_items[0].super_group_id, rules.del_items[0].excl_ids_str, 0);
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
group2group_runtime_commit(g2g_runtime, table_name, 5);
@@ -279,8 +288,8 @@ TEST_F(MaatGroupExclude, level_3_perf) {
//delete group_id = 13, super_group_id = 4, is_exclude = 1
memset(table_line, 0, sizeof(table_line));
sprintf(table_line, "%lld\t%lld\t%d\t%d", rules.del_items[1].group_id,
rules.del_items[1].super_group_id, rules.del_items[1].is_exclude, 0);
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.del_items[1].incl_ids_str,
rules.del_items[1].super_group_id, rules.del_items[1].excl_ids_str, 0);
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
group2group_runtime_commit(g2g_runtime, table_name, 6);
@@ -308,14 +317,15 @@ TEST_F(MaatGroupExclude, level_4_function) {
assert(0);
}
memset(&rules, 0, sizeof(rules));
int ret = parse_config_file("group_exclude_L4.conf", &rules);
EXPECT_EQ(ret, 0);
for (size_t i = 0; i < rules.n_add_item; i++) {
memset(table_line, 0, sizeof(table_line));
sprintf(table_line, "%lld\t%lld\t%d\t%d", rules.add_items[i].group_id,
rules.add_items[i].super_group_id, rules.add_items[i].is_exclude, 1);
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.add_items[i].incl_ids_str,
rules.add_items[i].super_group_id, rules.add_items[i].excl_ids_str, 1);
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
}
@@ -334,8 +344,8 @@ TEST_F(MaatGroupExclude, level_4_function) {
//delete group_id = 10, super_group_id = 6, is_exclude = 1
memset(table_line, 0, sizeof(table_line));
sprintf(table_line, "%lld\t%lld\t%d\t%d", rules.del_items[0].group_id,
rules.del_items[0].super_group_id, rules.del_items[0].is_exclude, 0);
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.del_items[0].incl_ids_str,
rules.del_items[0].super_group_id, rules.del_items[0].excl_ids_str, 0);
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
group2group_runtime_commit(g2g_runtime, table_name, 8);
@@ -364,14 +374,15 @@ TEST_F(MaatGroupExclude, level_4_perf) {
assert(0);
}
memset(&rules, 0, sizeof(rules));
int ret = parse_config_file("group_exclude_L4.conf", &rules);
EXPECT_EQ(ret, 0);
for (size_t i = 0; i < rules.n_add_item; i++) {
memset(table_line, 0, sizeof(table_line));
sprintf(table_line, "%lld\t%lld\t%d\t%d", rules.add_items[i].group_id,
rules.add_items[i].super_group_id, rules.add_items[i].is_exclude, 1);
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.add_items[i].incl_ids_str,
rules.add_items[i].super_group_id, rules.add_items[i].excl_ids_str, 1);
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
}
@@ -394,8 +405,8 @@ TEST_F(MaatGroupExclude, level_4_perf) {
//delete group_id = 10, super_group_id = 6, is_exclude = 1
memset(table_line, 0, sizeof(table_line));
sprintf(table_line, "%lld\t%lld\t%d\t%d", rules.del_items[0].group_id,
rules.del_items[0].super_group_id, rules.del_items[0].is_exclude, 0);
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.del_items[0].incl_ids_str,
rules.del_items[0].super_group_id, rules.del_items[0].excl_ids_str, 0);
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
group2group_runtime_commit(g2g_runtime, table_name, 8);
@@ -423,14 +434,15 @@ TEST_F(MaatGroupExclude, level_exceed_function) {
assert(0);
}
memset(&rules, 0, sizeof(rules));
int ret = parse_config_file("group_exclude_exceed.conf", &rules);
EXPECT_EQ(ret, 0);
for (size_t i = 0; i < rules.n_add_item; i++) {
memset(table_line, 0, sizeof(table_line));
sprintf(table_line, "%lld\t%lld\t%d\t%d", rules.add_items[i].group_id,
rules.add_items[i].super_group_id, rules.add_items[i].is_exclude, 1);
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.add_items[i].incl_ids_str,
rules.add_items[i].super_group_id, rules.add_items[i].excl_ids_str, 1);
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
}
@@ -450,8 +462,8 @@ TEST_F(MaatGroupExclude, level_exceed_function) {
//delete group_id = 13, super_group_id = 10, is_exclude = 0
memset(table_line, 0, sizeof(table_line));
sprintf(table_line, "%lld\t%lld\t%d\t%d", rules.del_items[0].group_id,
rules.del_items[0].super_group_id, rules.del_items[0].is_exclude, 0);
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.del_items[0].incl_ids_str,
rules.del_items[0].super_group_id, rules.del_items[0].excl_ids_str, 0);
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
group2group_runtime_commit(g2g_runtime, table_name, 9);