diff options
| author | fumingwei <[email protected]> | 2023-06-13 18:13:00 +0800 |
|---|---|---|
| committer | fumingwei <[email protected]> | 2023-06-14 16:20:31 +0800 |
| commit | 461d2891b97137fa4e0981f278a7ecbe04e6a8ed (patch) | |
| tree | f176fd8c1b5900e176641f16a272e91868c6a206 /test/src/gtest_dynamic_fieldstat.cpp | |
| parent | 910c161f2b6414ef7387643efc8799976bece864 (diff) | |
feature:提供对table row所用值操作的接口,提高dynamic metric写的性能v3.0.8
Diffstat (limited to 'test/src/gtest_dynamic_fieldstat.cpp')
| -rw-r--r-- | test/src/gtest_dynamic_fieldstat.cpp | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/test/src/gtest_dynamic_fieldstat.cpp b/test/src/gtest_dynamic_fieldstat.cpp index 181557a..40880ed 100644 --- a/test/src/gtest_dynamic_fieldstat.cpp +++ b/test/src/gtest_dynamic_fieldstat.cpp @@ -2630,6 +2630,113 @@ TEST(FeildStatDynamicAPI, FieldStatDynamicTableMetricValueGet) fieldstat_dynamic_instance_free(instance); } +TEST(FeildStatDynamicAPI, TableRowMetricValueIncrby) +{ + int n_thread = 48; + int ret = 0; + int table_id = -1; + long long value = 0; + long long values[2] = {0, 0}; + + const char *column_name[] = {"packages", "bytes"}; + enum field_type column_type[] = {FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER}; + unsigned int out_column_ids[2]; + + struct fieldstat_dynamic_instance *instance = NULL; + + instance = fieldstat_dynamic_instance_new("firewall", n_thread); + EXPECT_NE(nullptr, instance); + + table_id = fieldstat_register_dynamic_table(instance, "shaping", column_name, column_type, sizeof(column_name)/sizeof(column_name[0]), out_column_ids); + EXPECT_EQ(0, table_id); + + + values[0] = 1000; + values[1] = 2000; + ret = fieldstat_dynamic_table_row_metric_values_incrby(instance, table_id, "security_rule_hits", values, 2, NULL, 0, 0); + EXPECT_EQ(0, ret); + + value = fieldstat_dynamic_table_metric_value_get(instance, table_id, out_column_ids[0], "security_rule_hits", NULL, 0, 0); + EXPECT_EQ(1000, value); + + value = fieldstat_dynamic_table_metric_value_get(instance, table_id, out_column_ids[1], "security_rule_hits", NULL, 0, 0); + EXPECT_EQ(2000, value); + + fieldstat_dynamic_instance_free(instance); +} + +TEST(FeildStatDynamicAPI, TableRowMetricValueDecrby) +{ + int n_thread = 48; + int ret = 0; + int table_id = -1; + long long value = 0; + long long values[2] = {0, 0}; + + const char *column_name[] = {"packages", "bytes"}; + enum field_type column_type[] = {FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER}; + unsigned int out_column_ids[2]; + + struct fieldstat_dynamic_instance *instance = NULL; + + instance = fieldstat_dynamic_instance_new("firewall", n_thread); + EXPECT_NE(nullptr, instance); + + table_id = fieldstat_register_dynamic_table(instance, "shaping", column_name, column_type, sizeof(column_name)/sizeof(column_name[0]), out_column_ids); + EXPECT_EQ(0, table_id); + + + values[0] = 1000; + values[1] = 2000; + ret = fieldstat_dynamic_table_row_metric_values_decrby(instance, table_id, "security_rule_hits", values, 2, NULL, 0, 0); + EXPECT_EQ(0, ret); + + value = fieldstat_dynamic_table_metric_value_get(instance, table_id, out_column_ids[0], "security_rule_hits", NULL, 0, 0); + EXPECT_EQ(-1000, value); + + value = fieldstat_dynamic_table_metric_value_get(instance, table_id, out_column_ids[1], "security_rule_hits", NULL, 0, 0); + EXPECT_EQ(-2000, value); + + fieldstat_dynamic_instance_free(instance); +} + + +TEST(FeildStatDynamicAPI, TableRowMetricValueSet) +{ + int n_thread = 48; + int ret = 0; + int table_id = -1; + long long value = 0; + long long values[2] = {0, 0}; + + const char *column_name[] = {"packages", "bytes"}; + enum field_type column_type[] = {FIELD_TYPE_COUNTER, FIELD_TYPE_COUNTER}; + unsigned int out_column_ids[2]; + + struct fieldstat_dynamic_instance *instance = NULL; + + instance = fieldstat_dynamic_instance_new("firewall", n_thread); + EXPECT_NE(nullptr, instance); + + table_id = fieldstat_register_dynamic_table(instance, "shaping", column_name, column_type, sizeof(column_name)/sizeof(column_name[0]), out_column_ids); + EXPECT_EQ(0, table_id); + + + values[0] = 1000; + values[1] = 2000; + ret = fieldstat_dynamic_table_row_metric_values_set(instance, table_id, "security_rule_hits", values, 2, NULL, 0, 0); + EXPECT_EQ(0, ret); + + value = fieldstat_dynamic_table_metric_value_get(instance, table_id, out_column_ids[0], "security_rule_hits", NULL, 0, 0); + EXPECT_EQ(1000, value); + + value = fieldstat_dynamic_table_metric_value_get(instance, table_id, out_column_ids[1], "security_rule_hits", NULL, 0, 0); + EXPECT_EQ(2000, value); + + fieldstat_dynamic_instance_free(instance); +} + + int main(int argc, char *argv[]) { testing::InitGoogleTest(&argc, argv); |
