22#include <glog/logging.h>
23#include <gmock/gmock.h>
24#include <gtest/gtest.h>
36using ::resdb::testing::EqualsProto;
38using ::testing::Invoke;
39using ::testing::Matcher;
40using ::testing::Return;
43MATCHER_P(SendMessageMatcher, replica,
"") {
return true; }
45TEST(LocalExecutorTest, PushToQueue) {
46 auto mock_executor = std::make_unique<MockTransactionManager>();
47 auto replica_communicator = std::make_unique<MockReplicaCommunicator>();
48 ResConfigData config_data_ = ResConfigData();
49 config_data_.set_self_region_id(1);
52 RegionInfo* region = config_data_.add_region();
53 region->set_region_id(1);
60 region = config_data_.add_region();
61 region->set_region_id(2);
69 KeyInfo(), CertificateInfo());
73 BatchUserRequest batch_request;
74 batch_request.set_seq(1);
75 batch_request.add_user_requests()->mutable_request()->set_data(
76 "local_execute_test");
80 std::promise<bool> done;
81 std::future<bool> done_future = done.get_future();
82 EXPECT_CALL(*replica_communicator, SendBatchMessage).WillOnce(Invoke([&]() {
87 GeoTransactionExecutor local_executor = GeoTransactionExecutor(
89 std::move(mock_executor));
91 local_executor.ExecuteBatch(batch_request);
95TEST(LocalExecutorTest, PrimaryNodeBroadcast) {
96 auto mock_executor = std::make_unique<MockTransactionManager>();
97 auto replica_communicator = std::make_unique<MockReplicaCommunicator>();
98 ResConfigData config_data_ = ResConfigData();
99 config_data_.set_self_region_id(1);
102 RegionInfo* region = config_data_.add_region();
103 region->set_region_id(1);
110 region = config_data_.add_region();
111 region->set_region_id(2);
119 KeyInfo(), CertificateInfo());
123 BatchUserRequest batch_request;
124 batch_request.set_seq(1);
125 batch_request.add_user_requests()->mutable_request()->set_data(
126 "local_execute_test");
131 std::promise<bool> done;
132 std::future<bool> done_future = done.get_future();
133 EXPECT_CALL(*replica_communicator, SendBatchMessage)
134 .WillRepeatedly(Invoke([&]() {
135 if (++call_times >= 3) {
136 done.set_value(
true);
141 GeoTransactionExecutor local_executor = GeoTransactionExecutor(
143 std::move(mock_executor));
144 local_executor.ExecuteBatch(batch_request);
void SetPrimary(uint32_t id)
MATCHER_P(EqualsProto, replica, "")
ReplicaInfo GenerateReplicaInfo(int id, const std::string &ip, int port)
TEST(NetworkUtilsTest, GetDNSName)
std::unique_ptr< ResDBConfig > config_