summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorfumingwei <[email protected]>2023-05-04 17:14:26 +0800
committerfumingwei <[email protected]>2023-05-11 20:20:44 +0800
commite414bbf8a5255b6af6f22a3fd99331aec239c8c8 (patch)
treeff2b8e9d87798bbeee7d0574549aa60f8b6ef81d /test
parenta31d2c750f1b3fa2a0b718505ae528232cab19a3 (diff)
feature:1.修改文件输出格式2.新增设置metric ratio和invisible属性接口
Diffstat (limited to 'test')
-rw-r--r--test/src/CMakeLists.txt5
-rw-r--r--test/src/gtest_dynamic_fieldstat.cpp12
-rw-r--r--test/src/gtest_dynamic_fieldstat_output.cpp4
-rw-r--r--test/src/gtest_fieldstat_interface.cpp201
-rw-r--r--test/src/gtest_fieldstat_output.cpp271
-rw-r--r--test/src/gtest_fieldstat_output_file_instance.cpp236
6 files changed, 597 insertions, 132 deletions
diff --git a/test/src/CMakeLists.txt b/test/src/CMakeLists.txt
index 044eb5d..03311e2 100644
--- a/test/src/CMakeLists.txt
+++ b/test/src/CMakeLists.txt
@@ -16,4 +16,7 @@ add_executable(gtest_dynamic_fieldstat ${SRC} gtest_dynamic_fieldstat.cpp)
target_link_libraries(gtest_dynamic_fieldstat gtest-static)
add_executable(gtest_dynamic_fieldstat_output ${SRC} gtest_dynamic_fieldstat_output.cpp)
-target_link_libraries(gtest_dynamic_fieldstat_output gtest-static) \ No newline at end of file
+target_link_libraries(gtest_dynamic_fieldstat_output gtest-static)
+
+add_executable(gtest_fieldstat_output_file_instance ${SRC} gtest_fieldstat_output_file_instance.cpp)
+target_link_libraries(gtest_fieldstat_output_file_instance gtest-static) \ No newline at end of file
diff --git a/test/src/gtest_dynamic_fieldstat.cpp b/test/src/gtest_dynamic_fieldstat.cpp
index c58d4f3..748ed15 100644
--- a/test/src/gtest_dynamic_fieldstat.cpp
+++ b/test/src/gtest_dynamic_fieldstat.cpp
@@ -1766,7 +1766,7 @@ TEST(FeildStatDynamicAPI, FieldStatDynamicInstanceIncrbyMultiMetric)
{
int ret = 0;
int n_thread = 64;
- int n_loops = 1000;
+ int n_loops = 100;
struct dynamic_metric *dyn_metric, *tmp_dyn_metric;
struct dynamic_metric **head = NULL;
@@ -1909,7 +1909,7 @@ TEST(FeildStatDynamicAPI, FieldStatDynamicInstanceDecrbyMultiMetric)
{
int ret = 0;
int n_thread = 64;
- int n_loops = 1000;
+ int n_loops = 100;
struct dynamic_metric *dyn_metric, *tmp_dyn_metric;
struct dynamic_metric **head = NULL;
@@ -2053,7 +2053,7 @@ TEST(FeildStatDynamicAPI, FieldStatDynamicInstanceSetMultiMetric)
{
int ret = 0;
int n_thread = 64;
- int n_loops = 1000;
+ int n_loops = 100;
struct dynamic_metric *dyn_metric, *tmp_dyn_metric;
struct dynamic_metric **head = NULL;
@@ -2202,7 +2202,7 @@ TEST(FeildStatDynamicAPI, FieldStatDynamicInstanceMultiIncrbyMultiMetric)
{
int ret = 0;
int n_thread = 64;
- int n_loops = 1000;
+ int n_loops = 100;
struct dynamic_metric *dyn_metric, *tmp_dyn_metric;
struct dynamic_metric **head = NULL;
@@ -2348,7 +2348,7 @@ TEST(FeildStatDynamicAPI, FieldStatDynamicInstanceMultiDecrbyMultiMetric)
{
int ret = 0;
int n_thread = 64;
- int n_loops = 1000;
+ int n_loops = 100;
struct dynamic_metric *dyn_metric, *tmp_dyn_metric;
struct dynamic_metric **head = NULL;
@@ -2493,7 +2493,7 @@ TEST(FeildStatDynamicAPI, FieldStatDynamicInstanceMultiSetMultiMetric)
{
int ret = 0;
int n_thread = 64;
- int n_loops = 1000;
+ int n_loops = 100;
struct dynamic_metric *dyn_metric, *tmp_dyn_metric;
struct dynamic_metric **head = NULL;
diff --git a/test/src/gtest_dynamic_fieldstat_output.cpp b/test/src/gtest_dynamic_fieldstat_output.cpp
index fb066c4..eb694bd 100644
--- a/test/src/gtest_dynamic_fieldstat_output.cpp
+++ b/test/src/gtest_dynamic_fieldstat_output.cpp
@@ -73,9 +73,7 @@ TEST(FeildStatDynamicAPI, FieldStatDynamicInstanceMultiIncrby)
{
int ret = 0;
int n_thread = 64;
- int n_loops = 100000;
-
- long long value = 0;
+ int n_loops = 10000;
const char *column_name[] = {"packages", "bytes"};
enum field_type column_type[] = {FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER};
diff --git a/test/src/gtest_fieldstat_interface.cpp b/test/src/gtest_fieldstat_interface.cpp
index 558f267..58a5128 100644
--- a/test/src/gtest_fieldstat_interface.cpp
+++ b/test/src/gtest_fieldstat_interface.cpp
@@ -332,7 +332,208 @@ TEST(FeildStatAPI, FieldStatLineProtocolOutputTableMetric)
EXPECT_EQ(n_line, n_loops);
fieldstat_instance_free(instance);
+}
+
+TEST(FeildStatAPI, SetMetricRatioPara)
+{
+ int ret = 0;
+ struct fieldstat_instance * instance = NULL;
+ int table_id = -1;
+ int output_metric_ids[10] = {0};
+ FILE *fp;
+ int n_line = 0;
+ int n_loops = 5;
+ char line[2048] = {0};
+ cJSON *cjson_metric = NULL;
+ cJSON *cjson_tags = NULL;
+ char *cjson_metric_str = NULL;
+
+ const char *output_file_path = "/tmp/fieldstat.txt";
+ const char *output_telegraf_path = "/tmp/metrics.out";
+ const char *table_column_name[] = {"rule", "reg/v6", "stream", "IN_Bps", "cpu_us", "PROC_Bps", "IN_Tps", "PROC_Tps","hit_cnt", "hit_rate"};
+ const char *compared_file_output = "Sum 0"
+ " 0 0.00e+00 5.00e+02"
+ " 5.00e+00 5.00e+01 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00\n";
+
+ const char *compare = "{\"fields\":{\"IN_Bps\":1000,\"IN_Tps\":0,\"PROC_Tps\":0,\"cpu_us\":10,"
+ "\"hit_cnt\":0,\"hit_rate\":0,\"reg/v6\":0,\"rule\":0,\"stream\":0},"
+ "\"name\":\"Sum\",\"tags\":{\"app_name\":\"maat\",\"table_name\":\"maat_info\"}}";
+
+
+ enum field_type table_column_type[10] = {FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE, FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER};
+
+ instance = fieldstat_instance_new("maat");
+ EXPECT_STREQ("maat", instance->name);
+
+ table_id = fieldstat_register_table(instance, "maat_info", table_column_name, table_column_type, sizeof(table_column_name)/sizeof(table_column_name[0]));
+ EXPECT_EQ(0, table_id);
+ ret = fieldstat_register_table_row(instance, table_id, "Sum", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_set_metric_ratio_para(instance, output_metric_ids[5], output_metric_ids[3], output_metric_ids[4], 1);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_set_local_output(instance, output_file_path, "default");
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_set_line_protocol_server(instance, "127.0.0.1", 8600);
+ EXPECT_EQ(0, ret);
+ ret = system("cat /dev/null > /tmp/metrics.out");
+ EXPECT_EQ(0, ret);
+ fieldstat_instance_start(instance);
+ fieldstat_value_incrby(instance, output_metric_ids[3], 1000);
+ fieldstat_value_incrby(instance, output_metric_ids[4], 10);
+ sleep(3);
+
+ fp = fopen("/tmp/fieldstat.txt", "r");
+ EXPECT_NE(nullptr, fp);
+
+ while(!feof(fp))
+ {
+ if(NULL == fgets(line, sizeof(line), fp))
+ {
+ continue;
+ }
+ if(n_line == 3)
+ {
+ EXPECT_STREQ(compared_file_output, line);
+ }
+ n_line++;
+ }
+ fclose(fp);
+ EXPECT_EQ(n_line, n_loops);
+
+ fp = fopen(output_telegraf_path, "r");
+ EXPECT_NE(nullptr, fp);
+ n_line = 0;
+
+ while(!feof(fp))
+ {
+ if(NULL == fgets(line, sizeof(line), fp))
+ {
+ continue;
+ }
+ cjson_metric = cJSON_Parse(line);
+ EXPECT_NE(nullptr, cjson_metric);
+ cJSON_DeleteItemFromObject(cjson_metric, "timestamp");
+
+ cjson_tags = cJSON_GetObjectItem(cjson_metric, "tags");
+ EXPECT_NE(nullptr, cjson_tags);
+ cJSON_DeleteItemFromObject(cjson_tags, "host");
+ cjson_metric_str = cJSON_PrintUnformatted(cjson_metric);
+ EXPECT_NE(nullptr, cjson_metric_str);
+ if(cjson_metric_str)
+ {
+ EXPECT_STREQ(compare, cjson_metric_str);
+ free(cjson_metric_str);
+ cjson_metric_str = NULL;
+ }
+ cJSON_Delete(cjson_metric);
+ n_line++;
+ }
+ fclose(fp);
+
+ fieldstat_instance_free(instance);
+}
+
+TEST(FeildStatAPI, SetMetricInvisible)
+{
+ int ret = 0;
+ struct fieldstat_instance * instance = NULL;
+ int table_id = -1;
+ int output_metric_ids[10] = {0};
+ FILE *fp;
+ int n_line = 0;
+ int n_loops = 5;
+ char line[2048] = {0};
+ cJSON *cjson_metric = NULL;
+ cJSON *cjson_tags = NULL;
+ char *cjson_metric_str = NULL;
+
+ const char *output_file_path = "/tmp/fieldstat.txt";
+ const char *output_telegraf_path = "/tmp/metrics.out";
+ const char *table_column_name[] = {"rule", "reg/v6", "stream", "IN_Bps", "cpu_us", "PROC_Bps", "IN_Tps", "PROC_Tps","hit_cnt", "hit_rate"};
+ const char *compared_file_output = "Sum "
+ " 0 0 0.00e+00"
+ " 5.00e+02 5.00e+01 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00\n";
+
+ const char *compare = "{\"fields\":{\"IN_Bps\":1000,\"IN_Tps\":0,\"PROC_Tps\":0,"
+ "\"hit_cnt\":0,\"hit_rate\":0,\"reg/v6\":0,\"rule\":0,\"stream\":0},"
+ "\"name\":\"Sum\",\"tags\":{\"app_name\":\"maat\",\"table_name\":\"maat_info\"}}";
+
+
+ enum field_type table_column_type[10] = {FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE, FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER};
+
+ instance = fieldstat_instance_new("maat");
+ EXPECT_STREQ("maat", instance->name);
+
+ table_id = fieldstat_register_table(instance, "maat_info", table_column_name, table_column_type, sizeof(table_column_name)/sizeof(table_column_name[0]));
+ EXPECT_EQ(0, table_id);
+ ret = fieldstat_register_table_row(instance, table_id, "Sum", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_set_metric_ratio_para(instance, output_metric_ids[5], output_metric_ids[3], output_metric_ids[4], 1);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_set_metric_invisible_para(instance, output_metric_ids[4]);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_set_local_output(instance, output_file_path, "default");
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_set_line_protocol_server(instance, "127.0.0.1", 8600);
+ EXPECT_EQ(0, ret);
+ ret = system("cat /dev/null > /tmp/metrics.out");
+ EXPECT_EQ(0, ret);
+ fieldstat_instance_start(instance);
+ fieldstat_value_incrby(instance, output_metric_ids[3], 1000);
+ fieldstat_value_incrby(instance, output_metric_ids[4], 10);
+ sleep(3);
+
+ fp = fopen("/tmp/fieldstat.txt", "r");
+ EXPECT_NE(nullptr, fp);
+
+ while(!feof(fp))
+ {
+ if(NULL == fgets(line, sizeof(line), fp))
+ {
+ continue;
+ }
+ if(n_line == 3)
+ {
+ EXPECT_STREQ(compared_file_output, line);
+ }
+ n_line++;
+ }
+ fclose(fp);
+ EXPECT_EQ(n_line, n_loops);
+
+ fp = fopen(output_telegraf_path, "r");
+ EXPECT_NE(nullptr, fp);
+ n_line = 0;
+
+ while(!feof(fp))
+ {
+ if(NULL == fgets(line, sizeof(line), fp))
+ {
+ continue;
+ }
+ cjson_metric = cJSON_Parse(line);
+ EXPECT_NE(nullptr, cjson_metric);
+ cJSON_DeleteItemFromObject(cjson_metric, "timestamp");
+
+ cjson_tags = cJSON_GetObjectItem(cjson_metric, "tags");
+ EXPECT_NE(nullptr, cjson_tags);
+ cJSON_DeleteItemFromObject(cjson_tags, "host");
+ cjson_metric_str = cJSON_PrintUnformatted(cjson_metric);
+ EXPECT_NE(nullptr, cjson_metric_str);
+ if(cjson_metric_str)
+ {
+ EXPECT_STREQ(compare, cjson_metric_str);
+ free(cjson_metric_str);
+ cjson_metric_str = NULL;
+ }
+ cJSON_Delete(cjson_metric);
+ n_line++;
+ }
+ fclose(fp);
+ fieldstat_instance_free(instance);
}
diff --git a/test/src/gtest_fieldstat_output.cpp b/test/src/gtest_fieldstat_output.cpp
index 9ae18de..852ad10 100644
--- a/test/src/gtest_fieldstat_output.cpp
+++ b/test/src/gtest_fieldstat_output.cpp
@@ -10,7 +10,7 @@ extern struct prometheus_endpoint_instance g_prometheus_endpoint_instance;
TEST(FeildStatOutput, OutputFile)
{
int ret = 0;
- int n_loops = 4;
+ int n_loops = 5;
struct fieldstat_instance * instance = NULL;
int table_id = -1;
FILE *fp;
@@ -19,33 +19,37 @@ TEST(FeildStatOutput, OutputFile)
int output_metric_ids[54] = {0};
const char *output_file_path = "/tmp/fieldstat.txt";
- const char *table_column = "network_activity new_conn_num established_conn_num"
- " close_conn_num total_in_bytes total_out_bytes total_in_packets "
- "total_out_packets default_conn_num default_in_bytes default_out_bytes "
- "default_in_packets default_out_packets allow_conn_num allow_in_bytes "
- "allow_out_bytes allow_in_packets allow_out_packets deny_conn_num "
- "deny_in_bytes deny_out_bytes deny_in_packets deny_out_packets monitor_conn_num "
- "monitor_in_bytes monitor_out_bytes monitor_in_packets monitor_out_packets intercept_conn_num "
- "intercept_in_bytes intercept_out_bytes intercept_in_packets intercept_out_packets "
- "ipv4_in_packets ipv4_in_bytes ipv4_out_packetsipv4_out_bytes ipv6_in_packets ipv6_in_bytes "
- "ipv6_out_packets ipv6_out_bytes tcp_conn_num tcp_in_packets tcp_in_bytes tcp_out_packets "
- "tcp_out_bytes udp_conn_num udp_in_packets udp_in_bytes udp_out_packets udp_out_bytes "
- "alert_bytes block_bytes pinning_num maybe_pinning_num not_pinning_num\n";
+ const char *compared_table_name = "table name: network_activity\n";
+ const char *compared_table_column = " new_conn_num established_conn_nu"
+ " close_conn_num total_in_bytes total_out_bytes total_in_packets"
+ " total_out_packets default_conn_num default_in_bytes default_out_bytes"
+ " default_in_packets default_out_packets allow_conn_num allow_in_bytes"
+ " allow_out_bytes allow_in_packets allow_out_packets deny_conn_num"
+ " deny_in_bytes deny_out_bytes deny_in_packets deny_out_packets"
+ " monitor_conn_num monitor_in_bytes monitor_out_bytes monitor_in_packets"
+ " monitor_out_packets intercept_conn_num intercept_in_bytes intercept_out_bytes"
+ " intercept_in_packet intercept_out_packe ipv4_in_packets ipv4_in_bytes"
+ " ipv4_out_packetsipv ipv6_in_packets ipv6_in_bytes ipv6_out_packets"
+ " ipv6_out_bytes tcp_conn_num tcp_in_packets tcp_in_bytes"
+ " tcp_out_packets tcp_out_bytes udp_conn_num udp_in_packets"
+ " udp_in_bytes udp_out_packets udp_out_bytes alert_bytes"
+ " block_bytes pinning_num maybe_pinning_num not_pinning_num\n";
- const char *table_row_value = "TRAFFIC 1000 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 \n";
+ const char *compared_table_row_value = "TRAFFIC 5.00e+02 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00\n";
+
const char *table_column_name[] = {"new_conn_num", "established_conn_num", "close_conn_num", "total_in_bytes", "total_out_bytes", "total_in_packets",
"total_out_packets", "default_conn_num", "default_in_bytes", "default_out_bytes", "default_in_packets", "default_out_packets", "allow_conn_num",
@@ -81,11 +85,15 @@ TEST(FeildStatOutput, OutputFile)
}
if(n_line == 1)
{
- EXPECT_STREQ(table_column, read_line_buf);
+ EXPECT_STREQ(compared_table_name, read_line_buf);
}
if(n_line == 2)
{
- EXPECT_STREQ(table_row_value, read_line_buf);
+ EXPECT_STREQ(compared_table_column, read_line_buf);
+ }
+ if(n_line == 3)
+ {
+ EXPECT_STREQ(compared_table_row_value, read_line_buf);
}
n_line++;
}
@@ -259,34 +267,36 @@ TEST(FeildStatOutput, OutputFileAndLineProtocol)
cJSON *cjson_tags = NULL;
const char *output_file_path = "/tmp/fieldstat.txt";
- const char *table_column = "network_activity new_conn_num established_conn_num"
- " close_conn_num total_in_bytes total_out_bytes total_in_packets "
- "total_out_packets default_conn_num default_in_bytes default_out_bytes "
- "default_in_packets default_out_packets allow_conn_num allow_in_bytes "
- "allow_out_bytes allow_in_packets allow_out_packets deny_conn_num "
- "deny_in_bytes deny_out_bytes deny_in_packets deny_out_packets monitor_conn_num "
- "monitor_in_bytes monitor_out_bytes monitor_in_packets monitor_out_packets intercept_conn_num "
- "intercept_in_bytes intercept_out_bytes intercept_in_packets intercept_out_packets "
- "ipv4_in_packets ipv4_in_bytes ipv4_out_packetsipv4_out_bytes ipv6_in_packets ipv6_in_bytes "
- "ipv6_out_packets ipv6_out_bytes tcp_conn_num tcp_in_packets tcp_in_bytes tcp_out_packets "
- "tcp_out_bytes udp_conn_num udp_in_packets udp_in_bytes udp_out_packets udp_out_bytes "
- "alert_bytes block_bytes pinning_num maybe_pinning_num not_pinning_num\n";
+ const char *compared_table_name = "table name: network_activity\n";
+ const char *compared_table_column = " new_conn_num established_conn_nu"
+ " close_conn_num total_in_bytes total_out_bytes total_in_packets"
+ " total_out_packets default_conn_num default_in_bytes default_out_bytes"
+ " default_in_packets default_out_packets allow_conn_num allow_in_bytes"
+ " allow_out_bytes allow_in_packets allow_out_packets deny_conn_num"
+ " deny_in_bytes deny_out_bytes deny_in_packets deny_out_packets"
+ " monitor_conn_num monitor_in_bytes monitor_out_bytes monitor_in_packets"
+ " monitor_out_packets intercept_conn_num intercept_in_bytes intercept_out_bytes"
+ " intercept_in_packet intercept_out_packe ipv4_in_packets ipv4_in_bytes"
+ " ipv4_out_packetsipv ipv6_in_packets ipv6_in_bytes ipv6_out_packets"
+ " ipv6_out_bytes tcp_conn_num tcp_in_packets tcp_in_bytes"
+ " tcp_out_packets tcp_out_bytes udp_conn_num udp_in_packets"
+ " udp_in_bytes udp_out_packets udp_out_bytes alert_bytes"
+ " block_bytes pinning_num maybe_pinning_num not_pinning_num\n";
- const char *table_row_value = "TRAFFIC 1000 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 \n";
-
+ const char *compared_table_row_value = "TRAFFIC 5.00e+02 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00\n";
const char *compare = "{\"fields\":{\"alert_bytes\":0,\"allow_conn_num\":0,\"allow_in_bytes\":0,\"allow_in_packets\":0,\"allow_out_bytes\":0,"\
"\"allow_out_packets\":0,\"block_bytes\":0,\"close_conn_num\":0,\"default_conn_num\":0,\"default_in_bytes\":0,"\
@@ -327,7 +337,7 @@ TEST(FeildStatOutput, OutputFileAndLineProtocol)
EXPECT_EQ(12, instance->output_type);
ret = system("cat /dev/null > /tmp/metrics.out");
- ret = system("cat /dev/null > /tmp/fieldstat.txt");
+ //ret = system("cat /dev/null > /tmp/fieldstat.txt");
fieldstat_instance_start(instance);
fieldstat_value_incrby(instance, output_metric_ids[0], 1000);
sleep(3);
@@ -364,7 +374,7 @@ TEST(FeildStatOutput, OutputFileAndLineProtocol)
fp = fopen("/tmp/fieldstat.txt", "r");
EXPECT_NE(nullptr, fp);
n_line = 0;
- n_loops = 4;
+ n_loops = 5;
while(!feof(fp))
{
@@ -374,11 +384,15 @@ TEST(FeildStatOutput, OutputFileAndLineProtocol)
}
if(n_line == 1)
{
- EXPECT_STREQ(table_column, read_line_buf);
+ EXPECT_STREQ(compared_table_name, read_line_buf);
}
if(n_line == 2)
{
- EXPECT_STREQ(table_row_value, read_line_buf);
+ EXPECT_STREQ(compared_table_column, read_line_buf);
+ }
+ if(n_line == 3)
+ {
+ EXPECT_STREQ(compared_table_row_value, read_line_buf);
}
n_line++;
}
@@ -404,35 +418,36 @@ TEST(FeildStatOutput, OutputFileAndPrometheus)
const char *prometheus_output_path = "/tmp/prometheus.txt";
const char *file_output_path = "/tmp/fieldstat.txt";
const char *prometheus_output_result = "tsg_statistic_new_conn_num{app_name=\"tsg_statistic\",table_name=\"network_activity\",line_name=\"TRAFFIC\"} 1000\n";
- const char *table_column = "network_activity new_conn_num established_conn_num"
- " close_conn_num total_in_bytes total_out_bytes total_in_packets "
- "total_out_packets default_conn_num default_in_bytes default_out_bytes "
- "default_in_packets default_out_packets allow_conn_num allow_in_bytes "
- "allow_out_bytes allow_in_packets allow_out_packets deny_conn_num "
- "deny_in_bytes deny_out_bytes deny_in_packets deny_out_packets monitor_conn_num "
- "monitor_in_bytes monitor_out_bytes monitor_in_packets monitor_out_packets intercept_conn_num "
- "intercept_in_bytes intercept_out_bytes intercept_in_packets intercept_out_packets "
- "ipv4_in_packets ipv4_in_bytes ipv4_out_packetsipv4_out_bytes ipv6_in_packets ipv6_in_bytes "
- "ipv6_out_packets ipv6_out_bytes tcp_conn_num tcp_in_packets tcp_in_bytes tcp_out_packets "
- "tcp_out_bytes udp_conn_num udp_in_packets udp_in_bytes udp_out_packets udp_out_bytes "
- "alert_bytes block_bytes pinning_num maybe_pinning_num not_pinning_num\n";
+ const char *compared_table_name = "table name: network_activity\n";
+ const char *compared_table_column = " new_conn_num established_conn_nu"
+ " close_conn_num total_in_bytes total_out_bytes total_in_packets"
+ " total_out_packets default_conn_num default_in_bytes default_out_bytes"
+ " default_in_packets default_out_packets allow_conn_num allow_in_bytes"
+ " allow_out_bytes allow_in_packets allow_out_packets deny_conn_num"
+ " deny_in_bytes deny_out_bytes deny_in_packets deny_out_packets"
+ " monitor_conn_num monitor_in_bytes monitor_out_bytes monitor_in_packets"
+ " monitor_out_packets intercept_conn_num intercept_in_bytes intercept_out_bytes"
+ " intercept_in_packet intercept_out_packe ipv4_in_packets ipv4_in_bytes"
+ " ipv4_out_packetsipv ipv6_in_packets ipv6_in_bytes ipv6_out_packets"
+ " ipv6_out_bytes tcp_conn_num tcp_in_packets tcp_in_bytes"
+ " tcp_out_packets tcp_out_bytes udp_conn_num udp_in_packets"
+ " udp_in_bytes udp_out_packets udp_out_bytes alert_bytes"
+ " block_bytes pinning_num maybe_pinning_num not_pinning_num\n";
- const char *table_row_value = "TRAFFIC 1000 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 \n";
-
-
+ const char *compared_table_row_value = "TRAFFIC 5.00e+02 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00\n";
const char *table_column_name[] = {"new_conn_num", "established_conn_num", "close_conn_num", "total_in_bytes", "total_out_bytes", "total_in_packets",
"total_out_packets", "default_conn_num", "default_in_bytes", "default_out_bytes", "default_in_packets", "default_out_packets", "allow_conn_num",
@@ -460,7 +475,7 @@ TEST(FeildStatOutput, OutputFileAndPrometheus)
EXPECT_EQ(9, instance->output_type);
ret = system("cat /dev/null > /tmp/prometheus.txt");
- ret = system("cat /dev/null > /tmp/fieldstat.txt");
+ //ret = system("cat /dev/null > /tmp/fieldstat.txt");
fieldstat_instance_start(instance);
fieldstat_value_incrby(instance, output_metric_ids[0], 1000);
sleep(3);
@@ -470,7 +485,7 @@ TEST(FeildStatOutput, OutputFileAndPrometheus)
fp = fopen("/tmp/fieldstat.txt", "r");
EXPECT_NE(nullptr, fp);
n_line = 0;
- n_loops = 4;
+ n_loops = 5;
while(!feof(fp))
{
@@ -480,11 +495,15 @@ TEST(FeildStatOutput, OutputFileAndPrometheus)
}
if(n_line == 1)
{
- EXPECT_STREQ(table_column, line);
+ EXPECT_STREQ(compared_table_name, line);
}
if(n_line == 2)
{
- EXPECT_STREQ(table_row_value, line);
+ EXPECT_STREQ(compared_table_column, line);
+ }
+ if(n_line == 3)
+ {
+ EXPECT_STREQ(compared_table_row_value, line);
}
n_line++;
}
@@ -527,33 +546,37 @@ TEST(FeildStatOutput, OutputFileAndPrometheusAndLineProtocol)
const char *file_output_path = "/tmp/fieldstat.txt";
const char *telegraf_output_file = "/tmp/metrics.out";
const char *prometheus_output_result = "tsg_statistic_new_conn_num{app_name=\"tsg_statistic\",table_name=\"network_activity\",line_name=\"TRAFFIC\"} 1000\n";
- const char *table_column = "network_activity new_conn_num established_conn_num"
- " close_conn_num total_in_bytes total_out_bytes total_in_packets "
- "total_out_packets default_conn_num default_in_bytes default_out_bytes "
- "default_in_packets default_out_packets allow_conn_num allow_in_bytes "
- "allow_out_bytes allow_in_packets allow_out_packets deny_conn_num "
- "deny_in_bytes deny_out_bytes deny_in_packets deny_out_packets monitor_conn_num "
- "monitor_in_bytes monitor_out_bytes monitor_in_packets monitor_out_packets intercept_conn_num "
- "intercept_in_bytes intercept_out_bytes intercept_in_packets intercept_out_packets "
- "ipv4_in_packets ipv4_in_bytes ipv4_out_packetsipv4_out_bytes ipv6_in_packets ipv6_in_bytes "
- "ipv6_out_packets ipv6_out_bytes tcp_conn_num tcp_in_packets tcp_in_bytes tcp_out_packets "
- "tcp_out_bytes udp_conn_num udp_in_packets udp_in_bytes udp_out_packets udp_out_bytes "
- "alert_bytes block_bytes pinning_num maybe_pinning_num not_pinning_num\n";
+ const char *compared_table_name = "table name: network_activity\n";
+ const char *compared_table_column = " new_conn_num established_conn_nu"
+ " close_conn_num total_in_bytes total_out_bytes total_in_packets"
+ " total_out_packets default_conn_num default_in_bytes default_out_bytes"
+ " default_in_packets default_out_packets allow_conn_num allow_in_bytes"
+ " allow_out_bytes allow_in_packets allow_out_packets deny_conn_num"
+ " deny_in_bytes deny_out_bytes deny_in_packets deny_out_packets"
+ " monitor_conn_num monitor_in_bytes monitor_out_bytes monitor_in_packets"
+ " monitor_out_packets intercept_conn_num intercept_in_bytes intercept_out_bytes"
+ " intercept_in_packet intercept_out_packe ipv4_in_packets ipv4_in_bytes"
+ " ipv4_out_packetsipv ipv6_in_packets ipv6_in_bytes ipv6_out_packets"
+ " ipv6_out_bytes tcp_conn_num tcp_in_packets tcp_in_bytes"
+ " tcp_out_packets tcp_out_bytes udp_conn_num udp_in_packets"
+ " udp_in_bytes udp_out_packets udp_out_bytes alert_bytes"
+ " block_bytes pinning_num maybe_pinning_num not_pinning_num\n";
- const char *table_row_value = "TRAFFIC 1000 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 "
- "0 0 0 0 \n";
+ const char *compared_table_row_value = "TRAFFIC 5.00e+02 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00"
+ " 0.00e+00 0.00e+00 0.00e+00 0.00e+00\n";
+
@@ -600,7 +623,7 @@ TEST(FeildStatOutput, OutputFileAndPrometheusAndLineProtocol)
EXPECT_EQ(9, instance->output_type);
ret = system("cat /dev/null > /tmp/prometheus.txt");
- ret = system("cat /dev/null > /tmp/fieldstat.txt");
+ //ret = system("cat /dev/null > /tmp/fieldstat.txt");
fieldstat_instance_start(instance);
fieldstat_value_incrby(instance, output_metric_ids[0], 1000);
sleep(3);
@@ -610,7 +633,7 @@ TEST(FeildStatOutput, OutputFileAndPrometheusAndLineProtocol)
fp = fopen("/tmp/fieldstat.txt", "r");
EXPECT_NE(nullptr, fp);
n_line = 0;
- n_loops = 4;
+ n_loops = 5;
while(!feof(fp))
{
@@ -620,11 +643,15 @@ TEST(FeildStatOutput, OutputFileAndPrometheusAndLineProtocol)
}
if(n_line == 1)
{
- EXPECT_STREQ(table_column, line);
+ EXPECT_STREQ(compared_table_name, line);
}
if(n_line == 2)
{
- EXPECT_STREQ(table_row_value, line);
+ EXPECT_STREQ(compared_table_column, line);
+ }
+ if(n_line == 3)
+ {
+ EXPECT_STREQ(compared_table_row_value, line);
}
n_line++;
}
diff --git a/test/src/gtest_fieldstat_output_file_instance.cpp b/test/src/gtest_fieldstat_output_file_instance.cpp
new file mode 100644
index 0000000..3a171de
--- /dev/null
+++ b/test/src/gtest_fieldstat_output_file_instance.cpp
@@ -0,0 +1,236 @@
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <gtest/gtest.h>
+#include "fieldstat.h"
+#include "fieldstat_internal.h"
+
+extern struct prometheus_endpoint_instance g_prometheus_endpoint_instance;
+
+TEST(FeildStatOutput, OutputMaatTable)
+{
+ int ret = 0;
+ struct fieldstat_instance * instance = NULL;
+ int table_id = -1;
+ int output_metric_ids[54] = {0};
+ FILE *fp;
+ int n_line = 0;
+ int n_loops = 48;
+ char line[2048] = {0};
+
+ const char *output_file_path = "/tmp/fieldstat.txt";
+ const char *table_column_name[] = {"rule", "reg", "v6", "stream", "scan_cnt", "scan_bytes", "scan_cpu_time", "hit_cnt"};
+ const char *compared_table_row = "PXY_PROFILE_RUN_SCRIPT"
+ " 9223372036854775807 0 0 0"
+ " 0 0 0 0\n";
+
+ enum field_type table_column_type[8] = {FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE};
+
+ instance = fieldstat_instance_new("maat");
+ EXPECT_STREQ("maat", instance->name);
+
+ table_id = fieldstat_register_table(instance, "maat_info", table_column_name, table_column_type, sizeof(table_column_name)/sizeof(table_column_name[0]));
+ EXPECT_EQ(0, table_id);
+ ret = fieldstat_register_table_row(instance, table_id, "Sum", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "PXY_CTRL_COMPILE", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "GROUP_PXY_CTRL_COMPILE_RELATION", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "GROUP_GROUP_RELATION", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_OBJ_IP", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_OBJ_URL", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_FIELD_HTTP_URL", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_OBJ_FQDN", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_OBJ_FQDN_CAT", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_FIELD_HTTP_HOST", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_FIELD_HTTP_HOST_CAT", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_OBJ_HTTP_SIGNATURE", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_FIELD_HTTP_REQ_HDR", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_FIELD_HTTP_RES_HDR", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_OBJ_KEYWORDS", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_FIELD_HTTP_REQ_BODY", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_FIELD_HTTP_RES_BODY", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_OBJ_SUBSCRIBER_ID", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_OBJ_APP_ID", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_SECURITY_SOURCE_ADDR", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_SECURITY_DESTINATION_ADDR", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "PXY_CACHE_COMPILE", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "PXY_CACHE_GROUP", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "PXY_CACHE_HTTP_URL", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "PXY_CACHE_HTTP_COOKIE", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "PXY_PROFILE_TRUSTED_CA_CERT", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "PXY_OBJ_TRUSTED_CA_CRL", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_PROFILE_RESPONSE_PAGES", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "PXY_PROFILE_HIJACK_FILES", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "PXY_PROFILE_INSERT_SCRIPTS", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_SECURITY_COMPILE", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_PROFILE_TRAFFIC_MIRROR", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_PROFILE_DECRYPTION", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_OBJ_AS_NUMBER", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_SECURITY_SOURCE_ASN", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_SECURITY_DESTINATION_ASN", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_OBJ_GEO_LOCATION", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_SECURITY_SOURCE_LOCATION", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_SECURITY_DESTINATION_LOCATION", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_FIELD_DOH_QNAME", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_FIELD_DOH_HOST", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "TSG_FIELD_DOH_HOST_CAT", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "PXY_SSL_FINGERPRINT", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+ ret = fieldstat_register_table_row(instance, table_id, "PXY_PROFILE_RUN_SCRIPTS", NULL, 0, output_metric_ids);
+ EXPECT_EQ(0, ret);
+
+ ret = fieldstat_set_local_output(instance, output_file_path, "default");
+ EXPECT_EQ(0, ret);
+ fieldstat_instance_start(instance);
+ fieldstat_value_incrby(instance, output_metric_ids[0], 9223372036854775807);
+ sleep(3);
+
+ fp = fopen("/tmp/fieldstat.txt", "r");
+ EXPECT_NE(nullptr, fp);
+
+ while(!feof(fp))
+ {
+ if(NULL == fgets(line, sizeof(line), fp))
+ {
+ continue;
+ }
+ if(n_line == 46)
+ {
+ EXPECT_STREQ(compared_table_row, line);
+ }
+ n_line++;
+ }
+ fclose(fp);
+ EXPECT_EQ(n_line, n_loops);
+
+ fieldstat_instance_free(instance);
+}
+
+TEST(FeildStatOutput, OutputMaatGaugeType)
+{
+ int ret = 0;
+ struct fieldstat_instance * instance = NULL;
+ int metric_id = -1;
+ FILE *fp;
+ int n_line = 0;
+ int n_loops = 6;
+ char line[2048] = {0};
+
+ const char *output_file_path = "/tmp/fieldstat.txt";
+ const char *compared_row = " version: 922 threads: 0 tables: 0 plug_cached: 0 plug_acc: 0 group: 0 \n";
+
+ instance = fieldstat_instance_new("maat");
+ EXPECT_STREQ("maat", instance->name);
+
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "version", NULL, 0);
+ EXPECT_EQ(0, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "threads", NULL, 0);
+ EXPECT_EQ(1, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "tables", NULL, 0);
+ EXPECT_EQ(2, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "plug_cached", NULL, 0);
+ EXPECT_EQ(3, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "plug_acc", NULL, 0);
+ EXPECT_EQ(4, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "group", NULL, 0);
+ EXPECT_EQ(5, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "not_grp", NULL, 0);
+ EXPECT_EQ(6, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "compile", NULL, 0);
+ EXPECT_EQ(7, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "garbage_num", NULL, 0);
+ EXPECT_EQ(8, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "outer_mid", NULL, 0);
+ EXPECT_EQ(9, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "z_stream", NULL, 0);
+ EXPECT_EQ(10, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "nt_grp_hit", NULL, 0);
+ EXPECT_EQ(11, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "scan_bytes", NULL, 0);
+ EXPECT_EQ(12, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "scan_times", NULL, 0);
+ EXPECT_EQ(13, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "update_err", NULL, 0);
+ EXPECT_EQ(14, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "scan_error", NULL, 0);
+ EXPECT_EQ(15, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "cmd_commit", NULL, 0);
+ EXPECT_EQ(16, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "cmd_in_q", NULL, 0);
+ EXPECT_EQ(17, metric_id);
+ metric_id = fieldstat_register(instance, FIELD_TYPE_GAUGE, "line_cmd/s", NULL, 0);
+ EXPECT_EQ(18, metric_id);
+
+ ret = fieldstat_set_local_output(instance, output_file_path, "default");
+ EXPECT_EQ(0, ret);
+ fieldstat_instance_start(instance);
+ fieldstat_value_incrby(instance, 0, 922);
+ sleep(3);
+
+ fp = fopen("/tmp/fieldstat.txt", "r");
+ EXPECT_NE(nullptr, fp);
+
+ while(!feof(fp))
+ {
+ if(NULL == fgets(line, sizeof(line), fp))
+ {
+ continue;
+ }
+ if(n_line == 1)
+ {
+ EXPECT_STREQ(compared_row, line);
+ }
+ n_line++;
+ }
+ fclose(fp);
+ EXPECT_EQ(n_line, n_loops);
+
+ fieldstat_instance_free(instance);
+}
+
+int main(int argc, char *argv[])
+{
+ testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+} \ No newline at end of file