Skip to content

Commit 065d480

Browse files
committed
Update tests
1 parent fdbc79b commit 065d480

File tree

2 files changed

+29
-33
lines changed

2 files changed

+29
-33
lines changed

ydb/public/sdk/cpp/client/ydb_topic/ut/describe_topic_ut.cpp

+6-11
Original file line numberDiff line numberDiff line change
@@ -396,26 +396,21 @@ namespace NYdb::NTopic::NTests {
396396
for (auto [existing, update, describe, status, issue] : expectations) {
397397
auto result = RunPermissionTest(setup, userId++, existing, update, describe);
398398
auto resultStatus = result.GetStatus();
399-
auto line = TStringBuilder() << "status=" << resultStatus;
399+
auto line = TStringBuilder() << "=== status=" << resultStatus;
400400
NYql::TIssueCode resultIssue = 0;
401401
if (!result.GetIssues().Empty()) {
402402
resultIssue = result.GetIssues().begin()->GetCode();
403403
line << " issueCode=" << resultIssue;
404404
}
405-
line << " issues=" << result.GetIssues().ToOneLineString() << Endl;
406-
Cerr << line;
405+
Cerr << (line << " issues=" << result.GetIssues().ToOneLineString() << Endl);
407406

407+
UNIT_ASSERT_EQUAL(resultStatus, status);
408+
UNIT_ASSERT_EQUAL(resultIssue, issue);
408409
if (resultStatus == EStatus::SUCCESS) {
409410
auto& p = result.GetPartitionDescription().GetPartition();
410-
TRACE_LAZY(setup.GetLog(), "PartitionDescription",
411-
TRACE_KV("partition_id", p.GetPartitionId()),
412-
TRACE_KV("is_active", p.GetActive()),
413-
TRACE_IF(p.GetPartitionLocation().Defined(),
414-
TRACE_KV("node_id", p.GetPartitionLocation()->GetNodeId()),
415-
TRACE_KV("generation", p.GetPartitionLocation()->GetGeneration())));
411+
UNIT_ASSERT(p.GetActive());
412+
UNIT_ASSERT(p.GetPartitionLocation().Defined());
416413
}
417-
UNIT_ASSERT_EQUAL(resultStatus, status);
418-
UNIT_ASSERT_EQUAL(resultIssue, issue);
419414
}
420415
}
421416
}

ydb/public/sdk/cpp/client/ydb_topic/ut/local_partition_ut.cpp

+23-22
Original file line numberDiff line numberDiff line change
@@ -611,27 +611,20 @@ namespace NYdb::NTopic::NTests {
611611
}
612612

613613
Y_UNIT_TEST(DirectWriteWithoutDescribeResourcesPermission) {
614-
// It should be possible to use DirectWrite option with UpdateRow permission only.
615-
// In this test we don't grant DescribeSchema permission and check that direct write still works.
616-
617-
auto existingTopic = GetTestParam("existing", "yes") == "yes";
618-
auto allowUpdateRow = GetTestParam("update", "allow") == "allow";
619-
auto allowDescribe = GetTestParam("describe") == "allow";
620-
auto authToken = GetTestParam("token", "x-user-x@builtin");
614+
// The DirectWrite option makes the write session send a DescribePartitionRequest to locate the partition's node.
615+
// Previously, it required DescribeSchema (DescribeResources) permission. However, this permission is too broad
616+
// to be granted to anyone who needs the DirectWrite option. The DescribePartitionRequest should work when either
617+
// UpdateRow (WriteTopic) or DescribeSchema permission is granted.
618+
//
619+
// In this test, we don't grant DescribeSchema permission and check that direct write works anyway.
621620

622621
auto setup = CreateSetup(TEST_CASE_NAME);
623-
setup->GetServer().EnableLogs({NKikimrServices::TX_PROXY_SCHEME_CACHE}, NActors::NLog::PRI_TRACE);
622+
auto authToken = "x-user-x@builtin";
624623

625624
{
626-
// Add UpdateRow permission.
625+
// Allow UpdateRow only, no DescribeSchema permission.
627626
NACLib::TDiffACL acl;
628-
if (allowUpdateRow) {
629-
acl.AddAccess(NACLib::EAccessType::Allow, NACLib::UpdateRow, authToken);
630-
}
631-
// DescribePartitionRequest should work without DescribeSchema permission.
632-
if (allowDescribe) {
633-
acl.AddAccess(NACLib::EAccessType::Allow, NACLib::DescribeSchema, authToken);
634-
}
627+
acl.AddAccess(NACLib::EAccessType::Allow, NACLib::UpdateRow, authToken);
635628
setup->GetServer().AnnoyingClient->ModifyACL("/Root", TEST_TOPIC, acl.SerializeAsString());
636629
}
637630

@@ -642,21 +635,29 @@ namespace NYdb::NTopic::NTests {
642635
.SetLog(CreateCompositeLogBackend({new TStreamLogBackend(&Cerr), tracingBackend}))
643636
.SetAuthToken(authToken);
644637
TDriver driver(driverConfig);
645-
646-
auto clientSettings = TTopicClientSettings()
647-
.Database("/Root");
648-
649-
TTopicClient client(driver, clientSettings);
638+
TTopicClient client(driver);
650639

651640
auto sessionSettings = TWriteSessionSettings()
652-
.Path(existingTopic ? TEST_TOPIC : "non-existent")
641+
.Path(TEST_TOPIC)
653642
.ProducerId(TEST_MESSAGE_GROUP_ID)
654643
.MessageGroupId(TEST_MESSAGE_GROUP_ID)
655644
.DirectWriteToPartition(true);
656645

657646
auto writeSession = client.CreateSimpleBlockingWriteSession(sessionSettings);
658647
UNIT_ASSERT(writeSession->Write("message"));
659648
writeSession->Close();
649+
650+
TExpectedTrace expected{
651+
"InitRequest",
652+
"InitResponse partition_id=0",
653+
"DescribePartitionRequest partition_id=0",
654+
"DescribePartitionResponse partition_id=0 pl_generation=1",
655+
"PreferredPartitionLocation Generation=1",
656+
"InitRequest pwg_partition_id=0 pwg_generation=1",
657+
"InitResponse partition_id=0",
658+
};
659+
auto const events = tracingBackend->GetEvents();
660+
UNIT_ASSERT(expected.Matches(events));
660661
}
661662

662663
Y_UNIT_TEST(WithoutPartitionWithSplit) {

0 commit comments

Comments
 (0)