23 #include <gmock/gmock.h>
24 #include <gtest/gtest.h>
33 #include "src/proto/grpc/lb/v1/load_reporter.grpc.pb.h"
34 #include "src/proto/grpc/testing/echo.grpc.pb.h"
42 constexpr
double kMetricValue = 3.1415;
43 constexpr
char kMetricName[] =
"METRIC_PI";
47 const char kOkMessage[] =
"hello";
48 const char kServerErrorMessage[] =
"sverr";
49 const char kClientErrorMessage[] =
"clerr";
51 class EchoTestServiceImpl :
public EchoTestService::Service {
57 if (
request->message() == kServerErrorMessage) {
60 if (
request->message() == kClientErrorMessage) {
65 context, kMetricName, kMetricValue);
72 void SetUp()
override {
79 .SetOption(std::unique_ptr<grpc::ServerBuilderOption>(
81 LoadReportingServiceServerBuilderOption()))
84 std::thread(&ServerLoadReportingEnd2endTest::RunServerLoop,
this);
87 void RunServerLoop() {
server_->Wait(); }
89 void TearDown()
override {
96 auto stub = EchoTestService::NewStub(
99 for (
size_t i = 0;
i < num_requests; ++
i) {
109 }
else if (
message == kServerErrorMessage) {
111 }
else if (
message == kClientErrorMessage) {
123 TEST_F(ServerLoadReportingEnd2endTest, NoCall) {}
125 TEST_F(ServerLoadReportingEnd2endTest, BasicReport) {
128 auto stub = grpc::lb::v1::LoadReporter::NewStub(
channel);
131 grpc::lb::v1::LoadReportRequest
request;
132 request.mutable_initial_request()->set_load_balanced_hostname(
134 request.mutable_initial_request()->set_load_key(
"LOAD_KEY");
135 request.mutable_initial_request()
136 ->mutable_load_report_interval()
140 grpc::lb::v1::LoadReportResponse
response;
143 gpr_log(
GPR_INFO,
"Initial response received (lb_id: %s).", lb_id.c_str());
144 ClientMakeEchoCalls(lb_id,
"LB_TAG", kOkMessage, 1);
146 unsigned load_count = 0;
147 bool got_in_progress =
false;
148 bool got_orphaned =
false;
149 bool got_calls =
false;
150 while (load_count < 3) {
154 if (
load.in_progress_report_case()) {
159 got_in_progress =
true;
160 }
else if (
load.orphaned_load_case()) {
176 EXPECT_EQ(
load.metric_data().Get(0).metric_name(), kMetricName);
177 EXPECT_EQ(
load.metric_data().Get(0).num_calls_finished_with_metric(),
179 EXPECT_EQ(
load.metric_data().Get(0).total_metric_value(), kMetricValue);
199 int main(
int argc,
char** argv) {