@@ -924,6 +924,68 @@ Y_UNIT_TEST_SUITE(TopicAutoscaling) {
924
924
}
925
925
}
926
926
927
+ Y_UNIT_TEST (PartitionSplit_AutosplitByLoad_AfterAlter) {
928
+ TTopicSdkTestSetup setup = CreateSetup ();
929
+ TTopicClient client = setup.MakeClient ();
930
+
931
+ TCreateTopicSettings createSettings;
932
+ createSettings
933
+ .BeginConfigurePartitioningSettings ()
934
+ .MinActivePartitions (1 )
935
+ .EndConfigurePartitioningSettings ();
936
+ client.CreateTopic (TEST_TOPIC, createSettings).Wait ();
937
+
938
+ TAlterTopicSettings alterSettings;
939
+ alterSettings
940
+ .BeginAlterPartitioningSettings ()
941
+ .MinActivePartitions (1 )
942
+ .MaxActivePartitions (100 )
943
+ .BeginAlterAutoPartitioningSettings ()
944
+ .UpUtilizationPercent (2 )
945
+ .DownUtilizationPercent (1 )
946
+ .StabilizationWindow (TDuration::Seconds (2 ))
947
+ .Strategy (EAutoPartitioningStrategy::ScaleUp)
948
+ .EndAlterAutoPartitioningSettings ()
949
+ .EndAlterTopicPartitioningSettings ();
950
+ client.AlterTopic (TEST_TOPIC, alterSettings).Wait ();
951
+
952
+ auto msg = TString (1_MB, ' a' );
953
+
954
+ auto writeSession_1 = CreateWriteSession (client, " producer-1" , 0 , std::string{TEST_TOPIC}, false );
955
+ auto writeSession_2 = CreateWriteSession (client, " producer-2" , 0 , std::string{TEST_TOPIC}, false );
956
+
957
+ {
958
+ UNIT_ASSERT (writeSession_1->Write (Msg (msg, 1 )));
959
+ UNIT_ASSERT (writeSession_1->Write (Msg (msg, 2 )));
960
+ Sleep (TDuration::Seconds (5 ));
961
+ auto describe = client.DescribeTopic (TEST_TOPIC).GetValueSync ();
962
+ UNIT_ASSERT_EQUAL (describe.GetTopicDescription ().GetPartitions ().size (), 1 );
963
+ }
964
+
965
+ {
966
+ UNIT_ASSERT (writeSession_1->Write (Msg (msg, 3 )));
967
+ UNIT_ASSERT (writeSession_2->Write (Msg (msg, 4 )));
968
+ UNIT_ASSERT (writeSession_1->Write (Msg (msg, 5 )));
969
+ UNIT_ASSERT (writeSession_2->Write (Msg (msg, 6 )));
970
+ Sleep (TDuration::Seconds (5 ));
971
+ auto describe = client.DescribeTopic (TEST_TOPIC).GetValueSync ();
972
+ UNIT_ASSERT_EQUAL (describe.GetTopicDescription ().GetPartitions ().size (), 3 );
973
+ }
974
+
975
+ auto writeSession2_1 = CreateWriteSession (client, " producer-1" , 1 , std::string{TEST_TOPIC}, false );
976
+ auto writeSession2_2 = CreateWriteSession (client, " producer-2" , 1 , std::string{TEST_TOPIC}, false );
977
+
978
+ {
979
+ UNIT_ASSERT (writeSession2_1->Write (Msg (msg, 7 )));
980
+ UNIT_ASSERT (writeSession2_2->Write (Msg (msg, 8 )));
981
+ UNIT_ASSERT (writeSession2_1->Write (Msg (msg, 9 )));
982
+ UNIT_ASSERT (writeSession2_2->Write (Msg (msg, 10 )));
983
+ Sleep (TDuration::Seconds (5 ));
984
+ auto describe2 = client.DescribeTopic (TEST_TOPIC).GetValueSync ();
985
+ UNIT_ASSERT_EQUAL (describe2.GetTopicDescription ().GetPartitions ().size (), 5 );
986
+ }
987
+ }
988
+
927
989
void ExecuteQuery (NYdb::NTable::TSession& session, const TString& query ) {
928
990
const auto result = session.ExecuteSchemeQuery (query).GetValueSync ();
929
991
UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), NYdb::EStatus::SUCCESS, result.GetIssues ().ToString ());
0 commit comments