-
Notifications
You must be signed in to change notification settings - Fork 54
Expand file tree
/
Copy pathmeta_service_impl_test.cc
More file actions
51 lines (40 loc) · 2.11 KB
/
Copy pathmeta_service_impl_test.cc
File metadata and controls
51 lines (40 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <memory>
#include "kv_cache_manager/common/request_context.h"
#include "kv_cache_manager/common/unittest.h"
#include "kv_cache_manager/config/registry_manager.h"
#include "kv_cache_manager/manager/cache_manager.h"
#include "kv_cache_manager/metrics/metrics_registry.h"
#include "kv_cache_manager/protocol/protobuf/meta_service.pb.h"
#include "kv_cache_manager/service/meta_service_impl.h"
namespace kv_cache_manager {
class MetaServiceImplTest : public TESTBASE {
protected:
void SetUp() override {
metrics_registry_ = std::make_shared<MetricsRegistry>();
registry_manager_ = std::make_shared<RegistryManager>("", metrics_registry_);
cache_manager_ = std::make_shared<CacheManager>(metrics_registry_, registry_manager_);
service_ = std::make_unique<MetaServiceImpl>(cache_manager_, nullptr, nullptr);
service_->DisableLeaderOnlyRequests();
}
std::shared_ptr<MetricsRegistry> metrics_registry_;
std::shared_ptr<RegistryManager> registry_manager_;
std::shared_ptr<CacheManager> cache_manager_;
std::unique_ptr<MetaServiceImpl> service_;
};
TEST_F(MetaServiceImplTest, FollowerAllowsReportEventQueryButRejectsWrite) {
RequestContext query_context("follower-query");
proto::meta::GetHostCacheStateRequest query_request;
query_request.set_trace_id(query_context.trace_id());
proto::meta::GetHostCacheStateResponse query_response;
service_->GetHostCacheState(&query_context, &query_request, &query_response);
// INVALID_ARGUMENT proves the read passed the follower gate and reached
// normal request validation instead of being rejected as SERVER_NOT_LEADER.
EXPECT_EQ(proto::meta::INVALID_ARGUMENT, query_response.header().status().code());
RequestContext write_context("follower-write");
proto::meta::ReportEventRequest write_request;
write_request.set_trace_id(write_context.trace_id());
proto::meta::ReportEventResponse write_response;
service_->ReportEvent(&write_context, &write_request, &write_response);
EXPECT_EQ(proto::meta::SERVER_NOT_LEADER, write_response.header().status().code());
}
} // namespace kv_cache_manager