version3单元测试通过。

This commit is contained in:
zhengchao
2020-06-16 22:19:02 +08:00
parent df19a8ce71
commit 2dbbd55c95
10 changed files with 63 additions and 61 deletions

View File

@@ -175,7 +175,7 @@ struct Maat_cmd_group2compile
const char* virtual_table_name;
int group_id;
int compile_id;
int Nth_clause;
int clause_index;
int not_flag;
};

View File

@@ -260,7 +260,7 @@ void serialize_group2compile(enum MAAT_OPERATION op, const struct Maat_cmd_group
op,
g2c->not_flag,
g2c->virtual_table_name?g2c->virtual_table_name:"null",
g2c->Nth_clause==0?1:g2c->Nth_clause);
g2c->clause_index);
return;
}
void serialize_compile(const struct Maat_rule_t* p_m_rule, const char* huge_service_defined, int clause_num, enum MAAT_OPERATION op, char* buff, size_t sz)

View File

@@ -15,7 +15,7 @@
#define module_maat_hierarchy "MAAT_HIERARCHY"
#define TO_CLAUSE_ID(Nth_clause, compile_id) ((long long)Nth_clause<<32|compile_id)
#define TO_CLAUSE_ID(clause_index, compile_id) ((long long)clause_index<<32|compile_id)
#define TO_CLAUSE_ID_COMPATBILE(vid, gid) ((unsigned long long)vid<<32|gid)
#define TO_LITERAL_ID(vt_id, group_id) ((long long)vt_id<<32|group_id)
@@ -54,7 +54,7 @@ struct Maat_hierarchy_literal_id
};
struct Maat_hierarchy_clause_id
{
int Nth_clause;
int clause_index;
int compile_id;
};
struct Maat_hierarchy_clause
@@ -153,10 +153,10 @@ static void Maat_hierarchy_literal_free(struct Maat_hierarchy* hier, struct Maat
HASH_DELETE(hh, hier->hash_literal_by_id, literal);
free(literal);
}
static int Maat_hierarchy_literal_join_clause(struct Maat_hierarchy_literal* literal, int not_flag, int Nth_clause, int compile_id)
static int Maat_hierarchy_literal_join_clause(struct Maat_hierarchy_literal* literal, int not_flag, int clause_index, int compile_id)
{
struct Maat_hierarchy_clause* clause=NULL;
struct Maat_hierarchy_clause_id clause_id={Nth_clause, compile_id};
struct Maat_hierarchy_clause_id clause_id={clause_index, compile_id};
HASH_FIND(hh, literal->hash_clause_by_id, &clause_id, sizeof(clause_id), clause);
if(clause)
{
@@ -169,10 +169,10 @@ static int Maat_hierarchy_literal_join_clause(struct Maat_hierarchy_literal* lit
HASH_ADD(hh, literal->hash_clause_by_id, clause_id, sizeof(clause->clause_id), clause);
return 0;
}
static int Maat_hierarchy_literal_leave_clause(struct Maat_hierarchy_literal* literal, int Nth_clause, int compile_id)
static int Maat_hierarchy_literal_leave_clause(struct Maat_hierarchy_literal* literal, int clause_index, int compile_id)
{
struct Maat_hierarchy_clause* clause=NULL;
struct Maat_hierarchy_clause_id clause_id={Nth_clause, compile_id};
struct Maat_hierarchy_clause_id clause_id={clause_index, compile_id};
HASH_FIND(hh, literal->hash_clause_by_id, &clause_id, sizeof(clause_id), clause);
if(!clause)
{
@@ -485,7 +485,7 @@ static void Maat_hierarchy_group_free(struct Maat_hierarchy* hier, struct Maat_h
return;
}
int Maat_hierarchy_add_group_to_compile(struct Maat_hierarchy* hier, int group_id, int vt_id, int not_flag, int Nth_clause, int compile_id)
int Maat_hierarchy_add_group_to_compile(struct Maat_hierarchy* hier, int group_id, int vt_id, int not_flag, int clause_index, int compile_id)
{
int ret=0;
struct Maat_hierarchy_group* group=NULL;
@@ -503,12 +503,12 @@ int Maat_hierarchy_add_group_to_compile(struct Maat_hierarchy* hier, int group_i
{
literal=Maat_hierarchy_literal_new(hier, group_id, vt_id);
}
ret=Maat_hierarchy_literal_join_clause(literal, not_flag, Nth_clause, compile_id);
ret=Maat_hierarchy_literal_join_clause(literal, not_flag, clause_index, compile_id);
if(ret<0)
{
MESA_handle_runtime_log(hier->logger, RLOG_LV_FATAL, module_maat_hierarchy,
"Add group %d vt_id %d to clause %d of compile %d failed, group is already exisited.",
group_id, vt_id, Nth_clause, compile_id);
group_id, vt_id, clause_index, compile_id);
ret=-1;
}
else
@@ -519,7 +519,7 @@ int Maat_hierarchy_add_group_to_compile(struct Maat_hierarchy* hier, int group_i
pthread_rwlock_unlock(&hier->rwlock);
return ret;
}
int Maat_hierarchy_remove_group_from_compile(struct Maat_hierarchy* hier, int group_id, int vt_id, int not_flag, int Nth_clause, int compile_id)
int Maat_hierarchy_remove_group_from_compile(struct Maat_hierarchy* hier, int group_id, int vt_id, int not_flag, int clause_index, int compile_id)
{
struct Maat_hierarchy_group* group=NULL;
struct Maat_hierarchy_literal* literal=NULL;
@@ -543,12 +543,12 @@ int Maat_hierarchy_remove_group_from_compile(struct Maat_hierarchy* hier, int gr
group_id, compile_id);
goto error_out;
}
ret=Maat_hierarchy_literal_leave_clause(literal, Nth_clause, compile_id);
ret=Maat_hierarchy_literal_leave_clause(literal, clause_index, compile_id);
if(ret<0)
{
MESA_handle_runtime_log(hier->logger, RLOG_LV_FATAL, module_maat_hierarchy,
"Remove group %d vt_id %d from clause %d of compile %d failed, clause is not exisited.",
group_id, vt_id, Nth_clause, compile_id);
group_id, vt_id, clause_index, compile_id);
goto error_out;
}
pthread_rwlock_unlock(&hier->rwlock);
@@ -754,18 +754,18 @@ static struct bool_matcher* Maat_hierarchy_build_bool_matcher(struct Maat_hierar
{
HASH_ITER(hh, literal->hash_clause_by_id, clause, tmp_clause)
{
assert(clause->clause_id.Nth_clause<MAX_ITEMS_PER_BOOL_EXPR);
assert(clause->clause_id.clause_index<MAX_ITEMS_PER_BOOL_EXPR);
HASH_FIND(hh, hier->hash_compile_by_id, &clause->clause_id.compile_id, sizeof(clause->clause_id.compile_id), compile);
if(compile)
{
if(compile->clause_states[clause->clause_id.Nth_clause].in_use==1)
if(compile->clause_states[clause->clause_id.clause_index].in_use==1)
{
assert(compile->clause_states[clause->clause_id.Nth_clause].not_flag==clause->not_flag);
assert(compile->clause_states[clause->clause_id.clause_index].not_flag==clause->not_flag);
}
else
{
compile->clause_states[clause->clause_id.Nth_clause].in_use=1;
compile->clause_states[clause->clause_id.Nth_clause].not_flag=clause->not_flag;
compile->clause_states[clause->clause_id.clause_index].in_use=1;
compile->clause_states[clause->clause_id.clause_index].not_flag=clause->not_flag;
}
utarray_push_back(compile->literal_ids, &literal->literal_id);
}
@@ -1101,7 +1101,7 @@ void Maat_hierarchy_compile_mid_udpate(struct Maat_hierarchy_compile_mid* mid, i
}
HASH_ITER(hh, literal->hash_clause_by_id, clause, tmp_clause)
{
ret=insert_clause_id(&mid->all_hit_clause_array, &mid->all_hit_clause_array_sz, mid->all_hit_clause_cnt, TO_CLAUSE_ID(clause->clause_id.Nth_clause, clause->clause_id.compile_id));
ret=insert_clause_id(&mid->all_hit_clause_array, &mid->all_hit_clause_array_sz, mid->all_hit_clause_cnt, TO_CLAUSE_ID(clause->clause_id.clause_index, clause->clause_id.compile_id));
mid->all_hit_clause_cnt+=ret;
}
}

View File

@@ -1440,7 +1440,7 @@ void update_group2compile_rule(struct Maat_table_schema* table, const char* tabl
&(db_g2c_rule.is_valid),
&(db_g2c_rule.not_flag),
virtual_table_name,
&(db_g2c_rule.Nth_clause));
&(db_g2c_rule.clause_index));
if(ret!=6)
{
MESA_handle_runtime_log(logger,RLOG_LV_INFO,maat_module ,
@@ -1466,7 +1466,7 @@ void update_group2compile_rule(struct Maat_table_schema* table, const char* tabl
}
if(db_g2c_rule.is_valid==FALSE)
{
ret=Maat_hierarchy_remove_group_from_compile(scanner->hier, db_g2c_rule.group_id,db_g2c_rule.virtual_table_id, db_g2c_rule.not_flag, db_g2c_rule.Nth_clause, db_g2c_rule.compile_id);
ret=Maat_hierarchy_remove_group_from_compile(scanner->hier, db_g2c_rule.group_id,db_g2c_rule.virtual_table_id, db_g2c_rule.not_flag, db_g2c_rule.clause_index, db_g2c_rule.compile_id);
if(ret==0)
{
table_rt->origin_rule_num--;
@@ -1480,7 +1480,7 @@ void update_group2compile_rule(struct Maat_table_schema* table, const char* tabl
}
else
{
ret=Maat_hierarchy_add_group_to_compile(scanner->hier, db_g2c_rule.group_id,db_g2c_rule.virtual_table_id, db_g2c_rule.not_flag, db_g2c_rule.Nth_clause, db_g2c_rule.compile_id);
ret=Maat_hierarchy_add_group_to_compile(scanner->hier, db_g2c_rule.group_id,db_g2c_rule.virtual_table_id, db_g2c_rule.not_flag, db_g2c_rule.clause_index, db_g2c_rule.compile_id);
if(ret==0)
{
table_rt->origin_rule_num++;

View File

@@ -798,30 +798,40 @@ int write_region_rule(cJSON* region_json, int compile_id, int group_id, iris_des
int write_compile_line(cJSON *compile, struct iris_description_t *p_iris, void * logger)
{
int compile_id=-1,cmd_cnt=0,ret=-1, clause_num=0, group_num=0, i=0, nth_clause=0;
int compile_id=-1,cmd_cnt=0,ret=-1, clause_num=0, group_num=0, i=0, clause_index=0;
cJSON* item=NULL;
struct iris_table_t* table_info=NULL;
cJSON* group_array=NULL, *group_obj=NULL;
int* clause_ids=NULL;
item=cJSON_GetObjectItem(compile,"compile_id");
if(item->type!=cJSON_Number)
{
MESA_handle_runtime_log(logger,RLOG_LV_FATAL,maat_json,
"compile_id format not number.");
return -1;
}
compile_id=item->valueint;
group_array=cJSON_GetObjectItem(compile, "groups");
group_num=cJSON_GetArraySize(group_array);
clause_ids=ALLOC(int, group_num);
cJSON_ArrayForEach(group_obj, group_array);
cJSON_ArrayForEach(group_obj, group_array)
{
item=cJSON_GetObjectItem(compile,"nth_clause");
item=cJSON_GetObjectItem(group_obj, "clause_index");
if(item)
{
nth_clause=item->valueint;
clause_index=item->valueint;
for(i=0; i<clause_num; i++)
{
if(clause_ids[i]==nth_clause)
if(clause_ids[i]==clause_index)
{
break;
}
}
if(i==clause_num)
{
clause_ids[clause_num]=nth_clause;
clause_ids[clause_num]=clause_index;
clause_num++;
}
}
@@ -830,7 +840,7 @@ int write_compile_line(cJSON *compile, struct iris_description_t *p_iris, void *
clause_ids=NULL;
if(clause_num==0)
{
clause_num=cJSON_GetArraySize(group_array);
clause_num=group_num;
}
cJSON_AddNumberToObject(compile, "clause_num", clause_num);
@@ -901,21 +911,13 @@ int write_compile_line(cJSON *compile, struct iris_description_t *p_iris, void *
{
return -1;
}
item=cJSON_GetObjectItem(compile,"compile_id");
if(item->type!=cJSON_Number)
{
MESA_handle_runtime_log(logger,RLOG_LV_FATAL,maat_json,
"compile_id format not number.");
return -1;
}
compile_id=item->valueint;
return compile_id;
}
int write_group2compile_line(int group_id, int compile_id, int group_not_flag, int Nth_clause, const char* virtual_table, struct iris_description_t *p_iris, void * logger)
int write_group2compile_line(int group_id, int compile_id, int group_not_flag, int clause_index, const char* virtual_table, struct iris_description_t *p_iris, void * logger)
{
char buff[1024*4];
struct iris_table_t* table=p_iris->group2compile_table;
snprintf(buff, sizeof(buff), "%d\t%d\t1\t%d\t%s\t%d\n", group_id, compile_id, group_not_flag, virtual_table, Nth_clause);
snprintf(buff, sizeof(buff), "%d\t%d\t1\t%d\t%s\t%d\n", group_id, compile_id, group_not_flag, virtual_table, clause_index);
table->write_pos+=memcat(&(table->buff), table->write_pos, &(table->buff_sz), buff, strlen(buff));
table->line_count++;
return 0;
@@ -1006,7 +1008,7 @@ int write_group_rule(cJSON *group_json, int parent_id, int parent_type, int trac
{
const char* _str_parent_type[2]={"compile", "group"};
int ret=0, i=0;
int group_not_flag=0, Nth_clause=0;
int group_not_flag=0, clause_index=0;
cJSON *region_json=NULL, *item=NULL;
cJSON *sub_groups=NULL, *region_rule=NULL;
const char* group_name=NULL, *virtual_table=NULL;
@@ -1041,14 +1043,14 @@ int write_group_rule(cJSON *group_json, int parent_id, int parent_type, int trac
{
group_not_flag=item->valueint;
}
item=cJSON_GetObjectItem(group_json,"Nth_clause");
item=cJSON_GetObjectItem(group_json,"clause_index");
if(item==NULL||item->type!=cJSON_Number)
{
Nth_clause=Nth_group;
clause_index=Nth_group;
}
else
{
Nth_clause=item->valueint;
clause_index=item->valueint;
}
}
else
@@ -1097,7 +1099,7 @@ int write_group_rule(cJSON *group_json, int parent_id, int parent_type, int trac
}
if(parent_type==PARENT_TYPE_COMPILE)
{
ret=write_group2compile_line(group_info->group_id, parent_id, group_not_flag, Nth_clause, virtual_table, p_iris, logger);
ret=write_group2compile_line(group_info->group_id, parent_id, group_not_flag, clause_index, virtual_table, p_iris, logger);
}
else
{

View File

@@ -38,8 +38,8 @@ void* Maat_hierarchy_compile_read_user_data(struct Maat_hierarchy* hier, int com
void* Maat_hierarchy_region_dettach_user_data(struct Maat_hierarchy* hier, int region_id);
int Maat_hierarchy_add_group_to_compile(struct Maat_hierarchy* hier, int group_id, int vt_id, int not_flag, int Nth_clause, int compile_id);
int Maat_hierarchy_remove_group_from_compile(struct Maat_hierarchy* hier, int group_id, int vt_id, int not_flag, int Nth_clause, int compile_id);
int Maat_hierarchy_add_group_to_compile(struct Maat_hierarchy* hier, int group_id, int vt_id, int not_flag, int clause_index, int compile_id);
int Maat_hierarchy_remove_group_from_compile(struct Maat_hierarchy* hier, int group_id, int vt_id, int not_flag, int clause_index, int compile_id);
int Maat_hierarchy_add_group_to_group(struct Maat_hierarchy* hier, int group_id, int superior_group_id);
int Maat_hierarchy_remove_group_from_group(struct Maat_hierarchy* hier, int group_id, int superior_group_id);

View File

@@ -115,7 +115,7 @@ struct db_group2compile_rule
int is_valid;
int not_flag;
int virtual_table_id;
int Nth_clause;
int clause_index;
};
struct db_group_rule_t
{

View File

@@ -1786,7 +1786,7 @@
"group_name":"ipv4_composition.session",
"virtual_table":"COMPOSITION_IP_SESSION",
"not_flag":0,
"nth_clause":1
"clause_index":1
}
]
@@ -1804,25 +1804,25 @@
"group_name":"ASN1234",
"virtual_table":"SOURCE_IP_ASN",
"not_flag":0,
"nth_clause":1
"clause_index":0
},
{
"group_name":"financial-department-ip",
"virtual_table":"null",
"not_flag":0,
"nth_clause":1
"clause_index":0
},
{
"group_name":"Country-Sparta-IP",
"virtual_table":"SOURCE_IP_GEO",
"not_flag":0,
"nth_clause":1
"clause_index":0
},
{
"group_name":"ASN2345",
"virtual_table":"DESTINATION_IP_ASN",
"not_flag":0,
"nth_clause":2
"clause_index":1
}
]
}

View File

@@ -54,4 +54,4 @@
31 SOURCE_IP_ASN virtual AS_NUMBER --
32 DESTINATION_IP_ASN virtual AS_NUMBER --
33 GeoLocation expr UTF8 UTF8 yes 0
34 SOURCE_IP_GEO virtual AS_NUMBER --
34 SOURCE_IP_GEO virtual GeoLocation --

View File

@@ -2103,7 +2103,7 @@ int test_add_expr_command(Maat_feather_t feather,const char* region_table,int co
g2c.group_id=Maat_cmd_get_new_group_id(feather);
g2c.table_name="GROUP2COMPILE";
g2c.compile_id=config_id;
g2c.Nth_clause=1;
g2c.clause_index=1;
Maat_command_raw_set_group2compile(feather, MAAT_OP_ADD, &g2c);
Maat_command_raw_set_region(feather, MAAT_OP_ADD, &region, g2c.group_id);
return 0;
@@ -2140,7 +2140,7 @@ TEST_F(MaatCmdTest, SetIP)
memset(&g2c, 0, sizeof(g2c));
g2c.group_id=Maat_cmd_get_new_group_id(feather);
g2c.compile_id=compile.config_id;
g2c.Nth_clause=1;
g2c.clause_index=1;
g2c.table_name="GROUP2COMPILE";
Maat_command_raw_set_group2compile(feather, MAAT_OP_ADD, &g2c);
@@ -2401,7 +2401,7 @@ TEST_F(MaatCmdTest, SubGroup)
group1.group_id=Maat_cmd_get_new_group_id(feather);
group1.table_name=g2c_tn;
group1.compile_id=compile1.config_id;
group1.Nth_clause=1;
group1.clause_index=1;
group1.not_flag=0;
group1.virtual_table_name="null";
Maat_command_raw_set_group2compile(feather, MAAT_OP_ADD, &group1);
@@ -2651,7 +2651,7 @@ TEST_F(MaatCmdTest, VirtualTable)
group1.table_name=g2c_tn;
group1.virtual_table_name="HTTP_REQUEST_HEADER";
group1.compile_id=compile1.config_id;
group1.Nth_clause=1;
group1.clause_index=1;
Maat_command_raw_set_group2compile(feather, MAAT_OP_ADD, &group1);
@@ -2673,7 +2673,7 @@ TEST_F(MaatCmdTest, VirtualTable)
group2.table_name=g2c_tn;
group2.virtual_table_name="HTTP_RESPONSE_HEADER";
group2.compile_id=compile1.config_id;
group2.Nth_clause=2;
group2.clause_index=2;
Maat_command_raw_set_group2compile(feather, MAAT_OP_ADD, &group2);
@@ -3094,7 +3094,7 @@ TEST_F(MaatCmdTest, HitPath)
group1.table_name=g2c_tn;
group1.virtual_table_name="HTTP_REQUEST_HEADER";
group1.compile_id=compile1.config_id;
group1.Nth_clause=1;
group1.clause_index=1;
Maat_command_raw_set_group2compile(feather, MAAT_OP_ADD, &group1);
@@ -3119,7 +3119,7 @@ TEST_F(MaatCmdTest, HitPath)
group21.table_name=g2c_tn;
group21.virtual_table_name="HTTP_RESPONSE_HEADER";
group21.compile_id=compile1.config_id;
group21.Nth_clause=2;
group21.clause_index=2;
Maat_command_raw_set_group2compile(feather, MAAT_OP_ADD, &group21);