Feature: performance test case

This commit is contained in:
liuxueli
2024-06-19 01:59:53 +00:00
parent 3ceb026983
commit bfc54a6289
9 changed files with 384 additions and 62 deletions

View File

@@ -31,6 +31,8 @@ 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;
};
extern "C" int commit_test_result_json(cJSON *node, const char *name);
@@ -304,25 +306,28 @@ void dns_decoder_test_message_cb(struct session *ss, int topic_id, const void *m
cJSON_AddNumberToObject(real_result, "dns_rd", (double)(flag->rd));
}
cJSON *rr_object=cJSON_CreateObject();
uint16_t n_answer_rr=0;
struct dns_resource_record *answer_rr=NULL;
dns_message_answer_resource_record_get0(dns_msg, &answer_rr, &n_answer_rr);
if(plugin_env->decode_resource_record_enable==1)
{
cJSON *rr_object=cJSON_CreateObject();
uint16_t n_answer_rr=0;
struct dns_resource_record *answer_rr=NULL;
dns_message_answer_resource_record_get0(dns_msg, &answer_rr, &n_answer_rr);
uint16_t n_authority_rr=0;
struct dns_resource_record *authority_rr=NULL;
dns_message_authority_resource_record_get0(dns_msg, &authority_rr, &n_authority_rr);
uint16_t n_authority_rr=0;
struct dns_resource_record *authority_rr=NULL;
dns_message_authority_resource_record_get0(dns_msg, &authority_rr, &n_authority_rr);
uint16_t n_additional_rr=0;
struct dns_resource_record *additional_rr=NULL;
dns_message_additional_resource_record_get0(dns_msg, &additional_rr, &n_additional_rr);
uint16_t n_additional_rr=0;
struct dns_resource_record *additional_rr=NULL;
dns_message_additional_resource_record_get0(dns_msg, &additional_rr, &n_additional_rr);
int dns_sec=1;
dns_resource_record_json_exporter(rr_object, answer_rr, n_answer_rr, "answer", &dns_sec);
dns_resource_record_json_exporter(rr_object, authority_rr, n_authority_rr, "authority", &dns_sec);
dns_resource_record_json_exporter(rr_object, additional_rr, n_additional_rr, "additional", &dns_sec);
int dns_sec=1;
dns_resource_record_json_exporter(rr_object, answer_rr, n_answer_rr, "answer", &dns_sec);
dns_resource_record_json_exporter(rr_object, authority_rr, n_authority_rr, "authority", &dns_sec);
dns_resource_record_json_exporter(rr_object, additional_rr, n_additional_rr, "additional", &dns_sec);
cJSON_AddItemToObject(real_result, "rr", rr_object);
cJSON_AddItemToObject(real_result, "rr", rr_object);
}
char result_name[16]="";
sprintf(result_name, "DNS_RESULT_%d", plugin_env->result_index++);
@@ -351,7 +356,6 @@ void dns_decoder_test_per_session_context_free(struct session *sess, void *sessi
}
int32_t dns_decoder_test_config_load(const char *cfg_path, struct dns_decoder_test_plugin_env *plugin_env)
{
FILE *fp=fopen(cfg_path, "r");
@@ -412,7 +416,53 @@ int32_t dns_decoder_test_config_load(const char *cfg_path, struct dns_decoder_te
plugin_env->commit_result_enable=1;
fprintf(stderr, "[%s:%d] config file: %s key: [decoder.dns.test.commit_result_enable] value is not yes or no", __FUNCTION__, __LINE__, cfg_path);
}
}
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);
}
}
// decode_resource_record_enable
toml_datum_t decode_resource_record_enable_val=toml_string_in(test_tbl, "decode_resource_record_enable");
if(decode_resource_record_enable_val.ok==0)
{
plugin_env->decode_resource_record_enable=0;
fprintf(stderr, "[%s:%d] config file: %s has no key: [decoder.dns.test.decode_resource_record_enable]", __FUNCTION__, __LINE__, cfg_path);
}
else
{
if(memcmp("no", decode_resource_record_enable_val.u.s, strlen("no"))==0)
{
plugin_env->decode_resource_record_enable=0;
}
else if(memcmp("yes", decode_resource_record_enable_val.u.s, strlen("yes"))==0)
{
plugin_env->decode_resource_record_enable=1;
}
else
{
plugin_env->decode_resource_record_enable=1;
fprintf(stderr, "[%s:%d] config file: %s key: [decoder.dns.test.decode_resource_record_enable] value is not yes or no", __FUNCTION__, __LINE__, cfg_path);
}
}
toml_free(root);