@@ -69,10 +69,26 @@ bool operator==(
69
69
return left == right;
70
70
}
71
71
72
+ bool operator ==(
73
+ const Ydb::RateLimiter::MeteringConfig& lhs,
74
+ const Ydb::RateLimiter::MeteringConfig& rhs
75
+ ) {
76
+ return google::protobuf::util::MessageDifferencer::Equals (lhs, rhs);
77
+ }
78
+
79
+ bool operator ==(const TMeteringConfig& lhs, const TMeteringConfig& rhs) {
80
+ Ydb::RateLimiter::MeteringConfig left;
81
+ lhs.SerializeTo (left);
82
+ Ydb::RateLimiter::MeteringConfig right;
83
+ rhs.SerializeTo (right);
84
+ return left == right;
85
+ }
86
+
72
87
bool operator ==(const TDescribeResourceResult& lhs, const TDescribeResourceResult& rhs) {
73
88
UNIT_ASSERT_C (lhs.IsSuccess (), lhs.GetIssues ().ToString ());
74
89
UNIT_ASSERT_C (rhs.IsSuccess (), rhs.GetIssues ().ToString ());
75
- return lhs.GetHierarchicalDrrProps () == rhs.GetHierarchicalDrrProps ();
90
+ return lhs.GetHierarchicalDrrProps () == rhs.GetHierarchicalDrrProps ()
91
+ && lhs.GetMeteringConfig () == rhs.GetMeteringConfig ();
76
92
}
77
93
78
94
}
@@ -847,49 +863,72 @@ TDescribeResourceResult DescribeRateLimiter(
847
863
return result;
848
864
}
849
865
850
- void DropRateLimiter (
851
- TRateLimiterClient& client,
852
- const std::string& coordinationNodePath,
853
- const std::string& rateLimiterPath
854
- ) {
855
- const auto result = client.DropResource (coordinationNodePath, rateLimiterPath).ExtractValueSync ();
856
- UNIT_ASSERT_C (result.IsSuccess (), result.GetIssues ().ToString ());
857
- }
858
-
859
866
void TestCoordinationNodeResourcesArePreserved (
860
- const std::string& coordinationNodePath ,
867
+ const std::string& path ,
861
868
NCoordination::TClient& nodeClient,
862
869
TRateLimiterClient& rateLimiterClient,
863
870
TBackupFunction&& backup,
864
871
TRestoreFunction&& restore
865
872
) {
866
- constexpr std::array rateLimiters = { " root" , " root/firstChild" , " root/secondChild" };
867
- CreateCoordinationNode (nodeClient, coordinationNodePath, {});
868
- // required settings
869
- const auto settings = TCreateResourceSettings ().MaxUnitsPerSecond (5 );
870
- for (const auto & rateLimiter : rateLimiters) {
871
- CreateRateLimiter (rateLimiterClient, coordinationNodePath, rateLimiter, settings);
873
+ const std::vector<std::pair<std::string, TCreateResourceSettings>> rateLimiters = {
874
+ {
875
+ " root" ,
876
+ TCreateResourceSettings ()
877
+ .MaxUnitsPerSecond (5 )
878
+ .MaxBurstSizeCoefficient (2 )
879
+ .PrefetchCoefficient (0.5 )
880
+ .PrefetchWatermark (0.8 )
881
+ .ImmediatelyFillUpTo (-10 )
882
+ },
883
+ {
884
+ " root/firstChild" ,
885
+ TCreateResourceSettings ()
886
+ .MaxUnitsPerSecond (10 )
887
+ .LeafBehavior (
888
+ TReplicatedBucketSettings ()
889
+ .ReportInterval (std::chrono::milliseconds (10000 ))
890
+ )
891
+ },
892
+ {
893
+ " root/secondChild" ,
894
+ TCreateResourceSettings ()
895
+ .MaxUnitsPerSecond (20 )
896
+ .MeteringConfig (
897
+ TMeteringConfig ()
898
+ .Enabled (true )
899
+ .ReportPeriod (std::chrono::milliseconds (10000 ))
900
+ .MeterPeriod (std::chrono::milliseconds (5000 ))
901
+ .CollectPeriod (std::chrono::seconds (20 ))
902
+ .ProvisionedUnitsPerSecond (100 )
903
+ .ProvisionedCoefficient (50 )
904
+ .OvershootCoefficient (1.2 )
905
+ .Provisioned (
906
+ TMetric ()
907
+ .Enabled (true )
908
+ .BillingPeriod (std::chrono::seconds (30 ))
909
+ .Labels ({{" k" , " v" }})
910
+ )
911
+ )
912
+ },
913
+ };
914
+
915
+ CreateCoordinationNode (nodeClient, path, {});
916
+ for (const auto & [resource, settings] : rateLimiters) {
917
+ CreateRateLimiter (rateLimiterClient, path, resource, settings);
872
918
}
873
919
874
- std::vector<TDescribeResourceResult> originalDescriptions ;
875
- for (const auto & rateLimiter : rateLimiters) {
876
- originalDescriptions .emplace_back (DescribeRateLimiter (rateLimiterClient, coordinationNodePath, rateLimiter ));
920
+ std::vector<TDescribeResourceResult> original ;
921
+ for (const auto & [resource, _] : rateLimiters) {
922
+ original .emplace_back (DescribeRateLimiter (rateLimiterClient, path, resource ));
877
923
}
878
924
879
925
backup ();
880
926
881
- for (int i = 2 ; i >= 0 ; --i) {
882
- DropRateLimiter (rateLimiterClient, coordinationNodePath, rateLimiters[i]);
883
- }
884
- DropCoordinationNode (nodeClient, coordinationNodePath);
927
+ DropCoordinationNode (nodeClient, path);
885
928
886
929
restore ();
887
- for (int i = 0 ; i < 3 ; ++i) {
888
- UNIT_ASSERT_EQUAL_C (
889
- DescribeRateLimiter (rateLimiterClient, coordinationNodePath, rateLimiters[i]),
890
- originalDescriptions[i],
891
- " i: " << i
892
- );
930
+ for (size_t i = 0 ; i < rateLimiters.size (); ++i) {
931
+ UNIT_ASSERT_EQUAL (DescribeRateLimiter (rateLimiterClient, path, rateLimiters[i].first ), original[i]);
893
932
}
894
933
}
895
934
0 commit comments