Skip to content

Commit 53e2ec9

Browse files
qyryqGazizonoki
authored andcommitted
Moved commit "persqueue: add user-agent counters" from ydb repo
1 parent 8b15591 commit 53e2ec9

File tree

2 files changed

+52
-2
lines changed

2 files changed

+52
-2
lines changed

src/client/persqueue_public/ut/ut_utils/data_plane_helpers.cpp

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
#include "data_plane_helpers.h"
2+
#include <ydb-cpp-sdk/client/resources/ydb_resources.h>
3+
#include <ydb-cpp-sdk/client/topic/client.h>
24

35
namespace NKikimr::NPersQueueTests {
46

@@ -51,7 +53,8 @@ namespace NKikimr::NPersQueueTests {
5153
std::optional<ui32> partitionGroup,
5254
std::optional<TString> codec,
5355
std::optional<bool> reconnectOnFailure,
54-
std::unordered_map<std::string, std::string> sessionMeta
56+
std::unordered_map<std::string, std::string> sessionMeta,
57+
const TString& userAgent
5558
) {
5659
auto settings = TWriteSessionSettings().Path(topic).MessageGroupId(sourceId);
5760
if (partitionGroup) settings.PartitionGroupId(*partitionGroup);
@@ -66,6 +69,9 @@ namespace NKikimr::NPersQueueTests {
6669
}
6770
settings.MaxMemoryUsage(1024*1024*1024*1024ll);
6871
settings.Meta_.Fields = sessionMeta;
72+
if (!userAgent.empty()) {
73+
settings.Header({{NYdb::YDB_APPLICATION_NAME, userAgent}});
74+
}
6975
return CreateSimpleWriter(driver, settings);
7076
}
7177

@@ -79,6 +85,21 @@ namespace NKikimr::NPersQueueTests {
7985
return TPersQueueClient(driver, clientSettings).CreateReadSession(TReadSessionSettings(settings).DisableClusterDiscovery(true));
8086
}
8187

88+
std::shared_ptr<NYdb::NTopic::IReadSession> CreateReader(
89+
NYdb::TDriver& driver,
90+
const NYdb::NTopic::TReadSessionSettings& settings,
91+
std::shared_ptr<NYdb::ICredentialsProviderFactory> creds,
92+
const TString& userAgent
93+
) {
94+
NYdb::NTopic::TTopicClientSettings clientSettings;
95+
if (creds) clientSettings.CredentialsProviderFactory(creds);
96+
auto readerSettings = settings;
97+
if (!userAgent.empty()) {
98+
readerSettings.Header({{NYdb::YDB_APPLICATION_NAME, userAgent}});
99+
}
100+
return NYdb::NTopic::TTopicClient(driver, clientSettings).CreateReadSession(readerSettings);
101+
}
102+
82103
TMaybe<TReadSessionEvent::TDataReceivedEvent> GetNextMessageSkipAssignment(std::shared_ptr<IReadSession>& reader, TDuration timeout) {
83104
while (true) {
84105
auto future = reader->WaitEvent();
@@ -99,4 +120,24 @@ namespace NKikimr::NPersQueueTests {
99120
}
100121
return {};
101122
}
123+
124+
TMaybe<NYdb::NTopic::TReadSessionEvent::TDataReceivedEvent> GetNextMessageSkipAssignment(std::shared_ptr<NYdb::NTopic::IReadSession>& reader, TDuration timeout) {
125+
while (true) {
126+
auto future = reader->WaitEvent();
127+
future.Wait(timeout);
128+
std::optional<NYdb::NTopic::TReadSessionEvent::TEvent> event = reader->GetEvent(false, 1);
129+
if (!event)
130+
return {};
131+
if (auto e = std::get_if<NYdb::NTopic::TReadSessionEvent::TDataReceivedEvent>(&*event)) {
132+
return *e;
133+
} else if (auto* e = std::get_if<NYdb::NTopic::TReadSessionEvent::TStartPartitionSessionEvent>(&*event)) {
134+
e->Confirm();
135+
} else if (auto* e = std::get_if<NYdb::NTopic::TReadSessionEvent::TStopPartitionSessionEvent>(&*event)) {
136+
e->Confirm();
137+
} else if (std::get_if<NYdb::NTopic::TSessionClosedEvent>(&*event)) {
138+
return {};
139+
}
140+
}
141+
return {};
142+
}
102143
}

src/client/persqueue_public/ut/ut_utils/data_plane_helpers.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <ydb-cpp-sdk/client/driver/driver.h>
44
#include <ydb-cpp-sdk/client/table/table.h>
55
#include <src/client/persqueue_public/persqueue.h>
6+
#include <ydb-cpp-sdk/client/topic/client.h>
67

78
#include <util/generic/hash.h>
89

@@ -36,16 +37,24 @@ namespace NKikimr::NPersQueueTests {
3637
std::optional<ui32> partitionGroup = {},
3738
std::optional<TString> codec = {},
3839
std::optional<bool> reconnectOnFailure = {},
39-
std::unordered_map<std::string, std::string> sessionMeta = {}
40+
std::unordered_map<std::string, std::string> sessionMeta = {},
41+
const TString& userAgent = {}
4042
);
4143

4244
std::shared_ptr<NYdb::NPersQueue::IReadSession> CreateReader(
4345
NYdb::TDriver& driver,
4446
const NYdb::NPersQueue::TReadSessionSettings& settings,
4547
std::shared_ptr<NYdb::ICredentialsProviderFactory> creds = nullptr
48+
);
4649

50+
std::shared_ptr<NYdb::NTopic::IReadSession> CreateReader(
51+
NYdb::TDriver& driver,
52+
const NYdb::NTopic::TReadSessionSettings& settings,
53+
std::shared_ptr<NYdb::ICredentialsProviderFactory> creds = nullptr,
54+
const TString& userAgent = ""
4755
);
4856

4957
TMaybe<NYdb::NPersQueue::TReadSessionEvent::TDataReceivedEvent> GetNextMessageSkipAssignment(std::shared_ptr<NYdb::NPersQueue::IReadSession>& reader, TDuration timeout = TDuration::Max());
58+
TMaybe<NYdb::NTopic::TReadSessionEvent::TDataReceivedEvent> GetNextMessageSkipAssignment(std::shared_ptr<NYdb::NTopic::IReadSession>& reader, TDuration timeout = TDuration::Max());
5059

5160
}

0 commit comments

Comments
 (0)