@@ -895,6 +895,68 @@ Y_UNIT_TEST_SUITE(TopicAutoscaling) {
895
895
}
896
896
}
897
897
898
+ Y_UNIT_TEST (PartitionSplit_AutosplitByLoad_AfterAlter) {
899
+ TTopicSdkTestSetup setup = CreateSetup ();
900
+ TTopicClient client = setup.MakeClient ();
901
+
902
+ TCreateTopicSettings createSettings;
903
+ createSettings
904
+ .BeginConfigurePartitioningSettings ()
905
+ .MinActivePartitions (1 )
906
+ .EndConfigurePartitioningSettings ();
907
+ client.CreateTopic (TEST_TOPIC, createSettings).Wait ();
908
+
909
+ TAlterTopicSettings alterSettings;
910
+ alterSettings
911
+ .BeginAlterPartitioningSettings ()
912
+ .MinActivePartitions (1 )
913
+ .MaxActivePartitions (100 )
914
+ .BeginAlterAutoPartitioningSettings ()
915
+ .UpUtilizationPercent (2 )
916
+ .DownUtilizationPercent (1 )
917
+ .StabilizationWindow (TDuration::Seconds (2 ))
918
+ .Strategy (EAutoPartitioningStrategy::ScaleUp)
919
+ .EndAlterAutoPartitioningSettings ()
920
+ .EndAlterTopicPartitioningSettings ();
921
+ client.AlterTopic (TEST_TOPIC, alterSettings).Wait ();
922
+
923
+ auto msg = TString (1_MB, ' a' );
924
+
925
+ auto writeSession_1 = CreateWriteSession (client, " producer-1" , 0 , std::string{TEST_TOPIC}, false );
926
+ auto writeSession_2 = CreateWriteSession (client, " producer-2" , 0 , std::string{TEST_TOPIC}, false );
927
+
928
+ {
929
+ UNIT_ASSERT (writeSession_1->Write (Msg (msg, 1 )));
930
+ UNIT_ASSERT (writeSession_1->Write (Msg (msg, 2 )));
931
+ Sleep (TDuration::Seconds (5 ));
932
+ auto describe = client.DescribeTopic (TEST_TOPIC).GetValueSync ();
933
+ UNIT_ASSERT_EQUAL (describe.GetTopicDescription ().GetPartitions ().size (), 1 );
934
+ }
935
+
936
+ {
937
+ UNIT_ASSERT (writeSession_1->Write (Msg (msg, 3 )));
938
+ UNIT_ASSERT (writeSession_2->Write (Msg (msg, 4 )));
939
+ UNIT_ASSERT (writeSession_1->Write (Msg (msg, 5 )));
940
+ UNIT_ASSERT (writeSession_2->Write (Msg (msg, 6 )));
941
+ Sleep (TDuration::Seconds (5 ));
942
+ auto describe = client.DescribeTopic (TEST_TOPIC).GetValueSync ();
943
+ UNIT_ASSERT_EQUAL (describe.GetTopicDescription ().GetPartitions ().size (), 3 );
944
+ }
945
+
946
+ auto writeSession2_1 = CreateWriteSession (client, " producer-1" , 1 , std::string{TEST_TOPIC}, false );
947
+ auto writeSession2_2 = CreateWriteSession (client, " producer-2" , 1 , std::string{TEST_TOPIC}, false );
948
+
949
+ {
950
+ UNIT_ASSERT (writeSession2_1->Write (Msg (msg, 7 )));
951
+ UNIT_ASSERT (writeSession2_2->Write (Msg (msg, 8 )));
952
+ UNIT_ASSERT (writeSession2_1->Write (Msg (msg, 9 )));
953
+ UNIT_ASSERT (writeSession2_2->Write (Msg (msg, 10 )));
954
+ Sleep (TDuration::Seconds (5 ));
955
+ auto describe2 = client.DescribeTopic (TEST_TOPIC).GetValueSync ();
956
+ UNIT_ASSERT_EQUAL (describe2.GetTopicDescription ().GetPartitions ().size (), 5 );
957
+ }
958
+ }
959
+
898
960
void ExecuteQuery (NYdb::NTable::TSession& session, const TString& query ) {
899
961
const auto result = session.ExecuteSchemeQuery (query).GetValueSync ();
900
962
UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), NYdb::EStatus::SUCCESS, result.GetIssues ().ToString ());
0 commit comments