#include #include #include #include #include "fieldstat.h" #include "fieldstat_exporter.h" #include "cjson/cJSON.h" TEST(ExporterInterfaceTest, ExporterNew) { struct fieldstat_exporter *exporter = NULL; exporter = fieldstat_exporter_new("firewall", NULL, 0); EXPECT_NE(nullptr, exporter); fieldstat_exporter_free(exporter); exporter = fieldstat_exporter_new("firewall.", NULL, 0); EXPECT_NE(nullptr, exporter); fieldstat_exporter_free(exporter); exporter = fieldstat_exporter_new("firewall-name-length-more-than-32", NULL, 0); EXPECT_EQ(nullptr, exporter); exporter = fieldstat_exporter_new("firewall\n", NULL, 0); EXPECT_EQ(nullptr, exporter); exporter = fieldstat_exporter_new("firewall|", NULL, 0); EXPECT_EQ(nullptr, exporter); exporter = fieldstat_exporter_new("firewall:", NULL, 0); EXPECT_EQ(nullptr, exporter); exporter = fieldstat_exporter_new("firewall ", NULL, 0); EXPECT_EQ(nullptr, exporter); exporter = fieldstat_exporter_new("firewall\t", NULL, 0); EXPECT_EQ(nullptr, exporter); exporter = fieldstat_exporter_new("firewall<", NULL, 0); EXPECT_EQ(nullptr, exporter); exporter = fieldstat_exporter_new("firewall>", NULL, 0); EXPECT_EQ(nullptr, exporter); exporter = fieldstat_exporter_new("firewall[", NULL, 0); EXPECT_EQ(nullptr, exporter); exporter = fieldstat_exporter_new("firewall]", NULL, 0); EXPECT_EQ(nullptr, exporter); exporter = fieldstat_exporter_new("firewall#", NULL, 0); EXPECT_EQ(nullptr, exporter); exporter = fieldstat_exporter_new("firewall!", NULL, 0); EXPECT_EQ(nullptr, exporter); exporter = fieldstat_exporter_new("firewall@", NULL, 0); EXPECT_EQ(nullptr, exporter); } TEST(ExporterInterfaceTest, ExporterFree) { struct fieldstat_exporter *exporter = NULL; exporter = fieldstat_exporter_new("firewall", NULL, 0); EXPECT_NE(nullptr, exporter); fieldstat_exporter_free(exporter); } TEST(ExporterInterfaceTest, EnablePrometheusExporter) { int ret = 0; struct fieldstat_exporter *exporter = NULL; exporter = fieldstat_exporter_new("firewall", NULL, 0); EXPECT_NE(nullptr, exporter); ret = fieldstat_exporter_enable_prometheus_exporter(exporter); EXPECT_EQ(0, ret); fieldstat_exporter_free(exporter); } TEST(ExporterInterfaceTest, SetLocalExporter) { int ret = 0; const char *long_len_name = "./long_name/42f32fe2-482d-4548-b31" "/0a8690da-03b8-422a-8f90-73f6fe1aa16e/424dc7c4-3eec-4451-9553-12fddef24549" "/56b30b6a-d5e8-40eb-a9a2-c0a9f5996b36/9cb96190-bac1-49d8-8450-6320adad1f03" "/cc0dd8d9-adc2-4727-a518-6d6a14329c8b/10774d3e-9eb9-4dda-bba5-538fa3107b61"; struct fieldstat_exporter *exporter = NULL; exporter = fieldstat_exporter_new("firewall", NULL, 0); EXPECT_NE(nullptr, exporter); ret = fieldstat_exporter_set_local_exporter(exporter, "statistic.log"); EXPECT_EQ(0, ret); ret = fieldstat_exporter_set_local_exporter(exporter, NULL); EXPECT_EQ(-1, ret); ret = fieldstat_exporter_set_local_exporter(exporter,""); EXPECT_EQ(-1, ret); ret = fieldstat_exporter_set_local_exporter(exporter, long_len_name); EXPECT_EQ(-1, ret); fieldstat_exporter_free(exporter); } TEST(ExporterInterfaceTest, EnableGlobalPrometheusEndpoint) { int ret = 0; ret = fieldstat_exporter_global_enable_prometheus_endpoint(8100, "/metrics"); EXPECT_EQ(0, ret); fieldstat_exporter_global_disable_prometheus_endpoint(); } TEST(ExporterInterfaceTest, FieldstatNew) { struct fieldstat *src = NULL; src = fieldstat_new(); EXPECT_NE(nullptr, src); } TEST(ExporterInterfaceTest, MergeFieldstat) { int ret = 0; struct fieldstat_exporter *exporter = NULL; struct fieldstat *srcs[1]; exporter = fieldstat_exporter_new("firewall", NULL, 0); EXPECT_NE(nullptr, exporter); for(unsigned int i = 0; i < sizeof(srcs)/sizeof(srcs[0]); i++) { srcs[i] = fieldstat_new(); EXPECT_NE(nullptr, srcs[i]); } ret = fieldstat_exporter_merge_fieldstat(exporter, srcs, sizeof(srcs)/sizeof(srcs[0])); EXPECT_EQ(0, ret); //free resources for(unsigned int i = 0; i < sizeof(srcs)/sizeof(srcs[0]); i++) { fieldstat_free(srcs[i]); } fieldstat_exporter_free(exporter); } int main(int argc, char *argv[]) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }