Perf: yyjson replaces cjson

This commit is contained in:
liuxueli
2024-06-27 01:44:07 +00:00
parent e24a7a6fb4
commit da0a82039f
21 changed files with 17620 additions and 284 deletions

View File

@@ -29,7 +29,6 @@ struct dns_decoder_test_plugin_env
int topic_id;
int result_index;
int commit_result_enable;
int write_result_enable;
int decode_resource_record_enable;
int export_resource_record_enable;
};
@@ -64,51 +63,40 @@ void dns_decoder_test_message_cb(struct session *ss, int topic_id, const void *m
return ;
}
cJSON *real_result=cJSON_CreateObject();
cJSON_AddStringToObject(real_result, "Tuple4", session_get0_readable_addr(ss));
uint16_t n_question=0;
struct dns_query_question *question=NULL;
dns_message_query_question_get0(dns_msg, &question, &n_question);
if(n_question>0 && question!=NULL)
{
cJSON_AddStringToObject(real_result, "dns_qname", dns_query_question_qname_get0(question));
cJSON_AddNumberToObject(real_result, "dns_qtype", dns_query_question_qtype_get0(question));
cJSON_AddNumberToObject(real_result, "dns_qclass", dns_query_question_qclass_get0(question));
}
struct dns_flag *flag=dns_message_header_flag_get0(dns_msg);
if(flag!=NULL)
{
cJSON_AddNumberToObject(real_result, "dns_qr", (double)(flag->qr));
cJSON_AddNumberToObject(real_result, "dns_opcode", (double)(flag->opcode));
cJSON_AddNumberToObject(real_result, "dns_rd", (double)(flag->rd));
}
const char *resource_record_str=dns_message_resource_record_json_exporter(dns_msg);
if(resource_record_str!=NULL)
{
cJSON *rr_array=cJSON_Parse(resource_record_str);
cJSON_AddItemToObject(real_result, "rr", rr_array);
}
if(plugin_env->write_result_enable==1)
{
char *real_result_str=cJSON_Print(real_result);
dns_real_result_write_file(real_result_str);
free(real_result_str);
}
if(plugin_env->commit_result_enable==1)
{
cJSON *real_result=cJSON_CreateObject();
cJSON_AddStringToObject(real_result, "Tuple4", session_get0_readable_addr(ss));
uint16_t n_question=0;
struct dns_query_question *question=NULL;
dns_message_query_question_get0(dns_msg, &question, &n_question);
if(n_question>0 && question!=NULL)
{
cJSON_AddStringToObject(real_result, "dns_qname", dns_query_question_qname_get0(question));
cJSON_AddNumberToObject(real_result, "dns_qtype", dns_query_question_qtype_get0(question));
cJSON_AddNumberToObject(real_result, "dns_qclass", dns_query_question_qclass_get0(question));
}
struct dns_flag *flag=dns_message_header_flag_get0(dns_msg);
if(flag!=NULL)
{
cJSON_AddNumberToObject(real_result, "dns_qr", (double)(flag->qr));
cJSON_AddNumberToObject(real_result, "dns_opcode", (double)(flag->opcode));
cJSON_AddNumberToObject(real_result, "dns_rd", (double)(flag->rd));
}
const char *resource_record_str=dns_message_resource_record_json_exporter(dns_msg);
if(resource_record_str!=NULL)
{
cJSON *rr_array=cJSON_Parse(resource_record_str);
cJSON_AddItemToObject(real_result, "rr", rr_array);
}
char result_name[16]="";
sprintf(result_name, "DNS_RESULT_%d", plugin_env->result_index++);
commit_test_result_json(real_result, result_name);
}
else
{
cJSON_Delete(real_result);
}
}
void *dns_decoder_test_per_session_context_new(struct session *sess, void *plugin_env)
@@ -183,31 +171,16 @@ int32_t dns_decoder_test_config_load(const char *cfg_path, struct dns_decoder_te
}
}
toml_datum_t write_result_enable_val=toml_string_in(test_tbl, "write_result_enable");
if(write_result_enable_val.ok==0)
{
plugin_env->write_result_enable=0;
fprintf(stderr, "[%s:%d] config file: %s has no key: [decoder.dns.test.write_result_enable]", __FUNCTION__, __LINE__, cfg_path);
}
else
{
if(memcmp("no", write_result_enable_val.u.s, strlen("no"))==0)
{
plugin_env->write_result_enable=0;
}
else if(memcmp("yes", write_result_enable_val.u.s, strlen("yes"))==0)
{
plugin_env->write_result_enable=1;
}
else
{
plugin_env->write_result_enable=1;
fprintf(stderr, "[%s:%d] config file: %s key: [decoder.dns.test.write_result_enable] value is not yes or no", __FUNCTION__, __LINE__, cfg_path);
}
}
toml_table_t *perf_tbl=toml_table_in(test_tbl, "perf");
if(NULL==perf_tbl)
{
fprintf(stderr, "[%s:%d] config file: %s has no key: [decoder.dns.test.perf]", __FUNCTION__, __LINE__, cfg_path);
toml_free(root);
return -1;
}
// decode_resource_record_enable
toml_datum_t decode_resource_record_enable_val=toml_string_in(test_tbl, "decode_resource_record_enable");
toml_datum_t decode_resource_record_enable_val=toml_string_in(perf_tbl, "decode_resource_record_enable");
if(decode_resource_record_enable_val.ok==0)
{
plugin_env->decode_resource_record_enable=0;
@@ -231,7 +204,7 @@ int32_t dns_decoder_test_config_load(const char *cfg_path, struct dns_decoder_te
}
// export_resource_record_enable
toml_datum_t export_resource_record_enable_val=toml_string_in(test_tbl, "export_resource_record_enable");
toml_datum_t export_resource_record_enable_val=toml_string_in(perf_tbl, "export_resource_record_enable");
if(export_resource_record_enable_val.ok==0)
{
plugin_env->export_resource_record_enable=0;