25 #include <gmock/gmock.h>
26 #include <gtest/gtest.h>
28 #include "absl/types/optional.h"
34 #include "src/proto/grpc/testing/xds/ads_for_test.grpc.pb.h"
35 #include "src/proto/grpc/testing/xds/lrs_for_test.grpc.pb.h"
36 #include "src/proto/grpc/testing/xds/v3/ads.grpc.pb.h"
37 #include "src/proto/grpc/testing/xds/v3/discovery.grpc.pb.h"
38 #include "src/proto/grpc/testing/xds/v3/lrs.grpc.pb.h"
58 "ADS[%p]: Updating %s resource %s; resource_type_version now %u",
76 "ADS[%p]: Unsetting %s resource %s; resource_type_version now %u",
88 const ResourceState& resource_state,
int client_resource_type_version) {
89 return client_resource_type_version <
104 if (subscription_state->
update_queue !=
nullptr)
return false;
107 gpr_log(
GPR_INFO,
"ADS[%p]: subscribe to resource type %s name %s state %p",
108 this, resource_type.c_str(), resource_name.c_str(),
109 &subscription_state);
117 const std::set<std::string>& resources_in_current_request,
120 for (
auto it = subscription_name_map->begin();
121 it != subscription_name_map->end();) {
124 if (resources_in_current_request.find(resource_name) !=
125 resources_in_current_request.end()) {
129 gpr_log(
GPR_INFO,
"ADS[%p]: Unsubscribe to type=%s name=%s state=%p",
this,
130 resource_type.c_str(), resource_name.c_str(), &subscription_state);
131 auto resource_it = resource_name_map->find(resource_name);
132 GPR_ASSERT(resource_it != resource_name_map->end());
133 auto& resource_state = resource_it->second;
134 resource_state.subscriptions.erase(&subscription_state);
135 if (resource_state.subscriptions.empty() &&
136 !resource_state.resource.has_value()) {
137 resource_name_map->erase(resource_it);
139 it = subscription_name_map->erase(
it);
155 resource_type_response_state_.clear();
167 sum += p.second.total_successful_requests;
175 sum += p.second.total_requests_in_progress;
183 sum += p.second.total_error_requests;
191 sum += p.second.total_issued_requests;
198 auto iter = dropped_requests_.find(category);
210 dropped_requests_[p.first] += p.second;
226 result_queue_.clear();
244 if (result_queue_.empty()) {
246 while (result_queue_.empty()) {
252 result_queue_.pop_front();