| 29 | } // namespace brpc |
| 30 | |
| 31 | TEST(TimeoutConcurrencyLimiterTest, AddSample) { |
| 32 | { |
| 33 | brpc::policy::FLAGS_timeout_cl_sample_window_size_ms = 10; |
| 34 | brpc::policy::FLAGS_timeout_cl_min_sample_count = 5; |
| 35 | brpc::policy::FLAGS_timeout_cl_max_sample_count = 10; |
| 36 | |
| 37 | brpc::policy::TimeoutConcurrencyLimiter limiter; |
| 38 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 39 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 40 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 41 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 42 | bthread_usleep(10 * 1000); |
| 43 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 44 | ASSERT_EQ(limiter._sw.succ_count, 0); |
| 45 | ASSERT_EQ(limiter._sw.failed_count, 0); |
| 46 | |
| 47 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 48 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 49 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 50 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 51 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 52 | bthread_usleep(10 * 1000); |
| 53 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 54 | ASSERT_EQ(limiter._sw.succ_count, 0); |
| 55 | ASSERT_EQ(limiter._sw.failed_count, 0); |
| 56 | ASSERT_EQ(limiter._avg_latency_us, 50); |
| 57 | |
| 58 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 59 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 60 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 61 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 62 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 63 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 64 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 65 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 66 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 67 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 68 | ASSERT_EQ(limiter._sw.succ_count, 0); |
| 69 | ASSERT_EQ(limiter._sw.failed_count, 0); |
| 70 | ASSERT_EQ(limiter._avg_latency_us, 50); |
| 71 | |
| 72 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 73 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 74 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 75 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 76 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 77 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 78 | ASSERT_EQ(limiter._sw.succ_count, 6); |
| 79 | ASSERT_EQ(limiter._sw.failed_count, 0); |
| 80 | |
| 81 | limiter.ResetSampleWindow(butil::cpuwide_time_us()); |
| 82 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 83 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 84 | limiter.AddSample(0, 50, butil::cpuwide_time_us()); |
| 85 | limiter.AddSample(1, 50, butil::cpuwide_time_us()); |
| 86 | limiter.AddSample(1, 50, butil::cpuwide_time_us()); |
| 87 | limiter.AddSample(1, 50, butil::cpuwide_time_us()); |
| 88 | ASSERT_EQ(limiter._sw.succ_count, 3); |
nothing calls this directly
no test coverage detected