-
Notifications
You must be signed in to change notification settings - Fork 215
/
Copy pathtest_utils.cpp
94 lines (80 loc) · 2.42 KB
/
test_utils.cpp
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <cstdint>
#include <iomanip>
#include <limits>
#include <sstream>
#include <random>
#include "test_utils.h"
using std::chrono::duration_cast;
using std::chrono::milliseconds;
using std::chrono::seconds;
using std::chrono::system_clock;
using std::hex;
using std::move;
using std::numeric_limits;
using std::ostringstream;
using std::random_device;
using std::string;
using std::uniform_int_distribution;
using std::unique_ptr;
using std::vector;
//==================================================================================
// PollStrategyAdapter
//==================================================================================
PollStrategyAdapter::PollStrategyAdapter(Configuration config)
: Consumer(config) {
}
void PollStrategyAdapter::add_polling_strategy(unique_ptr<PollInterface> poll_strategy) {
strategy_ = move(poll_strategy);
}
void PollStrategyAdapter::delete_polling_strategy() {
strategy_.reset();
}
Message PollStrategyAdapter::poll() {
if (strategy_) {
return strategy_->poll();
}
return Consumer::poll();
}
Message PollStrategyAdapter::poll(milliseconds timeout) {
if (strategy_) {
return strategy_->poll(timeout);
}
return Consumer::poll(timeout);
}
vector<Message> PollStrategyAdapter::poll_batch(size_t max_batch_size) {
if (strategy_) {
return strategy_->poll_batch(max_batch_size);
}
return Consumer::poll_batch(max_batch_size);
}
vector<Message> PollStrategyAdapter::poll_batch(size_t max_batch_size, milliseconds timeout) {
if (strategy_) {
return strategy_->poll_batch(max_batch_size, timeout);
}
return Consumer::poll_batch(max_batch_size, timeout);
}
void PollStrategyAdapter::set_timeout(milliseconds timeout) {
if (strategy_) {
strategy_->set_timeout(timeout);
}
else {
Consumer::set_timeout(timeout);
}
}
milliseconds PollStrategyAdapter::get_timeout() {
if (strategy_) {
return strategy_->get_timeout();
}
return Consumer::get_timeout();
}
// Misc
string make_consumer_group_id() {
ostringstream output;
output << hex;
random_device rd;
uniform_int_distribution<uint64_t> distribution(0, numeric_limits<uint64_t>::max());
const auto now = duration_cast<seconds>(system_clock::now().time_since_epoch());
const auto random_number = distribution(rd);
output << now.count() << random_number;
return output.str();
}