[PATCH]rename group2group column name
This commit is contained in:
@@ -42,8 +42,8 @@ enum maat_group_relation {
|
|||||||
struct group_info {
|
struct group_info {
|
||||||
int group_id;
|
int group_id;
|
||||||
char group_name[NAME_MAX];
|
char group_name[NAME_MAX];
|
||||||
UT_array *incl_group_ids;
|
UT_array *incl_sub_group_ids;
|
||||||
UT_array *excl_group_ids;
|
UT_array *excl_sub_group_ids;
|
||||||
UT_hash_handle hh;
|
UT_hash_handle hh;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -201,14 +201,14 @@ static void clear_iris_descriptor(struct iris_description *iris_cfg)
|
|||||||
struct group_info *node = NULL;
|
struct group_info *node = NULL;
|
||||||
struct group_info *tmp = NULL;
|
struct group_info *tmp = NULL;
|
||||||
HASH_ITER(hh, iris_cfg->group_name_map, node, tmp) {
|
HASH_ITER(hh, iris_cfg->group_name_map, node, tmp) {
|
||||||
if (node->incl_group_ids != NULL) {
|
if (node->incl_sub_group_ids != NULL) {
|
||||||
utarray_free(node->incl_group_ids);
|
utarray_free(node->incl_sub_group_ids);
|
||||||
node->incl_group_ids = NULL;
|
node->incl_sub_group_ids = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (node->excl_group_ids != NULL) {
|
if (node->excl_sub_group_ids != NULL) {
|
||||||
utarray_free(node->excl_group_ids);
|
utarray_free(node->excl_sub_group_ids);
|
||||||
node->excl_group_ids = NULL;
|
node->excl_sub_group_ids = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
HASH_DELETE(hh, iris_cfg->group_name_map, node);
|
HASH_DELETE(hh, iris_cfg->group_name_map, node);
|
||||||
@@ -314,8 +314,8 @@ group_info_add_unsafe(struct iris_description *p_iris, const char *group_name,
|
|||||||
long long group_id)
|
long long group_id)
|
||||||
{
|
{
|
||||||
struct group_info *group_info = ALLOC(struct group_info, 1);
|
struct group_info *group_info = ALLOC(struct group_info, 1);
|
||||||
utarray_new(group_info->incl_group_ids, &ut_json2iris_group_id_icd);
|
utarray_new(group_info->incl_sub_group_ids, &ut_json2iris_group_id_icd);
|
||||||
utarray_new(group_info->excl_group_ids, &ut_json2iris_group_id_icd);
|
utarray_new(group_info->excl_sub_group_ids, &ut_json2iris_group_id_icd);
|
||||||
|
|
||||||
group_info->group_id = group_id;
|
group_info->group_id = group_id;
|
||||||
strncpy(group_info->group_name, group_name, sizeof(group_info->group_name));
|
strncpy(group_info->group_name, group_name, sizeof(group_info->group_name));
|
||||||
@@ -719,8 +719,8 @@ static int write_group2compile_line(int *group_ids, size_t n_group_id,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int write_group2group_line(int super_group_id, UT_array *incl_group_ids,
|
static int write_group2group_line(int group_id, UT_array *incl_sub_group_ids,
|
||||||
UT_array *excl_group_ids,
|
UT_array *excl_sub_group_ids,
|
||||||
struct iris_description *p_iris)
|
struct iris_description *p_iris)
|
||||||
{
|
{
|
||||||
char buff[MAX_BUFF_LEN] = {0};
|
char buff[MAX_BUFF_LEN] = {0};
|
||||||
@@ -730,49 +730,49 @@ static int write_group2group_line(int super_group_id, UT_array *incl_group_ids,
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t i = 0, pos = 0;
|
size_t i = 0, pos = 0;
|
||||||
char incl_id_str[MAX_BUFF_LEN] = {0};
|
char incl_sub_group_id_str[MAX_BUFF_LEN] = {0};
|
||||||
char excl_id_str[MAX_BUFF_LEN] = {0};
|
char excl_sub_group_id_str[MAX_BUFF_LEN] = {0};
|
||||||
|
|
||||||
if (0 == utarray_len(incl_group_ids) &&
|
if (0 == utarray_len(incl_sub_group_ids) &&
|
||||||
0 == utarray_len(excl_group_ids)) {
|
0 == utarray_len(excl_sub_group_ids)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int *tmp_id = NULL;
|
int *tmp_id = NULL;
|
||||||
char tmp_str[MAX_GROUP_ID_STR] = {0};
|
char tmp_str[MAX_GROUP_ID_STR] = {0};
|
||||||
for (i = 0; i < utarray_len(incl_group_ids); i++) {
|
for (i = 0; i < utarray_len(incl_sub_group_ids); i++) {
|
||||||
tmp_id = (int *)utarray_eltptr(incl_group_ids, i);
|
tmp_id = (int *)utarray_eltptr(incl_sub_group_ids, i);
|
||||||
sprintf(tmp_str, "%d,", *tmp_id);
|
sprintf(tmp_str, "%d,", *tmp_id);
|
||||||
sprintf(incl_id_str + pos, "%s", tmp_str);
|
sprintf(incl_sub_group_id_str + pos, "%s", tmp_str);
|
||||||
pos += strlen(tmp_str);
|
pos += strlen(tmp_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *null_str = "null";
|
const char *null_str = "null";
|
||||||
size_t str_len = strlen(incl_id_str);
|
size_t str_len = strlen(incl_sub_group_id_str);
|
||||||
if (str_len > 0) {
|
if (str_len > 0) {
|
||||||
incl_id_str[str_len - 1] = '\0';
|
incl_sub_group_id_str[str_len - 1] = '\0';
|
||||||
} else {
|
} else {
|
||||||
memcpy(incl_id_str, null_str, strlen(null_str));
|
memcpy(incl_sub_group_id_str, null_str, strlen(null_str));
|
||||||
}
|
}
|
||||||
|
|
||||||
pos = 0;
|
pos = 0;
|
||||||
memset(tmp_str, 0, sizeof(tmp_str));
|
memset(tmp_str, 0, sizeof(tmp_str));
|
||||||
for (i = 0; i < utarray_len(excl_group_ids); i++) {
|
for (i = 0; i < utarray_len(excl_sub_group_ids); i++) {
|
||||||
tmp_id = (int *)utarray_eltptr(excl_group_ids, i);
|
tmp_id = (int *)utarray_eltptr(excl_sub_group_ids, i);
|
||||||
sprintf(tmp_str, "%d,", *tmp_id);
|
sprintf(tmp_str, "%d,", *tmp_id);
|
||||||
sprintf(excl_id_str + pos, "%s", tmp_str);
|
sprintf(excl_sub_group_id_str + pos, "%s", tmp_str);
|
||||||
pos += strlen(tmp_str);
|
pos += strlen(tmp_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
str_len = strlen(excl_id_str);
|
str_len = strlen(excl_sub_group_id_str);
|
||||||
if (str_len > 0) {
|
if (str_len > 0) {
|
||||||
excl_id_str[str_len - 1] = '\0';
|
excl_sub_group_id_str[str_len - 1] = '\0';
|
||||||
} else {
|
} else {
|
||||||
memcpy(excl_id_str, null_str, strlen(null_str));
|
memcpy(excl_sub_group_id_str, null_str, strlen(null_str));
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(buff, sizeof(buff), "%s\t%d\t%s\t1\n", incl_id_str,
|
snprintf(buff, sizeof(buff), "%d\t%s\t%s\t1\n", group_id,
|
||||||
super_group_id, excl_id_str);
|
incl_sub_group_id_str, excl_sub_group_id_str);
|
||||||
|
|
||||||
table->write_pos += memcat(&(table->buff), table->write_pos,
|
table->write_pos += memcat(&(table->buff), table->write_pos,
|
||||||
&(table->buff_sz), buff, strlen(buff));
|
&(table->buff_sz), buff, strlen(buff));
|
||||||
@@ -1160,9 +1160,9 @@ int recursive_traverse_sub_groups(cJSON *group_obj, struct iris_description *p_i
|
|||||||
is_exclude = tmp_item3->valueint;
|
is_exclude = tmp_item3->valueint;
|
||||||
}
|
}
|
||||||
if (0 == is_exclude) {
|
if (0 == is_exclude) {
|
||||||
utarray_push_back(parent_group->incl_group_ids, &group_id);
|
utarray_push_back(parent_group->incl_sub_group_ids, &group_id);
|
||||||
} else {
|
} else {
|
||||||
utarray_push_back(parent_group->excl_group_ids, &group_id);
|
utarray_push_back(parent_group->excl_sub_group_ids, &group_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ret = recursive_traverse_sub_groups(sub_group_obj, p_iris, logger);
|
int ret = recursive_traverse_sub_groups(sub_group_obj, p_iris, logger);
|
||||||
@@ -1181,8 +1181,8 @@ static int write_group2group_rule(struct iris_description *p_iris,
|
|||||||
struct group_info *group_info = NULL, *tmp_group_info = NULL;
|
struct group_info *group_info = NULL, *tmp_group_info = NULL;
|
||||||
|
|
||||||
HASH_ITER(hh, p_iris->group_name_map, group_info, tmp_group_info) {
|
HASH_ITER(hh, p_iris->group_name_map, group_info, tmp_group_info) {
|
||||||
ret = write_group2group_line(group_info->group_id, group_info->incl_group_ids,
|
ret = write_group2group_line(group_info->group_id, group_info->incl_sub_group_ids,
|
||||||
group_info->excl_group_ids, p_iris);
|
group_info->excl_sub_group_ids, p_iris);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
log_fatal(logger, MODULE_JSON2IRIS,
|
log_fatal(logger, MODULE_JSON2IRIS,
|
||||||
"[%s:%d] write group2group line failed for super_group:%d",
|
"[%s:%d] write group2group line failed for super_group:%d",
|
||||||
@@ -1236,7 +1236,7 @@ static int write_iris(cJSON *json, struct iris_description *p_iris,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
utarray_push_back(parent_group->incl_group_ids, &item->valueint);
|
utarray_push_back(parent_group->incl_sub_group_ids, &item->valueint);
|
||||||
ret = write_group_rule(group_obj, parent_group->group_id,
|
ret = write_group_rule(group_obj, parent_group->group_id,
|
||||||
PARENT_TYPE_GROUP, 0, 0, p_iris, logger);
|
PARENT_TYPE_GROUP, 0, 0, p_iris, logger);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
|||||||
196
src/maat_group.c
196
src/maat_group.c
@@ -23,15 +23,15 @@
|
|||||||
#define MODULE_GROUP module_name_str("maat.group")
|
#define MODULE_GROUP module_name_str("maat.group")
|
||||||
|
|
||||||
struct group2group_item {
|
struct group2group_item {
|
||||||
UT_array *incl_group_ids;
|
long long group_id;
|
||||||
UT_array *excl_group_ids;
|
UT_array *incl_sub_group_ids;
|
||||||
long long super_group_id;
|
UT_array *excl_sub_group_ids;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct group2group_schema {
|
struct group2group_schema {
|
||||||
int incl_group_ids_column;
|
int group_id_column;
|
||||||
int super_group_id_column;
|
int incl_sub_group_ids_column;
|
||||||
int excl_group_ids_column;
|
int excl_sub_group_ids_column;
|
||||||
int table_id;
|
int table_id;
|
||||||
struct table_manager *ref_tbl_mgr;
|
struct table_manager *ref_tbl_mgr;
|
||||||
};
|
};
|
||||||
@@ -111,32 +111,32 @@ void *group2group_schema_new(cJSON *json, struct table_manager *tbl_mgr,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
custom_item = cJSON_GetObjectItem(item, "incl_group_ids");
|
custom_item = cJSON_GetObjectItem(item, "group_id");
|
||||||
if (custom_item != NULL && custom_item->type == cJSON_Number) {
|
if (custom_item != NULL && custom_item->type == cJSON_Number) {
|
||||||
g2g_schema->incl_group_ids_column = custom_item->valueint;
|
g2g_schema->group_id_column = custom_item->valueint;
|
||||||
} else {
|
} else {
|
||||||
log_fatal(logger, MODULE_GROUP,
|
log_fatal(logger, MODULE_GROUP,
|
||||||
"[%s:%d] g2g table:<%s> schema has no incl_group_ids column",
|
"[%s:%d] g2g table:<%s> schema has no group_id column",
|
||||||
__FUNCTION__, __LINE__, table_name);
|
__FUNCTION__, __LINE__, table_name);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
custom_item = cJSON_GetObjectItem(item, "super_group_id");
|
custom_item = cJSON_GetObjectItem(item, "included_sub_group_ids");
|
||||||
if (custom_item != NULL && custom_item->type == cJSON_Number) {
|
if (custom_item != NULL && custom_item->type == cJSON_Number) {
|
||||||
g2g_schema->super_group_id_column = custom_item->valueint;
|
g2g_schema->incl_sub_group_ids_column = custom_item->valueint;
|
||||||
} else {
|
} else {
|
||||||
log_fatal(logger, MODULE_GROUP,
|
log_fatal(logger, MODULE_GROUP,
|
||||||
"[%s:%d] g2g table:<%s> schema has no super_group_id column",
|
"[%s:%d] g2g table:<%s> schema has no included_sub_group_ids column",
|
||||||
__FUNCTION__, __LINE__, table_name);
|
__FUNCTION__, __LINE__, table_name);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
custom_item = cJSON_GetObjectItem(item, "excl_group_ids");
|
custom_item = cJSON_GetObjectItem(item, "excluded_sub_group_ids");
|
||||||
if (custom_item != NULL && custom_item->type == cJSON_Number) {
|
if (custom_item != NULL && custom_item->type == cJSON_Number) {
|
||||||
g2g_schema->excl_group_ids_column = custom_item->valueint;
|
g2g_schema->excl_sub_group_ids_column = custom_item->valueint;
|
||||||
} else {
|
} else {
|
||||||
log_fatal(logger, MODULE_GROUP,
|
log_fatal(logger, MODULE_GROUP,
|
||||||
"[%s:%d] g2g table:<%s> schema has no excl_group_ids column",
|
"[%s:%d] g2g table:<%s> schema has no excluded_sub_group_ids column",
|
||||||
__FUNCTION__, __LINE__, table_name);
|
__FUNCTION__, __LINE__, table_name);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
@@ -326,14 +326,24 @@ group2group_item_new(const char *line, struct group2group_schema *g2g_schema,
|
|||||||
size_t column_offset = 0;
|
size_t column_offset = 0;
|
||||||
size_t column_len = 0;
|
size_t column_len = 0;
|
||||||
struct group2group_item *g2g_item = ALLOC(struct group2group_item, 1);
|
struct group2group_item *g2g_item = ALLOC(struct group2group_item, 1);
|
||||||
utarray_new(g2g_item->incl_group_ids, &ut_group_id_icd);
|
utarray_new(g2g_item->incl_sub_group_ids, &ut_group_id_icd);
|
||||||
utarray_new(g2g_item->excl_group_ids, &ut_group_id_icd);
|
utarray_new(g2g_item->excl_sub_group_ids, &ut_group_id_icd);
|
||||||
|
|
||||||
int ret = get_column_pos(line, g2g_schema->incl_group_ids_column,
|
int ret = get_column_pos(line, g2g_schema->group_id_column,
|
||||||
&column_offset, &column_len);
|
&column_offset, &column_len);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
log_fatal(logger, MODULE_GROUP,
|
log_fatal(logger, MODULE_GROUP,
|
||||||
"[%s:%d] g2g table:<%s> has no incl_group_ids in line:%s",
|
"[%s:%d] g2 table:<%s> has no group_id in line:%s",
|
||||||
|
__FUNCTION__, __LINE__, table_name, line);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
g2g_item->group_id = atoll(line + column_offset);
|
||||||
|
|
||||||
|
ret = get_column_pos(line, g2g_schema->incl_sub_group_ids_column,
|
||||||
|
&column_offset, &column_len);
|
||||||
|
if (ret < 0) {
|
||||||
|
log_fatal(logger, MODULE_GROUP,
|
||||||
|
"[%s:%d] g2g table:<%s> has no included_sub_group_ids in line:%s",
|
||||||
__FUNCTION__, __LINE__, table_name, line);
|
__FUNCTION__, __LINE__, table_name, line);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
@@ -341,36 +351,26 @@ group2group_item_new(const char *line, struct group2group_schema *g2g_schema,
|
|||||||
char group_ids_str[MAX_GROUP_IDS_STR_LEN] = {0};
|
char group_ids_str[MAX_GROUP_IDS_STR_LEN] = {0};
|
||||||
memcpy(group_ids_str, line + column_offset, MIN(MAX_GROUP_IDS_STR_LEN, column_len));
|
memcpy(group_ids_str, line + column_offset, MIN(MAX_GROUP_IDS_STR_LEN, column_len));
|
||||||
|
|
||||||
ret = ids_str2longlong_array(group_ids_str, g2g_item->incl_group_ids);
|
ret = ids_str2longlong_array(group_ids_str, g2g_item->incl_sub_group_ids);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
log_fatal(logger, MODULE_GROUP,
|
log_fatal(logger, MODULE_GROUP,
|
||||||
"[%s:%d] g2c table:<%s> incl_group_ids str2longlong failed in line:%s",
|
"[%s:%d] g2c table:<%s> included_sub_group_ids str2longlong failed in line:%s",
|
||||||
__FUNCTION__, __LINE__, table_name, line);
|
__FUNCTION__, __LINE__, table_name, line);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (utarray_len(g2g_item->incl_group_ids) > MAX_GROUP_CNT) {
|
if (utarray_len(g2g_item->incl_sub_group_ids) > MAX_GROUP_CNT) {
|
||||||
log_fatal(logger, MODULE_GROUP,
|
log_fatal(logger, MODULE_GROUP,
|
||||||
"[%s:%d] g2c table:<%s> incl_group_ids exceed maximum:%d in line:%s",
|
"[%s:%d] g2c table:<%s> included_sub_group_ids exceed maximum:%d in line:%s",
|
||||||
__FUNCTION__, __LINE__, table_name, MAX_GROUP_CNT, line);
|
__FUNCTION__, __LINE__, table_name, MAX_GROUP_CNT, line);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = get_column_pos(line, g2g_schema->super_group_id_column,
|
ret = get_column_pos(line, g2g_schema->excl_sub_group_ids_column,
|
||||||
&column_offset, &column_len);
|
&column_offset, &column_len);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
log_fatal(logger, MODULE_GROUP,
|
log_fatal(logger, MODULE_GROUP,
|
||||||
"[%s:%d] g2 table:<%s> has no super_group_id in line:%s",
|
"[%s:%d] g2g table:<%s> has no excluded_sub_group_ids in line:%s",
|
||||||
__FUNCTION__, __LINE__, table_name, line);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
g2g_item->super_group_id = atoll(line + column_offset);
|
|
||||||
|
|
||||||
ret = get_column_pos(line, g2g_schema->excl_group_ids_column,
|
|
||||||
&column_offset, &column_len);
|
|
||||||
if (ret < 0) {
|
|
||||||
log_fatal(logger, MODULE_GROUP,
|
|
||||||
"[%s:%d] g2g table:<%s> has no excl_group_ids in line:%s",
|
|
||||||
__FUNCTION__, __LINE__, table_name, line);
|
__FUNCTION__, __LINE__, table_name, line);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
@@ -378,17 +378,17 @@ group2group_item_new(const char *line, struct group2group_schema *g2g_schema,
|
|||||||
memset(group_ids_str, 0, sizeof(group_ids_str));
|
memset(group_ids_str, 0, sizeof(group_ids_str));
|
||||||
memcpy(group_ids_str, line + column_offset, MIN(MAX_GROUP_IDS_STR_LEN, column_len));
|
memcpy(group_ids_str, line + column_offset, MIN(MAX_GROUP_IDS_STR_LEN, column_len));
|
||||||
|
|
||||||
ret = ids_str2longlong_array(group_ids_str, g2g_item->excl_group_ids);
|
ret = ids_str2longlong_array(group_ids_str, g2g_item->excl_sub_group_ids);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
log_fatal(logger, MODULE_GROUP,
|
log_fatal(logger, MODULE_GROUP,
|
||||||
"[%s:%d] g2c table:<%s> excl_group_ids str2longlong failed in line:%s",
|
"[%s:%d] g2c table:<%s> excluded_sub_group_ids str2longlong failed in line:%s",
|
||||||
__FUNCTION__, __LINE__, table_name, line);
|
__FUNCTION__, __LINE__, table_name, line);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (utarray_len(g2g_item->excl_group_ids) > MAX_GROUP_CNT) {
|
if (utarray_len(g2g_item->excl_sub_group_ids) > MAX_GROUP_CNT) {
|
||||||
log_fatal(logger, MODULE_GROUP,
|
log_fatal(logger, MODULE_GROUP,
|
||||||
"[%s:%d] g2c table:<%s> excl_group_ids exceed maximum:%d in line:%s",
|
"[%s:%d] g2c table:<%s> excluded_sub_group_ids exceed maximum:%d in line:%s",
|
||||||
__FUNCTION__, __LINE__, table_name, MAX_GROUP_CNT, line);
|
__FUNCTION__, __LINE__, table_name, MAX_GROUP_CNT, line);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
@@ -405,14 +405,14 @@ static void group2group_item_free(struct group2group_item *g2g_item)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g2g_item->incl_group_ids != NULL) {
|
if (g2g_item->incl_sub_group_ids != NULL) {
|
||||||
utarray_free(g2g_item->incl_group_ids);
|
utarray_free(g2g_item->incl_sub_group_ids);
|
||||||
g2g_item->incl_group_ids = NULL;
|
g2g_item->incl_sub_group_ids = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g2g_item->excl_group_ids != NULL) {
|
if (g2g_item->excl_sub_group_ids != NULL) {
|
||||||
utarray_free(g2g_item->excl_group_ids);
|
utarray_free(g2g_item->excl_sub_group_ids);
|
||||||
g2g_item->excl_group_ids = NULL;
|
g2g_item->excl_sub_group_ids = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
FREE(g2g_item);
|
FREE(g2g_item);
|
||||||
@@ -606,41 +606,41 @@ static void maat_group_dereference_sub_group(struct maat_group *group,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int group_topology_add_group_to_group(struct maat_group_topology *group_topo,
|
static int group_topology_add_group_to_group(struct maat_group_topology *group_topo,
|
||||||
long long group_id, long long super_group_id,
|
long long group_id, long long sub_group_id,
|
||||||
int is_exclude)
|
int is_exclude)
|
||||||
{
|
{
|
||||||
if (NULL == group_topo) {
|
if (NULL == group_topo) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct maat_group *sub_group = group_topology_find_group(group_topo, sub_group_id);
|
||||||
|
if (NULL == sub_group) {
|
||||||
|
sub_group = group_topology_add_group(group_topo, sub_group_id);
|
||||||
|
}
|
||||||
|
|
||||||
struct maat_group *group = group_topology_find_group(group_topo, group_id);
|
struct maat_group *group = group_topology_find_group(group_topo, group_id);
|
||||||
if (NULL == group) {
|
if (NULL == group) {
|
||||||
group = group_topology_add_group(group_topo, group_id);
|
group = group_topology_add_group(group_topo, group_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct maat_group *super_group = group_topology_find_group(group_topo, super_group_id);
|
maat_group_reference_super_group(sub_group, group_id, is_exclude);
|
||||||
if (NULL == super_group) {
|
maat_group_reference_sub_group(group, sub_group_id, is_exclude);
|
||||||
super_group = group_topology_add_group(group_topo, super_group_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
maat_group_reference_super_group(group, super_group_id, is_exclude);
|
|
||||||
maat_group_reference_sub_group(super_group, group_id, is_exclude);
|
|
||||||
|
|
||||||
igraph_integer_t edge_id;
|
igraph_integer_t edge_id;
|
||||||
int ret = igraph_get_eid(&group_topo->group_graph, &edge_id, group->vertex_id,
|
int ret = igraph_get_eid(&group_topo->group_graph, &edge_id, sub_group->vertex_id,
|
||||||
super_group->vertex_id, IGRAPH_DIRECTED, /*error*/ 0);
|
group->vertex_id, IGRAPH_DIRECTED, /*error*/ 0);
|
||||||
|
|
||||||
//No duplicated edges between two groups.
|
//No duplicated edges between two groups.
|
||||||
if (edge_id > 0) {
|
if (edge_id > 0) {
|
||||||
log_fatal(group_topo->logger, MODULE_GROUP,
|
log_fatal(group_topo->logger, MODULE_GROUP,
|
||||||
"[%s:%d] Add group %d to group %d failed, relation already existed.",
|
"[%s:%d] Add group %d to group %d failed, relation already existed.",
|
||||||
__FUNCTION__, __LINE__, group->group_id, super_group->group_id);
|
__FUNCTION__, __LINE__, sub_group->group_id, group->group_id);
|
||||||
ret = -1;
|
ret = -1;
|
||||||
} else {
|
} else {
|
||||||
igraph_add_edge(&group_topo->group_graph, group->vertex_id,
|
igraph_add_edge(&group_topo->group_graph, sub_group->vertex_id,
|
||||||
super_group->vertex_id);
|
group->vertex_id);
|
||||||
group->ref_by_super_group_cnt++;
|
sub_group->ref_by_super_group_cnt++;
|
||||||
super_group->ref_by_sub_group_cnt++;
|
group->ref_by_sub_group_cnt++;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -648,8 +648,8 @@ static int group_topology_add_group_to_group(struct maat_group_topology *group_t
|
|||||||
igraph_is_dag(&(group_topo->group_graph), &is_dag);
|
igraph_is_dag(&(group_topo->group_graph), &is_dag);
|
||||||
if (!is_dag) {
|
if (!is_dag) {
|
||||||
log_fatal(group_topo->logger, MODULE_GROUP,
|
log_fatal(group_topo->logger, MODULE_GROUP,
|
||||||
"[%s:%d] Sub group cycle detected, sub_group_id:%lld, super_group_id:%lld!",
|
"[%s:%d] Sub group cycle detected, sub_group_id:%lld, group_id:%lld!",
|
||||||
__FUNCTION__, __LINE__, group_id, super_group_id);
|
__FUNCTION__, __LINE__, sub_group_id, group_id);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -657,7 +657,7 @@ static int group_topology_add_group_to_group(struct maat_group_topology *group_t
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int group_topology_del_group_from_group(struct maat_group_topology *group_topo,
|
static int group_topology_del_group_from_group(struct maat_group_topology *group_topo,
|
||||||
long long group_id, long long super_group_id,
|
long long group_id, long long sub_group_id,
|
||||||
int is_exclude)
|
int is_exclude)
|
||||||
{
|
{
|
||||||
if (NULL == group_topo) {
|
if (NULL == group_topo) {
|
||||||
@@ -665,24 +665,24 @@ static int group_topology_del_group_from_group(struct maat_group_topology *group
|
|||||||
}
|
}
|
||||||
|
|
||||||
//No hash write operation, LOCK protection is unnecessary.
|
//No hash write operation, LOCK protection is unnecessary.
|
||||||
struct maat_group *group = group_topology_find_group(group_topo, group_id);
|
struct maat_group *sub_group = group_topology_find_group(group_topo, sub_group_id);
|
||||||
|
if (NULL == sub_group) {
|
||||||
|
log_fatal(group_topo->logger, MODULE_GROUP,
|
||||||
|
"[%s:%d] Del group %d from group %d failed, group %d not existed.",
|
||||||
|
__FUNCTION__, __LINE__, sub_group_id, group_id, sub_group_id);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct maat_group *group = group_topology_find_group(group_topo, group_id);
|
||||||
if (NULL == group) {
|
if (NULL == group) {
|
||||||
log_fatal(group_topo->logger, MODULE_GROUP,
|
log_fatal(group_topo->logger, MODULE_GROUP,
|
||||||
"[%s:%d] Del group %d from group %d failed, group %d not existed.",
|
"[%s:%d] Del group %d from group %d failed, group %d not existed.",
|
||||||
__FUNCTION__, __LINE__, group_id, super_group_id, group_id);
|
__FUNCTION__, __LINE__, sub_group_id, group_id, group_id);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct maat_group *super_group = group_topology_find_group(group_topo, super_group_id);
|
maat_group_dereference_super_group(sub_group, group_id, is_exclude);
|
||||||
if (NULL == super_group) {
|
maat_group_dereference_sub_group(group, sub_group_id, is_exclude);
|
||||||
log_fatal(group_topo->logger, MODULE_GROUP,
|
|
||||||
"[%s:%d] Del group %d from group %d failed, superior group %d not existed.",
|
|
||||||
__FUNCTION__, __LINE__, group_id, super_group_id, super_group_id);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
maat_group_dereference_super_group(group, super_group_id, is_exclude);
|
|
||||||
maat_group_dereference_sub_group(super_group, group_id, is_exclude);
|
|
||||||
|
|
||||||
igraph_es_t es;
|
igraph_es_t es;
|
||||||
igraph_integer_t edge_num_before = 0, edge_num_after = 0;
|
igraph_integer_t edge_num_before = 0, edge_num_after = 0;
|
||||||
@@ -694,8 +694,8 @@ static int group_topology_del_group_from_group(struct maat_group_topology *group
|
|||||||
//first edge, the fifth is the first vertex of the second edge and so on. The last element
|
//first edge, the fifth is the first vertex of the second edge and so on. The last element
|
||||||
//of the argument list must be -1 to denote the end of the argument list.
|
//of the argument list must be -1 to denote the end of the argument list.
|
||||||
//https://igraph.org/c/doc/igraph-Iterators.html#igraph_es_pairs_small
|
//https://igraph.org/c/doc/igraph-Iterators.html#igraph_es_pairs_small
|
||||||
int ret = igraph_es_pairs_small(&es, IGRAPH_DIRECTED, group->vertex_id,
|
int ret = igraph_es_pairs_small(&es, IGRAPH_DIRECTED, sub_group->vertex_id,
|
||||||
super_group->vertex_id, -1);
|
group->vertex_id, -1);
|
||||||
assert(ret==IGRAPH_SUCCESS);
|
assert(ret==IGRAPH_SUCCESS);
|
||||||
// ignore no such edge to abort().
|
// ignore no such edge to abort().
|
||||||
igraph_set_error_handler(igraph_error_handler_ignore);
|
igraph_set_error_handler(igraph_error_handler_ignore);
|
||||||
@@ -708,8 +708,8 @@ static int group_topology_del_group_from_group(struct maat_group_topology *group
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
group->ref_by_super_group_cnt--;
|
sub_group->ref_by_super_group_cnt--;
|
||||||
super_group->ref_by_sub_group_cnt--;
|
group->ref_by_sub_group_cnt--;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -777,13 +777,13 @@ int group2group_runtime_update(void *g2g_runtime, void *g2g_schema,
|
|||||||
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
long long *tmp_group_id = NULL;
|
long long *sub_group_id = NULL;
|
||||||
if (0 == is_valid) {
|
if (0 == is_valid) {
|
||||||
//delete
|
//delete
|
||||||
for (i = 0; i < utarray_len(g2g_item->incl_group_ids); i++) {
|
for (i = 0; i < utarray_len(g2g_item->incl_sub_group_ids); i++) {
|
||||||
tmp_group_id = (long long *)utarray_eltptr(g2g_item->incl_group_ids, i);
|
sub_group_id = (long long *)utarray_eltptr(g2g_item->incl_sub_group_ids, i);
|
||||||
ret = group_topology_del_group_from_group(g2g_rt->updating_group_topo, *tmp_group_id,
|
ret = group_topology_del_group_from_group(g2g_rt->updating_group_topo,
|
||||||
g2g_item->super_group_id, 0);
|
g2g_item->group_id, *sub_group_id, 0);
|
||||||
if (0 == ret) {
|
if (0 == ret) {
|
||||||
g2g_rt->rule_num--;
|
g2g_rt->rule_num--;
|
||||||
} else {
|
} else {
|
||||||
@@ -791,10 +791,10 @@ int group2group_runtime_update(void *g2g_runtime, void *g2g_schema,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < utarray_len(g2g_item->excl_group_ids); i++) {
|
for (i = 0; i < utarray_len(g2g_item->excl_sub_group_ids); i++) {
|
||||||
tmp_group_id = (long long *)utarray_eltptr(g2g_item->excl_group_ids, i);
|
sub_group_id = (long long *)utarray_eltptr(g2g_item->excl_sub_group_ids, i);
|
||||||
ret = group_topology_del_group_from_group(g2g_rt->updating_group_topo, *tmp_group_id,
|
ret = group_topology_del_group_from_group(g2g_rt->updating_group_topo,
|
||||||
g2g_item->super_group_id, 1);
|
g2g_item->group_id, *sub_group_id, 1);
|
||||||
if (0 == ret) {
|
if (0 == ret) {
|
||||||
g2g_rt->rule_num--;
|
g2g_rt->rule_num--;
|
||||||
g2g_rt->excl_rule_num--;
|
g2g_rt->excl_rule_num--;
|
||||||
@@ -804,10 +804,10 @@ int group2group_runtime_update(void *g2g_runtime, void *g2g_schema,
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//add
|
//add
|
||||||
for (i = 0; i < utarray_len(g2g_item->incl_group_ids); i++) {
|
for (i = 0; i < utarray_len(g2g_item->incl_sub_group_ids); i++) {
|
||||||
tmp_group_id = (long long *)utarray_eltptr(g2g_item->incl_group_ids, i);
|
sub_group_id = (long long *)utarray_eltptr(g2g_item->incl_sub_group_ids, i);
|
||||||
ret = group_topology_add_group_to_group(g2g_rt->updating_group_topo, *tmp_group_id,
|
ret = group_topology_add_group_to_group(g2g_rt->updating_group_topo,
|
||||||
g2g_item->super_group_id, 0);
|
g2g_item->group_id, *sub_group_id, 0);
|
||||||
if (0 == ret) {
|
if (0 == ret) {
|
||||||
g2g_rt->rule_num++;
|
g2g_rt->rule_num++;
|
||||||
} else {
|
} else {
|
||||||
@@ -815,10 +815,10 @@ int group2group_runtime_update(void *g2g_runtime, void *g2g_schema,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < utarray_len(g2g_item->excl_group_ids); i++) {
|
for (i = 0; i < utarray_len(g2g_item->excl_sub_group_ids); i++) {
|
||||||
tmp_group_id = (long long *)utarray_eltptr(g2g_item->excl_group_ids, i);
|
sub_group_id = (long long *)utarray_eltptr(g2g_item->excl_sub_group_ids, i);
|
||||||
ret = group_topology_add_group_to_group(g2g_rt->updating_group_topo, *tmp_group_id,
|
ret = group_topology_add_group_to_group(g2g_rt->updating_group_topo,
|
||||||
g2g_item->super_group_id, 1);
|
g2g_item->group_id, *sub_group_id, 1);
|
||||||
if (0 == ret) {
|
if (0 == ret) {
|
||||||
g2g_rt->rule_num++;
|
g2g_rt->rule_num++;
|
||||||
g2g_rt->excl_rule_num++;
|
g2g_rt->excl_rule_num++;
|
||||||
|
|||||||
@@ -40,9 +40,9 @@
|
|||||||
"table_type":"group2group",
|
"table_type":"group2group",
|
||||||
"valid_column":4,
|
"valid_column":4,
|
||||||
"custom": {
|
"custom": {
|
||||||
"incl_group_ids":1,
|
"group_id":1,
|
||||||
"super_group_id":2,
|
"included_sub_group_ids":2,
|
||||||
"excl_group_ids":3
|
"excluded_sub_group_ids":3
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,51 +1,51 @@
|
|||||||
{
|
{
|
||||||
"add_items": [
|
"add_items": [
|
||||||
{
|
{
|
||||||
"incl_group_ids": "8",
|
"group_id": 5,
|
||||||
"super_group_id": 5,
|
"included_sub_group_ids": "8",
|
||||||
"excl_group_ids": "9"
|
"excluded_sub_group_ids": "9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "6,9",
|
"group_id": 1,
|
||||||
"super_group_id": 1,
|
"included_sub_group_ids": "6,9",
|
||||||
"excl_group_ids": "5"
|
"excluded_sub_group_ids": "5"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "10,11",
|
"group_id": 6,
|
||||||
"super_group_id": 6,
|
"included_sub_group_ids": "10,11",
|
||||||
"excl_group_ids": "7"
|
"excluded_sub_group_ids": "7"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "11,12",
|
"group_id": 7,
|
||||||
"super_group_id": 7,
|
"included_sub_group_ids": "11,12",
|
||||||
"excl_group_ids": "10"
|
"excluded_sub_group_ids": "10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "7",
|
"group_id": 2,
|
||||||
"super_group_id": 2,
|
"included_sub_group_ids": "7",
|
||||||
"excl_group_ids": "6"
|
"excluded_sub_group_ids": "6"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "7",
|
"group_id": 4,
|
||||||
"super_group_id": 4,
|
"included_sub_group_ids": "7",
|
||||||
"excl_group_ids": "13"
|
"excluded_sub_group_ids": "13"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "13",
|
"group_id": 3,
|
||||||
"super_group_id": 3,
|
"included_sub_group_ids": "13",
|
||||||
"excl_group_ids": "6"
|
"excluded_sub_group_ids": "6"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"del_items": [
|
"del_items": [
|
||||||
{
|
{
|
||||||
"incl_group_ids": "null",
|
"group_id": 6,
|
||||||
"super_group_id": 6,
|
"included_sub_group_ids": "null",
|
||||||
"excl_group_ids": "7"
|
"excluded_sub_group_ids": "7"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "null",
|
"group_id": 4,
|
||||||
"super_group_id": 4,
|
"included_sub_group_ids": "null",
|
||||||
"excl_group_ids": "13"
|
"excluded_sub_group_ids": "13"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,76 +1,76 @@
|
|||||||
{
|
{
|
||||||
"add_items": [
|
"add_items": [
|
||||||
{
|
{
|
||||||
"incl_group_ids": "14",
|
"group_id": 8,
|
||||||
"super_group_id": 8,
|
"included_sub_group_ids": "14",
|
||||||
"excl_group_ids": "15"
|
"excluded_sub_group_ids": "15"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "14,16",
|
"group_id": 9,
|
||||||
"super_group_id": 9,
|
"included_sub_group_ids": "14,16",
|
||||||
"excl_group_ids": "null"
|
"excluded_sub_group_ids": "null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "8",
|
"group_id": 5,
|
||||||
"super_group_id": 5,
|
"included_sub_group_ids": "8",
|
||||||
"excl_group_ids": "9"
|
"excluded_sub_group_ids": "9"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "6,9",
|
"group_id": 1,
|
||||||
"super_group_id": 1,
|
"included_sub_group_ids": "6,9",
|
||||||
"excl_group_ids": "5"
|
"excluded_sub_group_ids": "5"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "16",
|
"group_id": 10,
|
||||||
"super_group_id": 10,
|
"included_sub_group_ids": "16",
|
||||||
"excl_group_ids": "null"
|
"excluded_sub_group_ids": "null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "10,12",
|
"group_id": 7,
|
||||||
"super_group_id": 7,
|
"included_sub_group_ids": "10,12",
|
||||||
"excl_group_ids": "null"
|
"excluded_sub_group_ids": "null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "7,11",
|
"group_id": 6,
|
||||||
"super_group_id": 6,
|
"included_sub_group_ids": "7,11",
|
||||||
"excl_group_ids": "10"
|
"excluded_sub_group_ids": "10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "17",
|
"group_id": 11,
|
||||||
"super_group_id": 11,
|
"included_sub_group_ids": "17",
|
||||||
"excl_group_ids": "null"
|
"excluded_sub_group_ids": "null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "17",
|
"group_id": 12,
|
||||||
"super_group_id": 12,
|
"included_sub_group_ids": "17",
|
||||||
"excl_group_ids": "null"
|
"excluded_sub_group_ids": "null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "17",
|
"group_id":13,
|
||||||
"super_group_id":13,
|
"included_sub_group_ids": "17",
|
||||||
"excl_group_ids": "18"
|
"excluded_sub_group_ids": "18"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "7",
|
"group_id": 2,
|
||||||
"super_group_id": 2,
|
"included_sub_group_ids": "7",
|
||||||
"excl_group_ids": "6"
|
"excluded_sub_group_ids": "6"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "7",
|
"group_id": 4,
|
||||||
"super_group_id": 4,
|
"included_sub_group_ids": "7",
|
||||||
"excl_group_ids": "13"
|
"excluded_sub_group_ids": "13"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "13",
|
"group_id": 3,
|
||||||
"super_group_id": 3,
|
"included_sub_group_ids": "13",
|
||||||
"excl_group_ids": "6"
|
"excluded_sub_group_ids": "6"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"del_items": [
|
"del_items": [
|
||||||
{
|
{
|
||||||
"incl_group_ids": "null",
|
"group_id": 6,
|
||||||
"super_group_id": 6,
|
"included_sub_group_ids": "null",
|
||||||
"excl_group_ids": "10"
|
"excluded_sub_group_ids": "10"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,56 +1,56 @@
|
|||||||
{
|
{
|
||||||
"add_items": [
|
"add_items": [
|
||||||
{
|
{
|
||||||
"incl_group_ids": "6",
|
"group_id": 3,
|
||||||
"super_group_id": 3,
|
"included_sub_group_ids": "6",
|
||||||
"excl_group_ids": "7"
|
"excluded_sub_group_ids": "7"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "3,7",
|
"group_id": 1,
|
||||||
"super_group_id": 1,
|
"included_sub_group_ids": "3,7",
|
||||||
"excl_group_ids": "4"
|
"excluded_sub_group_ids": "4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "13",
|
"group_id": 10,
|
||||||
"super_group_id": 10,
|
"included_sub_group_ids": "13",
|
||||||
"excl_group_ids": "null"
|
"excluded_sub_group_ids": "null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "10",
|
"group_id": 11,
|
||||||
"super_group_id": 11,
|
"included_sub_group_ids": "10",
|
||||||
"excl_group_ids": "null"
|
"excluded_sub_group_ids": "null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "11",
|
"group_id": 8,
|
||||||
"super_group_id": 8,
|
"included_sub_group_ids": "11",
|
||||||
"excl_group_ids": "null"
|
"excluded_sub_group_ids": "null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "8",
|
"group_id": 5,
|
||||||
"super_group_id": 5,
|
"included_sub_group_ids": "8",
|
||||||
"excl_group_ids": "null"
|
"excluded_sub_group_ids": "null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "5",
|
"group_id": 4,
|
||||||
"super_group_id": 4,
|
"included_sub_group_ids": "5",
|
||||||
"excl_group_ids": "null"
|
"excluded_sub_group_ids": "null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "5",
|
"group_id": 12,
|
||||||
"super_group_id": 12,
|
"included_sub_group_ids": "5",
|
||||||
"excl_group_ids": "2"
|
"excluded_sub_group_ids": "2"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"incl_group_ids": "4",
|
"group_id": 2,
|
||||||
"super_group_id": 2,
|
"included_sub_group_ids": "4",
|
||||||
"excl_group_ids": "null"
|
"excluded_sub_group_ids": "null"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"del_items": [
|
"del_items": [
|
||||||
{
|
{
|
||||||
"incl_group_ids": "13",
|
"group_id": 10,
|
||||||
"super_group_id": 10,
|
"included_sub_group_ids": "13",
|
||||||
"excl_group_ids": "null"
|
"excluded_sub_group_ids": "null"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -19,9 +19,9 @@ const char *table_info_path = "./group_exclude_table_info.conf";
|
|||||||
const char *log_file = "./group_exclude_gtest.log";
|
const char *log_file = "./group_exclude_gtest.log";
|
||||||
|
|
||||||
struct group_item {
|
struct group_item {
|
||||||
char incl_ids_str[MAX_IDS_STR_LEN];
|
long long group_id;
|
||||||
char excl_ids_str[MAX_IDS_STR_LEN];
|
char incl_sub_ids_str[MAX_IDS_STR_LEN];
|
||||||
long long super_group_id;
|
char excl_sub_ids_str[MAX_IDS_STR_LEN];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct group2group_rule {
|
struct group2group_rule {
|
||||||
@@ -63,20 +63,20 @@ static int parse_config_file(const char *filename, struct group2group_rule *rule
|
|||||||
rule_cnt = cJSON_GetArraySize(items_array);
|
rule_cnt = cJSON_GetArraySize(items_array);
|
||||||
for (size_t i = 0; i < rule_cnt; i++) {
|
for (size_t i = 0; i < rule_cnt; i++) {
|
||||||
cJSON *item_obj = cJSON_GetArrayItem(items_array, i);
|
cJSON *item_obj = cJSON_GetArrayItem(items_array, i);
|
||||||
cJSON *tmp_item = cJSON_GetObjectItem(item_obj, "incl_group_ids");
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp_item = cJSON_GetObjectItem(item_obj, "included_sub_group_ids");
|
||||||
if (tmp_item != NULL && tmp_item->type == cJSON_String) {
|
if (tmp_item != NULL && tmp_item->type == cJSON_String) {
|
||||||
memcpy(rules->add_items[i].incl_ids_str, tmp_item->valuestring,
|
memcpy(rules->add_items[i].incl_sub_ids_str, tmp_item->valuestring,
|
||||||
strlen(tmp_item->valuestring));
|
strlen(tmp_item->valuestring));
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp_item = cJSON_GetObjectItem(item_obj, "super_group_id");
|
tmp_item = cJSON_GetObjectItem(item_obj, "excluded_sub_group_ids");
|
||||||
if (tmp_item != NULL && tmp_item->type == cJSON_Number) {
|
|
||||||
rules->add_items[i].super_group_id = tmp_item->valueint;
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp_item = cJSON_GetObjectItem(item_obj, "excl_group_ids");
|
|
||||||
if (tmp_item != NULL && tmp_item->type == cJSON_String) {
|
if (tmp_item != NULL && tmp_item->type == cJSON_String) {
|
||||||
memcpy(rules->add_items[i].excl_ids_str, tmp_item->valuestring,
|
memcpy(rules->add_items[i].excl_sub_ids_str, tmp_item->valuestring,
|
||||||
strlen(tmp_item->valuestring));
|
strlen(tmp_item->valuestring));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -92,20 +92,20 @@ static int parse_config_file(const char *filename, struct group2group_rule *rule
|
|||||||
rule_cnt = cJSON_GetArraySize(items_array);
|
rule_cnt = cJSON_GetArraySize(items_array);
|
||||||
for (size_t i = 0; i < rule_cnt; i++) {
|
for (size_t i = 0; i < rule_cnt; i++) {
|
||||||
cJSON *item_obj = cJSON_GetArrayItem(items_array, i);
|
cJSON *item_obj = cJSON_GetArrayItem(items_array, i);
|
||||||
cJSON *tmp_item = cJSON_GetObjectItem(item_obj, "incl_group_ids");
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp_item = cJSON_GetObjectItem(item_obj, "included_sub_group_ids");
|
||||||
if (tmp_item != NULL && tmp_item->type == cJSON_String) {
|
if (tmp_item != NULL && tmp_item->type == cJSON_String) {
|
||||||
memcpy(rules->del_items[i].incl_ids_str, tmp_item->valuestring,
|
memcpy(rules->del_items[i].incl_sub_ids_str, tmp_item->valuestring,
|
||||||
strlen(tmp_item->valuestring));
|
strlen(tmp_item->valuestring));
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp_item = cJSON_GetObjectItem(item_obj, "super_group_id");
|
tmp_item = cJSON_GetObjectItem(item_obj, "excluded_sub_group_ids");
|
||||||
if (tmp_item != NULL && tmp_item->type == cJSON_Number) {
|
|
||||||
rules->del_items[i].super_group_id = tmp_item->valueint;
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp_item = cJSON_GetObjectItem(item_obj, "excl_group_ids");
|
|
||||||
if (tmp_item != NULL && tmp_item->type == cJSON_String) {
|
if (tmp_item != NULL && tmp_item->type == cJSON_String) {
|
||||||
memcpy(rules->del_items[i].excl_ids_str, tmp_item->valuestring,
|
memcpy(rules->del_items[i].excl_sub_ids_str, tmp_item->valuestring,
|
||||||
strlen(tmp_item->valuestring));
|
strlen(tmp_item->valuestring));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -182,8 +182,8 @@ TEST_F(MaatGroupExclude, level_3_function) {
|
|||||||
for (size_t i = 0; i < rules.n_add_item; i++) {
|
for (size_t i = 0; i < rules.n_add_item; i++) {
|
||||||
memset(table_line, 0, sizeof(table_line));
|
memset(table_line, 0, sizeof(table_line));
|
||||||
|
|
||||||
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.add_items[i].incl_ids_str,
|
sprintf(table_line, "%lld\t%s\t%s\t%d", rules.add_items[i].group_id,
|
||||||
rules.add_items[i].super_group_id, rules.add_items[i].excl_ids_str, 1);
|
rules.add_items[i].incl_sub_ids_str, rules.add_items[i].excl_sub_ids_str, 1);
|
||||||
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,8 +199,8 @@ TEST_F(MaatGroupExclude, level_3_function) {
|
|||||||
|
|
||||||
//delete group_id = 7, super_group_id = 6, is_exclude = 1
|
//delete group_id = 7, super_group_id = 6, is_exclude = 1
|
||||||
memset(table_line, 0, sizeof(table_line));
|
memset(table_line, 0, sizeof(table_line));
|
||||||
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.del_items[0].incl_ids_str,
|
sprintf(table_line, "%lld\t%s\t%s\t%d", rules.del_items[0].group_id,
|
||||||
rules.del_items[0].super_group_id, rules.del_items[0].excl_ids_str, 0);
|
rules.del_items[0].incl_sub_ids_str, rules.del_items[0].excl_sub_ids_str, 0);
|
||||||
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
||||||
group2group_runtime_commit(g2g_runtime, table_name, 2);
|
group2group_runtime_commit(g2g_runtime, table_name, 2);
|
||||||
|
|
||||||
@@ -213,8 +213,8 @@ TEST_F(MaatGroupExclude, level_3_function) {
|
|||||||
|
|
||||||
//delete group_id = 13, super_group_id = 4, is_exclude = 1
|
//delete group_id = 13, super_group_id = 4, is_exclude = 1
|
||||||
memset(table_line, 0, sizeof(table_line));
|
memset(table_line, 0, sizeof(table_line));
|
||||||
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.del_items[1].incl_ids_str,
|
sprintf(table_line, "%lld\t%s\t%s\t%d", rules.del_items[1].group_id,
|
||||||
rules.del_items[1].super_group_id, rules.del_items[1].excl_ids_str, 0);
|
rules.del_items[1].incl_sub_ids_str, rules.del_items[1].excl_sub_ids_str, 0);
|
||||||
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
||||||
group2group_runtime_commit(g2g_runtime, table_name, 3);
|
group2group_runtime_commit(g2g_runtime, table_name, 3);
|
||||||
|
|
||||||
@@ -247,8 +247,8 @@ TEST_F(MaatGroupExclude, level_3_perf) {
|
|||||||
for (size_t i = 0; i < rules.n_add_item; i++) {
|
for (size_t i = 0; i < rules.n_add_item; i++) {
|
||||||
memset(table_line, 0, sizeof(table_line));
|
memset(table_line, 0, sizeof(table_line));
|
||||||
|
|
||||||
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.add_items[i].incl_ids_str,
|
sprintf(table_line, "%lld\t%s\t%s\t%d", rules.add_items[i].group_id,
|
||||||
rules.add_items[i].super_group_id, rules.add_items[i].excl_ids_str, 1);
|
rules.add_items[i].incl_sub_ids_str, rules.add_items[i].excl_sub_ids_str, 1);
|
||||||
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -271,8 +271,8 @@ TEST_F(MaatGroupExclude, level_3_perf) {
|
|||||||
|
|
||||||
//delete group_id = 7, super_group_id = 6, is_exclude = 1
|
//delete group_id = 7, super_group_id = 6, is_exclude = 1
|
||||||
memset(table_line, 0, sizeof(table_line));
|
memset(table_line, 0, sizeof(table_line));
|
||||||
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.del_items[0].incl_ids_str,
|
sprintf(table_line, "%lld\t%s\t%s\t%d", rules.del_items[0].group_id,
|
||||||
rules.del_items[0].super_group_id, rules.del_items[0].excl_ids_str, 0);
|
rules.del_items[0].incl_sub_ids_str, rules.del_items[0].excl_sub_ids_str, 0);
|
||||||
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
||||||
group2group_runtime_commit(g2g_runtime, table_name, 5);
|
group2group_runtime_commit(g2g_runtime, table_name, 5);
|
||||||
|
|
||||||
@@ -288,8 +288,8 @@ TEST_F(MaatGroupExclude, level_3_perf) {
|
|||||||
|
|
||||||
//delete group_id = 13, super_group_id = 4, is_exclude = 1
|
//delete group_id = 13, super_group_id = 4, is_exclude = 1
|
||||||
memset(table_line, 0, sizeof(table_line));
|
memset(table_line, 0, sizeof(table_line));
|
||||||
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.del_items[1].incl_ids_str,
|
sprintf(table_line, "%lld\t%s\t%s\t%d", rules.del_items[1].group_id,
|
||||||
rules.del_items[1].super_group_id, rules.del_items[1].excl_ids_str, 0);
|
rules.del_items[1].incl_sub_ids_str, rules.del_items[1].excl_sub_ids_str, 0);
|
||||||
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
||||||
group2group_runtime_commit(g2g_runtime, table_name, 6);
|
group2group_runtime_commit(g2g_runtime, table_name, 6);
|
||||||
|
|
||||||
@@ -324,8 +324,8 @@ TEST_F(MaatGroupExclude, level_4_function) {
|
|||||||
for (size_t i = 0; i < rules.n_add_item; i++) {
|
for (size_t i = 0; i < rules.n_add_item; i++) {
|
||||||
memset(table_line, 0, sizeof(table_line));
|
memset(table_line, 0, sizeof(table_line));
|
||||||
|
|
||||||
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.add_items[i].incl_ids_str,
|
sprintf(table_line, "%lld\t%s\t%s\t%d", rules.add_items[i].group_id,
|
||||||
rules.add_items[i].super_group_id, rules.add_items[i].excl_ids_str, 1);
|
rules.add_items[i].incl_sub_ids_str, rules.add_items[i].excl_sub_ids_str, 1);
|
||||||
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -344,8 +344,8 @@ TEST_F(MaatGroupExclude, level_4_function) {
|
|||||||
|
|
||||||
//delete group_id = 10, super_group_id = 6, is_exclude = 1
|
//delete group_id = 10, super_group_id = 6, is_exclude = 1
|
||||||
memset(table_line, 0, sizeof(table_line));
|
memset(table_line, 0, sizeof(table_line));
|
||||||
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.del_items[0].incl_ids_str,
|
sprintf(table_line, "%lld\t%s\t%s\t%d", rules.del_items[0].group_id,
|
||||||
rules.del_items[0].super_group_id, rules.del_items[0].excl_ids_str, 0);
|
rules.del_items[0].incl_sub_ids_str, rules.del_items[0].excl_sub_ids_str, 0);
|
||||||
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
||||||
group2group_runtime_commit(g2g_runtime, table_name, 8);
|
group2group_runtime_commit(g2g_runtime, table_name, 8);
|
||||||
|
|
||||||
@@ -381,8 +381,8 @@ TEST_F(MaatGroupExclude, level_4_perf) {
|
|||||||
for (size_t i = 0; i < rules.n_add_item; i++) {
|
for (size_t i = 0; i < rules.n_add_item; i++) {
|
||||||
memset(table_line, 0, sizeof(table_line));
|
memset(table_line, 0, sizeof(table_line));
|
||||||
|
|
||||||
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.add_items[i].incl_ids_str,
|
sprintf(table_line, "%lld\t%s\t%s\t%d", rules.add_items[i].group_id,
|
||||||
rules.add_items[i].super_group_id, rules.add_items[i].excl_ids_str, 1);
|
rules.add_items[i].incl_sub_ids_str, rules.add_items[i].excl_sub_ids_str, 1);
|
||||||
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -405,8 +405,8 @@ TEST_F(MaatGroupExclude, level_4_perf) {
|
|||||||
|
|
||||||
//delete group_id = 10, super_group_id = 6, is_exclude = 1
|
//delete group_id = 10, super_group_id = 6, is_exclude = 1
|
||||||
memset(table_line, 0, sizeof(table_line));
|
memset(table_line, 0, sizeof(table_line));
|
||||||
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.del_items[0].incl_ids_str,
|
sprintf(table_line, "%lld\t%s\t%s\t%d", rules.del_items[0].group_id,
|
||||||
rules.del_items[0].super_group_id, rules.del_items[0].excl_ids_str, 0);
|
rules.del_items[0].incl_sub_ids_str, rules.del_items[0].excl_sub_ids_str, 0);
|
||||||
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
||||||
group2group_runtime_commit(g2g_runtime, table_name, 8);
|
group2group_runtime_commit(g2g_runtime, table_name, 8);
|
||||||
|
|
||||||
@@ -441,8 +441,8 @@ TEST_F(MaatGroupExclude, level_exceed_function) {
|
|||||||
for (size_t i = 0; i < rules.n_add_item; i++) {
|
for (size_t i = 0; i < rules.n_add_item; i++) {
|
||||||
memset(table_line, 0, sizeof(table_line));
|
memset(table_line, 0, sizeof(table_line));
|
||||||
|
|
||||||
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.add_items[i].incl_ids_str,
|
sprintf(table_line, "%lld\t%s\t%s\t%d", rules.add_items[i].group_id,
|
||||||
rules.add_items[i].super_group_id, rules.add_items[i].excl_ids_str, 1);
|
rules.add_items[i].incl_sub_ids_str, rules.add_items[i].excl_sub_ids_str, 1);
|
||||||
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -462,8 +462,8 @@ TEST_F(MaatGroupExclude, level_exceed_function) {
|
|||||||
|
|
||||||
//delete group_id = 13, super_group_id = 10, is_exclude = 0
|
//delete group_id = 13, super_group_id = 10, is_exclude = 0
|
||||||
memset(table_line, 0, sizeof(table_line));
|
memset(table_line, 0, sizeof(table_line));
|
||||||
sprintf(table_line, "%s\t%lld\t%s\t%d", rules.del_items[0].incl_ids_str,
|
sprintf(table_line, "%lld\t%s\t%s\t%d", rules.del_items[0].group_id,
|
||||||
rules.del_items[0].super_group_id, rules.del_items[0].excl_ids_str, 0);
|
rules.del_items[0].incl_sub_ids_str, rules.del_items[0].excl_sub_ids_str, 0);
|
||||||
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
group2group_runtime_update(g2g_runtime, g2g_schema, table_name, table_line, 4);
|
||||||
group2group_runtime_commit(g2g_runtime, table_name, 9);
|
group2group_runtime_commit(g2g_runtime, table_name, 9);
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
"table_name":"EXCLUDE_GROUP2GROUP",
|
"table_name":"EXCLUDE_GROUP2GROUP",
|
||||||
"table_type":"group2group",
|
"table_type":"group2group",
|
||||||
"valid_column":4,
|
"valid_column":4,
|
||||||
"custom": {
|
"custom": {
|
||||||
"incl_group_ids":1,
|
"group_id":1,
|
||||||
"super_group_id":2,
|
"included_sub_group_ids":2,
|
||||||
"excl_group_ids":3
|
"excluded_sub_group_ids":3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -187,15 +187,14 @@ int group2compile_table_set_line(struct maat *maat_inst, const char *table_name,
|
|||||||
|
|
||||||
int group2group_table_set_line(struct maat *maat_inst, const char *table_name,
|
int group2group_table_set_line(struct maat *maat_inst, const char *table_name,
|
||||||
enum maat_operation op, long long group_id,
|
enum maat_operation op, long long group_id,
|
||||||
long long superior_group_id, int is_exclude,
|
long long sub_group_id, int expire_after)
|
||||||
int expire_after)
|
|
||||||
{
|
{
|
||||||
char table_line[128] = {0};
|
char table_line[128] = {0};
|
||||||
sprintf(table_line, "%lld\t%lld\t%d\t%d", group_id, superior_group_id,
|
sprintf(table_line, "%lld\t%lld\t%s\t%d", group_id, sub_group_id,
|
||||||
is_exclude, op);
|
"null", op);
|
||||||
|
|
||||||
struct maat_cmd_line line_rule;
|
struct maat_cmd_line line_rule;
|
||||||
line_rule.rule_id = TO_GROUP2X_KEY(group_id, superior_group_id, 0);
|
line_rule.rule_id = TO_GROUP2X_KEY(group_id, sub_group_id, 0);
|
||||||
line_rule.table_line = table_line;
|
line_rule.table_line = table_line;
|
||||||
line_rule.table_name = table_name;
|
line_rule.table_name = table_name;
|
||||||
line_rule.expire_after = expire_after;
|
line_rule.expire_after = expire_after;
|
||||||
@@ -7746,7 +7745,7 @@ TEST_F(MaatCmdTest, SubGroup) {
|
|||||||
//group2 -> group1 -> compile1
|
//group2 -> group1 -> compile1
|
||||||
long long group2_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
long long group2_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
||||||
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
||||||
group2_id, group1_id, 0, 0);
|
group1_id, group2_id, 0);
|
||||||
EXPECT_EQ(ret, 1);
|
EXPECT_EQ(ret, 1);
|
||||||
|
|
||||||
/* item1 -> group2 -> group1 -> compile1
|
/* item1 -> group2 -> group1 -> compile1
|
||||||
@@ -7830,7 +7829,7 @@ TEST_F(MaatCmdTest, SubGroup) {
|
|||||||
*/
|
*/
|
||||||
long long group3_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
long long group3_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
||||||
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
||||||
group3_id, group1_id, 0, 0);
|
group1_id, group3_id, 0);
|
||||||
EXPECT_EQ(ret, 1);
|
EXPECT_EQ(ret, 1);
|
||||||
|
|
||||||
long long item2_id = maat_cmd_incrby(maat_inst, "SEQUENCE_REGION", 1);
|
long long item2_id = maat_cmd_incrby(maat_inst, "SEQUENCE_REGION", 1);
|
||||||
@@ -8927,7 +8926,7 @@ TEST_F(MaatCmdTest, HitGroup) {
|
|||||||
*/
|
*/
|
||||||
long long group2_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
long long group2_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
||||||
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
||||||
group2_id, group21_id, 0, 0);
|
group21_id, group2_id, 0);
|
||||||
EXPECT_EQ(ret, 1);
|
EXPECT_EQ(ret, 1);
|
||||||
|
|
||||||
/* item1 -> group1 -> compile1
|
/* item1 -> group1 -> compile1
|
||||||
@@ -8949,7 +8948,7 @@ TEST_F(MaatCmdTest, HitGroup) {
|
|||||||
*/
|
*/
|
||||||
long long group11_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
long long group11_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
||||||
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
||||||
group1_id, group11_id, 0, 0);
|
group11_id, group1_id, 0);
|
||||||
EXPECT_EQ(ret, 1);
|
EXPECT_EQ(ret, 1);
|
||||||
|
|
||||||
//item3 -> group3, group3 is not referenced by any compile.
|
//item3 -> group3, group3 is not referenced by any compile.
|
||||||
@@ -9196,7 +9195,7 @@ TEST_F(MaatCmdTest, HitPathBasic) {
|
|||||||
*/
|
*/
|
||||||
long long group2_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
long long group2_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
||||||
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
||||||
group2_id, group21_id, 0, 0);
|
group21_id, group2_id, 0);
|
||||||
EXPECT_EQ(ret, 1);
|
EXPECT_EQ(ret, 1);
|
||||||
|
|
||||||
/* item1 -> group1 -> compile1
|
/* item1 -> group1 -> compile1
|
||||||
@@ -9218,7 +9217,7 @@ TEST_F(MaatCmdTest, HitPathBasic) {
|
|||||||
*/
|
*/
|
||||||
long long group11_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
long long group11_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
||||||
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
||||||
group1_id, group11_id, 0, 0);
|
group11_id, group1_id, 0);
|
||||||
EXPECT_EQ(ret, 1);
|
EXPECT_EQ(ret, 1);
|
||||||
|
|
||||||
//item3 -> group3, group3 is not referenced by any compile.
|
//item3 -> group3, group3 is not referenced by any compile.
|
||||||
@@ -9498,7 +9497,7 @@ TEST_F(MaatCmdTest, HitPathAdvanced) {
|
|||||||
*/
|
*/
|
||||||
long long group2_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
long long group2_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
||||||
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
||||||
group2_id, group21_id, 0, 0);
|
group21_id, group2_id, 0);
|
||||||
EXPECT_EQ(ret, 1);
|
EXPECT_EQ(ret, 1);
|
||||||
|
|
||||||
/* item1 -> group1 -> compile1
|
/* item1 -> group1 -> compile1
|
||||||
@@ -9860,7 +9859,7 @@ TEST_F(MaatCmdTest, HitPathHasNotGroup) {
|
|||||||
*/
|
*/
|
||||||
long long group2_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
long long group2_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
||||||
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
||||||
group2_id, group21_id, 0, 0);
|
group21_id, group2_id, 0);
|
||||||
EXPECT_EQ(ret, 1);
|
EXPECT_EQ(ret, 1);
|
||||||
|
|
||||||
/* !(item1 -> group1) -> compile1
|
/* !(item1 -> group1) -> compile1
|
||||||
@@ -9882,7 +9881,7 @@ TEST_F(MaatCmdTest, HitPathHasNotGroup) {
|
|||||||
*/
|
*/
|
||||||
long long group11_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
long long group11_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
||||||
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
||||||
group1_id, group11_id, 0, 0);
|
group11_id, group1_id, 0);
|
||||||
EXPECT_EQ(ret, 1);
|
EXPECT_EQ(ret, 1);
|
||||||
|
|
||||||
//item3 -> group3, group3 is not referenced by any compile.
|
//item3 -> group3, group3 is not referenced by any compile.
|
||||||
@@ -10132,7 +10131,7 @@ TEST_F(MaatCmdTest, SameSuperGroupRefByMultiCompile) {
|
|||||||
|
|
||||||
long long group52_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
long long group52_id = maat_cmd_incrby(maat_inst, "SEQUENCE_GROUP", 1);
|
||||||
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
ret = group2group_table_set_line(maat_inst, g2g_table_name, MAAT_OP_ADD,
|
||||||
group5_id, group52_id, 0, 0);
|
group52_id, group5_id, 0);
|
||||||
EXPECT_EQ(ret, 1);
|
EXPECT_EQ(ret, 1);
|
||||||
|
|
||||||
long long compile2_id = maat_cmd_incrby(maat_inst, "TEST_SEQ", 1);
|
long long compile2_id = maat_cmd_incrby(maat_inst, "TEST_SEQ", 1);
|
||||||
|
|||||||
@@ -95,9 +95,9 @@
|
|||||||
"table_type":"group2group",
|
"table_type":"group2group",
|
||||||
"valid_column":4,
|
"valid_column":4,
|
||||||
"custom": {
|
"custom": {
|
||||||
"incl_group_ids":1,
|
"group_id":1,
|
||||||
"super_group_id":2,
|
"included_sub_group_ids":2,
|
||||||
"excl_group_ids":3
|
"excluded_sub_group_ids":3
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user