[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

@@ -1,101 +1,51 @@
{
"add_items": [
{
"group_id": 8,
"incl_group_ids": "8",
"super_group_id": 5,
"is_exclude": 0
"excl_group_ids": "9"
},
{
"group_id": 9,
"incl_group_ids": "6,9",
"super_group_id": 1,
"is_exclude": 0
"excl_group_ids": "5"
},
{
"group_id": 6,
"super_group_id": 1,
"is_exclude": 0
},
{
"group_id": 11,
"incl_group_ids": "10,11",
"super_group_id": 6,
"is_exclude": 0
"excl_group_ids": "7"
},
{
"group_id": 11,
"incl_group_ids": "11,12",
"super_group_id": 7,
"is_exclude": 0
"excl_group_ids": "10"
},
{
"group_id": 12,
"super_group_id": 7,
"is_exclude": 0
},
{
"group_id": 7,
"incl_group_ids": "7",
"super_group_id": 2,
"is_exclude": 0
"excl_group_ids": "6"
},
{
"group_id": 7,
"incl_group_ids": "7",
"super_group_id": 4,
"is_exclude": 0
"excl_group_ids": "13"
},
{
"group_id": 13,
"incl_group_ids": "13",
"super_group_id": 3,
"is_exclude": 0
},
{
"group_id": 9,
"super_group_id": 5,
"is_exclude": 1
},
{
"group_id": 5,
"super_group_id": 1,
"is_exclude": 1
},
{
"group_id": 10,
"super_group_id":6,
"is_exclude": 1
},
{
"group_id": 10,
"super_group_id": 7,
"is_exclude": 1
},
{
"group_id": 7,
"super_group_id": 6,
"is_exclude": 1
},
{
"group_id": 6,
"super_group_id": 2,
"is_exclude": 1
},
{
"group_id": 6,
"super_group_id": 3,
"is_exclude": 1
},
{
"group_id": 13,
"super_group_id": 4,
"is_exclude": 1
"excl_group_ids": "6"
}
],
"del_items": [
{
"group_id": 7,
"incl_group_ids": "null",
"super_group_id": 6,
"is_exclude": 1
"excl_group_ids": "7"
},
{
"group_id": 13,
"incl_group_ids": "null",
"super_group_id": 4,
"is_exclude": 1
"excl_group_ids": "13"
}
]
}

View File

@@ -1,136 +1,76 @@
{
"add_items": [
{
"group_id": 14,
"incl_group_ids": "14",
"super_group_id": 8,
"is_exclude": 0
"excl_group_ids": "15"
},
{
"group_id": 14,
"incl_group_ids": "14,16",
"super_group_id": 9,
"is_exclude": 0
"excl_group_ids": "null"
},
{
"group_id": 8,
"incl_group_ids": "8",
"super_group_id": 5,
"is_exclude": 0
"excl_group_ids": "9"
},
{
"group_id": 9,
"incl_group_ids": "6,9",
"super_group_id": 1,
"is_exclude": 0
"excl_group_ids": "5"
},
{
"group_id": 16,
"super_group_id": 9,
"is_exclude": 0
},
{
"group_id": 16,
"incl_group_ids": "16",
"super_group_id": 10,
"is_exclude": 0
"excl_group_ids": "null"
},
{
"group_id": 10,
"incl_group_ids": "10,12",
"super_group_id": 7,
"is_exclude": 0
"excl_group_ids": "null"
},
{
"group_id": 7,
"incl_group_ids": "7,11",
"super_group_id": 6,
"is_exclude": 0
"excl_group_ids": "10"
},
{
"group_id": 6,
"super_group_id": 1,
"is_exclude": 0
},
{
"group_id": 17,
"incl_group_ids": "17",
"super_group_id": 11,
"is_exclude": 0
"excl_group_ids": "null"
},
{
"group_id": 17,
"incl_group_ids": "17",
"super_group_id": 12,
"is_exclude": 0
"excl_group_ids": "null"
},
{
"group_id": 17,
"incl_group_ids": "17",
"super_group_id":13,
"is_exclude": 0
"excl_group_ids": "18"
},
{
"group_id": 11,
"super_group_id": 6,
"is_exclude": 0
},
{
"group_id": 12,
"super_group_id": 7,
"is_exclude": 0
},
{
"group_id": 7,
"incl_group_ids": "7",
"super_group_id": 2,
"is_exclude": 0
"excl_group_ids": "6"
},
{
"group_id": 7,
"incl_group_ids": "7",
"super_group_id": 4,
"is_exclude": 0
"excl_group_ids": "13"
},
{
"group_id": 13,
"incl_group_ids": "13",
"super_group_id": 3,
"is_exclude": 0
},
{
"group_id": 15,
"super_group_id": 8,
"is_exclude": 1
},
{
"group_id": 9,
"super_group_id": 5,
"is_exclude": 1
},
{
"group_id": 5,
"super_group_id": 1,
"is_exclude": 1
},
{
"group_id": 10,
"super_group_id": 6,
"is_exclude": 1
},
{
"group_id": 6,
"super_group_id": 2,
"is_exclude": 1
},
{
"group_id": 6,
"super_group_id": 3,
"is_exclude": 1
},
{
"group_id": 18,
"super_group_id":13,
"is_exclude": 1
},
{
"group_id": 13,
"super_group_id": 4,
"is_exclude": 1
"excl_group_ids": "6"
}
],
"del_items": [
{
"group_id": 10,
"incl_group_ids": "null",
"super_group_id": 6,
"is_exclude": 1
"excl_group_ids": "10"
}
]
}

View File

@@ -1,76 +1,56 @@
{
"add_items": [
{
"group_id": 6,
"incl_group_ids": "6",
"super_group_id": 3,
"is_exclude": 0
"excl_group_ids": "7"
},
{
"group_id": 3,
"incl_group_ids": "3,7",
"super_group_id": 1,
"is_exclude": 0
"excl_group_ids": "4"
},
{
"group_id": 7,
"super_group_id": 1,
"is_exclude": 0
},
{
"group_id": 7,
"super_group_id": 3,
"is_exclude": 1
},
{
"group_id": 13,
"incl_group_ids": "13",
"super_group_id": 10,
"is_exclude": 0
"excl_group_ids": "null"
},
{
"group_id": 10,
"incl_group_ids": "10",
"super_group_id": 11,
"is_exclude": 0
"excl_group_ids": "null"
},
{
"group_id": 11,
"incl_group_ids": "11",
"super_group_id": 8,
"is_exclude": 0
"excl_group_ids": "null"
},
{
"group_id": 8,
"incl_group_ids": "8",
"super_group_id": 5,
"is_exclude": 0
"excl_group_ids": "null"
},
{
"group_id": 5,
"incl_group_ids": "5",
"super_group_id": 4,
"is_exclude": 0
"excl_group_ids": "null"
},
{
"group_id": 5,
"incl_group_ids": "5",
"super_group_id": 12,
"is_exclude": 0
"excl_group_ids": "2"
},
{
"group_id": 4,
"incl_group_ids": "4",
"super_group_id": 2,
"is_exclude": 0
},
{
"group_id": 4,
"super_group_id": 1,
"is_exclude": 1
},
{
"group_id": 2,
"super_group_id": 12,
"is_exclude": 1
"excl_group_ids": "null"
}
],
"del_items": [
{
"group_id": 13,
"incl_group_ids": "13",
"super_group_id": 10,
"is_exclude": 0
"excl_group_ids": "null"
}
]
}

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);

View File

@@ -3,9 +3,9 @@
"table_name":"EXCLUDE_GROUP2GROUP",
"table_type":"group2group",
"valid_column":4,
"custom": {
"group_id":1,
"custom": {
"incl_group_ids":1,
"super_group_id":2,
"is_exclude":3
"excl_group_ids":3
}
}