22#include <glog/logging.h>
23#include <gmock/gmock.h>
24#include <gtest/gtest.h>
31using ::resdb::testing::EqualsProto;
33TEST(TransactionCollectorTest, SeqError) {
35 TransactionCollector collector(seq,
nullptr);
37 std::unique_ptr<Request> request = std::make_unique<Request>();
38 SignatureInfo signature;
40 EXPECT_EQ(collector.AddRequest(
41 std::move(request), signature,
43 [&](
const Request& request,
int received_count,
45 std::atomic<TransactionStatue>* status,
bool) {}),
49TEST(TransactionCollectorTest, AddContextList) {
50 std::vector<std::unique_ptr<Context>> context_list;
52 for (
int i = 0; i < 1000000; ++i) {
53 auto context = std::make_unique<Context>();
54 context->signature = SignatureInfo();
56 context_list.push_back(std::move(context));
58 TransactionCollector collector(1,
nullptr);
59 EXPECT_EQ(collector.SetContextList(1, std::move(context_list)), 0);
62TEST(TransactionCollectorTest, AddMainRequest) {
64 TransactionCollector collector(seq,
nullptr);
66 Request expect_request;
67 expect_request.set_seq(seq);
68 std::unique_ptr<Request> request = std::make_unique<Request>(expect_request);
69 SignatureInfo signature;
70 bool is_called =
false;
72 collector.AddRequest(std::move(request), signature,
74 [&](
const Request& request,
int received_count,
76 std::atomic<TransactionStatue>* status,
bool) {
77 EXPECT_THAT(request, EqualsProto(expect_request));
78 EXPECT_EQ(received_count, 1);
79 EXPECT_EQ(*status, TransactionStatue::None);
83 EXPECT_TRUE(is_called);
86TEST(TransactionCollectorTest, AddSameMainRequest) {
88 TransactionCollector collector(seq,
nullptr);
90 Request expect_request;
91 expect_request.set_seq(seq);
92 expect_request.set_hash(
"hash_main");
95 std::unique_ptr<Request> request =
96 std::make_unique<Request>(expect_request);
97 SignatureInfo signature;
98 bool is_called =
false;
99 EXPECT_EQ(collector.AddRequest(
100 std::move(request), signature,
102 [&](
const Request& request,
int received_count,
104 std::atomic<TransactionStatue>* status,
bool) {
105 EXPECT_THAT(request, EqualsProto(expect_request));
106 EXPECT_EQ(received_count, 1);
107 EXPECT_EQ(*status, TransactionStatue::None);
111 EXPECT_TRUE(is_called);
114 std::unique_ptr<Request> request =
115 std::make_unique<Request>(expect_request);
116 SignatureInfo signature;
117 bool is_called =
false;
118 EXPECT_EQ(collector.AddRequest(
119 std::move(request), signature,
121 [&](
const Request& request,
int received_count,
123 std::atomic<TransactionStatue>* status,
bool) {
124 EXPECT_THAT(request, EqualsProto(expect_request));
125 EXPECT_EQ(received_count, 1);
126 EXPECT_EQ(*status, TransactionStatue::None);
130 EXPECT_FALSE(is_called);
134TEST(TransactionCollectorTest, AddTypeRequest) {
136 TransactionCollector collector(seq,
nullptr);
138 Request expect_request;
139 expect_request.set_seq(seq);
140 expect_request.set_hash(
"hash_main");
144 std::unique_ptr<Request> request =
145 std::make_unique<Request>(expect_request);
146 SignatureInfo signature;
147 bool is_called =
false;
148 EXPECT_EQ(collector.AddRequest(
149 std::move(request), signature,
151 [&](
const Request& request,
int received_count,
153 std::atomic<TransactionStatue>* status,
bool) {
154 EXPECT_THAT(request, EqualsProto(expect_request));
155 EXPECT_EQ(received_count, 1);
156 EXPECT_EQ(*status, TransactionStatue::None);
160 EXPECT_TRUE(is_called);
164 expect_request.set_type(Request::TYPE_PRE_PREPARE);
165 std::unique_ptr<Request> request =
166 std::make_unique<Request>(expect_request);
167 SignatureInfo signature;
168 bool is_called =
false;
169 EXPECT_EQ(collector.AddRequest(
170 std::move(request), signature,
172 [&](
const Request& request,
int received_count,
174 std::atomic<TransactionStatue>* status,
bool) {
175 EXPECT_THAT(request, EqualsProto(expect_request));
176 EXPECT_EQ(received_count, 1);
177 EXPECT_EQ(*status, TransactionStatue::None);
181 EXPECT_TRUE(is_called);
186 expect_request.set_type(Request::TYPE_PRE_PREPARE);
187 std::unique_ptr<Request> request =
188 std::make_unique<Request>(expect_request);
189 SignatureInfo signature;
190 bool is_called =
false;
191 EXPECT_EQ(collector.AddRequest(
192 std::move(request), signature,
194 [&](
const Request& request,
int received_count,
196 std::atomic<TransactionStatue>* status,
bool) {
197 EXPECT_THAT(request, EqualsProto(expect_request));
198 EXPECT_EQ(received_count, 1);
199 EXPECT_EQ(*status, TransactionStatue::None);
203 EXPECT_TRUE(is_called);
208 expect_request.set_type(Request::TYPE_PRE_PREPARE);
209 expect_request.set_sender_id(1);
210 std::unique_ptr<Request> request =
211 std::make_unique<Request>(expect_request);
212 SignatureInfo signature;
213 bool is_called =
false;
214 EXPECT_EQ(collector.AddRequest(
215 std::move(request), signature,
217 [&](
const Request& request,
int received_count,
219 std::atomic<TransactionStatue>* status,
bool) {
220 EXPECT_THAT(request, EqualsProto(expect_request));
221 EXPECT_EQ(received_count, 2);
222 EXPECT_EQ(*status, TransactionStatue::None);
223 *status = TransactionStatue::Prepare;
227 EXPECT_TRUE(is_called);
231 expect_request.set_type(Request::TYPE_PREPARE);
232 expect_request.set_sender_id(1);
233 std::unique_ptr<Request> request =
234 std::make_unique<Request>(expect_request);
235 SignatureInfo signature;
236 bool is_called =
false;
237 EXPECT_EQ(collector.AddRequest(
238 std::move(request), signature,
240 [&](
const Request& request,
int received_count,
242 std::atomic<TransactionStatue>* status,
bool) {
243 EXPECT_THAT(request, EqualsProto(expect_request));
244 EXPECT_EQ(received_count, 1);
245 EXPECT_EQ(*status, TransactionStatue::Prepare);
249 EXPECT_TRUE(is_called);
253 expect_request.set_type(Request::TYPE_PRE_PREPARE);
254 expect_request.set_sender_id(3);
255 std::unique_ptr<Request> request =
256 std::make_unique<Request>(expect_request);
257 SignatureInfo signature;
258 bool is_called =
false;
259 EXPECT_EQ(collector.AddRequest(
260 std::move(request), signature,
262 [&](
const Request& request,
int received_count,
264 std::atomic<TransactionStatue>* status,
bool) {
265 EXPECT_THAT(request, EqualsProto(expect_request));
266 EXPECT_EQ(received_count, 3);
267 EXPECT_EQ(*status, TransactionStatue::Prepare);
271 EXPECT_TRUE(is_called);
275TEST(TransactionCollectorTest, DelayMainRequest) {
277 TransactionCollector collector(seq,
nullptr);
279 Request expect_request;
280 expect_request.set_seq(seq);
281 expect_request.set_hash(
"hash_main");
285 expect_request.set_type(Request::TYPE_PRE_PREPARE);
286 std::unique_ptr<Request> request =
287 std::make_unique<Request>(expect_request);
288 SignatureInfo signature;
289 bool is_called =
false;
290 EXPECT_EQ(collector.AddRequest(
291 std::move(request), signature,
293 [&](
const Request& request,
int received_count,
295 std::atomic<TransactionStatue>* status,
bool) {
296 EXPECT_THAT(request, EqualsProto(expect_request));
297 EXPECT_EQ(received_count, 1);
298 EXPECT_EQ(*status, TransactionStatue::None);
302 EXPECT_TRUE(is_called);
306 std::unique_ptr<Request> request =
307 std::make_unique<Request>(expect_request);
308 SignatureInfo signature;
309 bool is_called =
false;
310 EXPECT_EQ(collector.AddRequest(
311 std::move(request), signature,
313 [&](
const Request& request,
int received_count,
315 std::atomic<TransactionStatue>* status,
bool) {
316 EXPECT_THAT(request, EqualsProto(expect_request));
317 EXPECT_EQ(received_count, 1);
318 EXPECT_EQ(*status, TransactionStatue::None);
322 EXPECT_TRUE(is_called);
328 expect_request.set_type(Request::TYPE_PRE_PREPARE);
329 expect_request.set_sender_id(1);
330 std::unique_ptr<Request> request =
331 std::make_unique<Request>(expect_request);
332 SignatureInfo signature;
333 bool is_called =
false;
334 EXPECT_EQ(collector.AddRequest(
335 std::move(request), signature,
337 [&](
const Request& request,
int received_count,
339 std::atomic<TransactionStatue>* status,
bool) {
340 EXPECT_THAT(request, EqualsProto(expect_request));
341 EXPECT_EQ(received_count, 2);
342 EXPECT_EQ(*status, TransactionStatue::None);
343 *status = TransactionStatue::Prepare;
347 EXPECT_TRUE(is_called);
351 expect_request.set_type(Request::TYPE_PREPARE);
352 expect_request.set_sender_id(1);
353 std::unique_ptr<Request> request =
354 std::make_unique<Request>(expect_request);
355 SignatureInfo signature;
356 bool is_called =
false;
357 EXPECT_EQ(collector.AddRequest(
358 std::move(request), signature,
360 [&](
const Request& request,
int received_count,
362 std::atomic<TransactionStatue>* status,
bool) {
363 EXPECT_THAT(request, EqualsProto(expect_request));
364 EXPECT_EQ(received_count, 1);
365 EXPECT_EQ(*status, TransactionStatue::Prepare);
369 EXPECT_TRUE(is_called);
373 expect_request.set_type(Request::TYPE_PRE_PREPARE);
374 expect_request.set_sender_id(3);
375 std::unique_ptr<Request> request =
376 std::make_unique<Request>(expect_request);
377 SignatureInfo signature;
378 bool is_called =
false;
379 EXPECT_EQ(collector.AddRequest(
380 std::move(request), signature,
382 [&](
const Request& request,
int received_count,
384 std::atomic<TransactionStatue>* status,
bool) {
385 EXPECT_THAT(request, EqualsProto(expect_request));
386 EXPECT_EQ(received_count, 3);
387 EXPECT_EQ(*status, TransactionStatue::Prepare);
391 EXPECT_TRUE(is_called);
std::list< std::unique_ptr< RequestInfo > > CollectorDataType
TEST(NetworkUtilsTest, GetDNSName)