MCPcopy Create free account
hub / github.com/apache/brpc / TEST

Function TEST

test/brpc_prometheus_metrics_unittest.cpp:58–197  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

56};
57
58TEST(PrometheusMetrics, sanity) {
59 brpc::Server server;
60 DummyEchoServiceImpl echo_svc;
61 ASSERT_EQ(0, server.AddService(&echo_svc, brpc::SERVER_DOESNT_OWN_SERVICE));
62 ASSERT_EQ(0, server.Start("127.0.0.1:8614", NULL));
63
64 const std::list<std::string> labels = {"label1", "label2"};
65 bvar::MultiDimension<bvar::Adder<uint32_t> > my_madder("madder", labels);
66 bvar::Adder<uint32_t>* my_adder1 = my_madder.get_stats({"val1", "val2"});
67 ASSERT_TRUE(my_adder1);
68 *my_adder1 << 1 << 2;
69 bvar::Adder<uint32_t>* my_adder2 = my_madder.get_stats({"val2", "val3"});
70 ASSERT_TRUE(my_adder1);
71 *my_adder2 << 3 << 4;
72
73 bvar::MultiDimension<bvar::LatencyRecorder > my_mlat("mlat", labels);
74 bvar::LatencyRecorder* my_lat1 = my_mlat.get_stats({"val1", "val2"});
75 ASSERT_TRUE(my_lat1);
76 *my_lat1 << 1 << 2;
77 bvar::LatencyRecorder* my_lat2 = my_mlat.get_stats({"val2", "val3"});
78 ASSERT_TRUE(my_lat2);
79 *my_lat2 << 3 << 4;
80
81 brpc::Channel channel;
82 brpc::ChannelOptions channel_opts;
83 channel_opts.protocol = "http";
84 ASSERT_EQ(0, channel.Init("127.0.0.1:8614", &channel_opts));
85 brpc::Controller cntl;
86 cntl.http_request().uri() = "/brpc_metrics";
87 channel.CallMethod(NULL, &cntl, NULL, NULL, NULL);
88 ASSERT_FALSE(cntl.Failed());
89 std::string res = cntl.response_attachment().to_string();
90 LOG(INFO) << "output:\n" << res;
91 size_t start_pos = 0;
92 size_t end_pos = 0;
93 size_t label_start = 0;
94 STATE state = HELP;
95 char name_help[128];
96 char name_type[128];
97 char type[16];
98 int matched = 0;
99 int num = 0;
100 bool summary_sum_gathered = false;
101 bool summary_count_gathered = false;
102 bool has_ever_summary = false;
103 bool has_ever_gauge = false;
104 bool has_ever_counter = false; // brought in by mvar latency recorder
105 std::unordered_set<std::string> metric_name_set;
106
107 while ((end_pos = res.find('\n', start_pos)) != butil::StringPiece::npos) {
108 res[end_pos] = '\0'; // safe;
109 switch (state) {
110 case HELP:
111 matched = sscanf(res.data() + start_pos, "# HELP %s", name_help);
112 ASSERT_EQ(1, matched);
113 state = TYPE;
114 break;
115 case TYPE:

Callers

nothing calls this directly

Calls 14

AddServiceMethod · 0.80
get_statsMethod · 0.80
ends_withMethod · 0.80
StartMethod · 0.45
InitMethod · 0.45
CallMethodMethod · 0.45
FailedMethod · 0.45
to_stringMethod · 0.45
findMethod · 0.45
dataMethod · 0.45
countMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected