Skip to content

Commit

Permalink
shorten test duration
Browse files Browse the repository at this point in the history
  • Loading branch information
TangSiyang2001 committed Feb 6, 2025
1 parent 14ba17f commit 4b7076a
Showing 1 changed file with 15 additions and 41 deletions.
56 changes: 15 additions & 41 deletions cloud/test/rate_limiter_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@

#include <gen_cpp/cloud.pb.h>
#include <gtest/gtest.h>
#include <stdatomic.h>

#include <atomic>
#include <chrono>
#include <cstddef>
#include <thread>
Expand Down Expand Up @@ -101,7 +101,7 @@ void mock_add_cluster(MetaServiceProxy& meta_service, std::string instance_id) {
}

void mock_get_cluster(MetaServiceProxy& meta_service, const std::string& cloud_uid,
MetaServiceCode code, atomic_size_t& failed_cnt) {
MetaServiceCode code, std::atomic_size_t& failed_cnt) {
GetClusterRequest req;
req.set_cloud_unique_id(cloud_uid);
req.set_cluster_id(mock_cluster_id);
Expand All @@ -121,7 +121,7 @@ void mock_get_cluster(MetaServiceProxy& meta_service, const std::string& cloud_u
template <typename Rpc>
void mock_parallel_rpc(Rpc rpc, MetaServiceProxy* meta_service, const std::string& cloud_uid,
MetaServiceCode expected, size_t times) {
atomic_size_t failed_cnt;
std::atomic_size_t failed_cnt;
std::vector<std::thread> threads;
for (size_t i = 0; i < times; ++i) {
threads.emplace_back([&]() { rpc(*meta_service, cloud_uid, expected, failed_cnt); });
Expand All @@ -134,30 +134,6 @@ void mock_parallel_rpc(Rpc rpc, MetaServiceProxy* meta_service, const std::strin
}
}

TEST(RateLimiterTest, RateLimitGetClusterTest) {
auto meta_service = get_meta_service();
mock_add_cluster(*meta_service, mock_instance_0);

mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_0,
MetaServiceCode::OK, 20);

std::this_thread::sleep_for(std::chrono::seconds(1));
meta_service->rate_limiter()
->get_rpc_rate_limiter("get_cluster")
->qps_limiter_[mock_instance_0]
->max_qps_limit_ = 1;
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_0,
MetaServiceCode::MAX_QPS_LIMIT, 1);

std::this_thread::sleep_for(std::chrono::seconds(1));
meta_service->rate_limiter()
->get_rpc_rate_limiter("get_cluster")
->qps_limiter_[mock_instance_0]
->max_qps_limit_ = 10000;
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_0,
MetaServiceCode::OK, 1);
}

TEST(RateLimiterTest, AdjustLimitInfluenceTest) {
auto meta_service = get_meta_service();
mock_add_cluster(*meta_service, mock_instance_0);
Expand Down Expand Up @@ -242,7 +218,7 @@ TEST(RateLimiterTest, TestAdjustLimitInfluence1) {
mock_add_cluster(*meta_service, mock_instance_1);
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_0,
MetaServiceCode::OK, 1);
std::this_thread::sleep_for(std::chrono::seconds(1));
std::this_thread::sleep_for(std::chrono::milliseconds(1));
{
ASSERT_TRUE(meta_service->rate_limiter()->set_rate_limit(0));
std::this_thread::sleep_for(std::chrono::seconds(1));
Expand All @@ -256,10 +232,10 @@ TEST(RateLimiterTest, TestAdjustLimitInfluence1) {
std::this_thread::sleep_for(std::chrono::seconds(1));
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_0,
MetaServiceCode::OK, 1);
std::this_thread::sleep_for(std::chrono::seconds(1));
std::this_thread::sleep_for(std::chrono::milliseconds(1));
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_1,
MetaServiceCode::MAX_QPS_LIMIT, 1);
std::this_thread::sleep_for(std::chrono::seconds(1));
std::this_thread::sleep_for(std::chrono::milliseconds(1));
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_0,
MetaServiceCode::MAX_QPS_LIMIT, 3);
std::this_thread::sleep_for(std::chrono::seconds(1));
Expand All @@ -270,7 +246,7 @@ TEST(RateLimiterTest, TestAdjustLimitInfluence1) {
std::this_thread::sleep_for(std::chrono::seconds(1));
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_0,
MetaServiceCode::OK, 3);
std::this_thread::sleep_for(std::chrono::seconds(1));
std::this_thread::sleep_for(std::chrono::milliseconds(1));
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_1,
MetaServiceCode::MAX_QPS_LIMIT, 3);
std::this_thread::sleep_for(std::chrono::seconds(1));
Expand All @@ -289,7 +265,6 @@ TEST(RateLimiterTest, TestAdjustLimitInfluence1) {
std::this_thread::sleep_for(std::chrono::seconds(1));
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_0,
MetaServiceCode::OK, 5);
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}

