@@ -35,60 +35,66 @@ enum class EndToEndType : uint8_t
35
35
REGEX_TOPICS
36
36
};
37
37
38
- class ShutdownTest : public ::testing::TestWithParam<EndToEndType> {
39
- public:
40
- void SetUp () override {
41
- topic_ = topic_ + std::to_string (id_++) + " -" + std::to_string (time (nullptr ));
42
- if (GetParam () != EndToEndType::SINGLE_TOPIC) {
43
- int res = makePutRequest (
44
- " http://localhost:8080/admin/v2/persistent/public/default/" + topic_ + " /partitions" , " 2" );
45
- ASSERT_TRUE (res == 204 || res == 409 ) << " res: " << res;
46
- }
38
+ static std::string toString (EndToEndType endToEndType) {
39
+ switch (endToEndType) {
40
+ case EndToEndType::SINGLE_TOPIC:
41
+ return " single-topic" ;
42
+ case EndToEndType::MULTI_TOPICS:
43
+ return " multi-topics" ;
44
+ case EndToEndType::REGEX_TOPICS:
45
+ return " regex-topics" ;
46
+ default :
47
+ return " ???" ;
47
48
}
49
+ }
48
50
51
+ class ShutdownTest : public ::testing::TestWithParam<EndToEndType> {
49
52
protected:
50
53
Client client_{lookupUrl};
51
54
decltype (PulsarFriend::getProducers(client_)) producers_{PulsarFriend::getProducers (client_)};
52
55
decltype (PulsarFriend::getConsumers(client_)) consumers_{PulsarFriend::getConsumers (client_)};
53
- std::string topic_ = " shutdown-test-" ;
54
56
55
- static std::atomic_int id_;
57
+ void createPartitionedTopic (const std::string& topic) {
58
+ if (GetParam () != EndToEndType::SINGLE_TOPIC) {
59
+ int res = makePutRequest (
60
+ " http://localhost:8080/admin/v2/persistent/public/default/" + topic + " /partitions" , " 2" );
61
+ ASSERT_TRUE (res == 204 || res == 409 ) << " res: " << res;
62
+ }
63
+ }
56
64
57
- Result subscribe (Consumer & consumer) {
65
+ Result subscribe (Consumer& consumer, const std::string& topic ) {
58
66
if (GetParam () == EndToEndType::REGEX_TOPICS) {
59
67
// NOTE: Currently the regex subscription requires the complete namespace prefix
60
- return client_.subscribeWithRegex (" persistent://public/default/" + topic_ + " .*" , " sub" ,
61
- consumer);
68
+ return client_.subscribeWithRegex (" persistent://public/default/" + topic + " .*" , " sub" , consumer);
62
69
} else {
63
- return client_.subscribe (topic_ , " sub" , consumer);
70
+ return client_.subscribe (topic , " sub" , consumer);
64
71
}
65
72
}
66
73
67
74
void assertConnectionsEmpty () {
68
75
auto connections = PulsarFriend::getConnections (client_);
69
- for (const auto & cnx : PulsarFriend::getConnections (client_)) {
76
+ for (const auto & cnx : PulsarFriend::getConnections (client_)) {
70
77
EXPECT_TRUE (PulsarFriend::getProducers (*cnx).empty ());
71
78
EXPECT_TRUE (PulsarFriend::getConsumers (*cnx).empty ());
72
79
}
73
80
}
74
81
};
75
82
76
- std::atomic_int ShutdownTest::id_{0 };
77
-
78
83
TEST_P (ShutdownTest, testClose) {
84
+ std::string topic = " shutdown-test-close-" + toString (GetParam ()) + " -" + std::to_string (time (nullptr ));
79
85
Producer producer;
80
- ASSERT_EQ (ResultOk, client_.createProducer (topic_ , producer));
86
+ ASSERT_EQ (ResultOk, client_.createProducer (topic , producer));
81
87
EXPECT_EQ (producers_.size (), 1 );
82
88
ASSERT_EQ (ResultOk, producer.close ());
83
89
EXPECT_EQ (producers_.size (), 0 );
84
90
85
91
Consumer consumer;
86
- ASSERT_EQ (ResultOk, subscribe (consumer));
92
+ ASSERT_EQ (ResultOk, subscribe (consumer, topic ));
87
93
EXPECT_EQ (consumers_.size (), 1 );
88
94
ASSERT_EQ (ResultOk, consumer.close ());
89
95
EXPECT_EQ (consumers_.size (), 0 );
90
96
91
- ASSERT_EQ (ResultOk, subscribe (consumer));
97
+ ASSERT_EQ (ResultOk, subscribe (consumer, topic ));
92
98
EXPECT_EQ (consumers_.size (), 1 );
93
99
ASSERT_EQ (ResultOk, consumer.unsubscribe ());
94
100
EXPECT_EQ (consumers_.size (), 0 );
@@ -98,16 +104,18 @@ TEST_P(ShutdownTest, testClose) {
98
104
}
99
105
100
106
TEST_P (ShutdownTest, testDestructor) {
107
+ std::string topic =
108
+ " shutdown-test-destructor-" + toString (GetParam ()) + " -" + std::to_string (time (nullptr ));
101
109
{
102
110
Producer producer;
103
- ASSERT_EQ (ResultOk, client_.createProducer (topic_ , producer));
111
+ ASSERT_EQ (ResultOk, client_.createProducer (topic , producer));
104
112
EXPECT_EQ (producers_.size (), 1 );
105
113
}
106
114
EXPECT_EQ (producers_.size (), 0 );
107
115
108
116
{
109
117
Consumer consumer;
110
- ASSERT_EQ (ResultOk, subscribe (consumer));
118
+ ASSERT_EQ (ResultOk, subscribe (consumer, topic ));
111
119
EXPECT_EQ (consumers_.size (), 1 );
112
120
}
113
121
EXPECT_EQ (consumers_.size (), 0 );
0 commit comments