Expand All @@ -306,23 +281,23 @@ TEST(RateLimiterTest, TestAdjustLimitInfluence2) {
std::this_thread::sleep_for(std::chrono::seconds(1));
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_0,
MetaServiceCode::MAX_QPS_LIMIT, 7);
std::this_thread::sleep_for(std::chrono::seconds(1));
std::this_thread::sleep_for(std::chrono::milliseconds(1));
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_0,
MetaServiceCode::OK, 5);
std::this_thread::sleep_for(std::chrono::seconds(1));
std::this_thread::sleep_for(std::chrono::milliseconds(1));
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_1,
MetaServiceCode::OK, 7);
std::this_thread::sleep_for(std::chrono::seconds(1));
}
{
ASSERT_TRUE(meta_service->rate_limiter()->set_instance_rate_limit(4, mock_instance_0));
std::this_thread::sleep_for(std::chrono::seconds(1));
std::this_thread::sleep_for(std::chrono::seconds(2));
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_0,
MetaServiceCode::MAX_QPS_LIMIT, 5);
std::this_thread::sleep_for(std::chrono::seconds(1));
std::this_thread::sleep_for(std::chrono::milliseconds(1));
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_0,
MetaServiceCode::OK, 3);
std::this_thread::sleep_for(std::chrono::seconds(1));
std::this_thread::sleep_for(std::chrono::milliseconds(1));
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_1,
MetaServiceCode::OK, 7);
std::this_thread::sleep_for(std::chrono::seconds(1));
Expand All @@ -332,10 +307,9 @@ TEST(RateLimiterTest, TestAdjustLimitInfluence2) {
std::this_thread::sleep_for(std::chrono::seconds(1));
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_0,
MetaServiceCode::OK, 3);
std::this_thread::sleep_for(std::chrono::seconds(1));
std::this_thread::sleep_for(std::chrono::milliseconds(1));
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_1,
MetaServiceCode::MAX_QPS_LIMIT, 3);
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}

Expand All @@ -347,7 +321,7 @@ TEST(RateLimiterTest, AdjustLimitMockRPCTest) {
MetaServiceCode::OK, 20);
mock_parallel_rpc(mock_get_cluster, meta_service.get(), mock_cloud_unique_id_1,
MetaServiceCode::OK, 20);
std::this_thread::sleep_for(std::chrono::seconds(1));
std::this_thread::sleep_for(std::chrono::milliseconds(1));

{
ASSERT_TRUE(meta_service->rate_limiter()->set_rate_limit(10000, "get_cluster"));
Expand All @@ -357,7 +331,7 @@ TEST(RateLimiterTest, AdjustLimitMockRPCTest) {
auto limit =
meta_service->rate_limiter()->get_rpc_rate_limiter("get_cluster")->max_qps_limit();
ASSERT_EQ(limit, 10000);
std::this_thread::sleep_for(std::chrono::seconds(1));
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
{
ASSERT_TRUE(meta_service->rate_limiter()->set_rate_limit(1, "get_cluster"));
Expand Down

0 comments on commit 4b7076a

Please sign in to comment.