架构微调
This commit is contained in:
+24
-4
@@ -125,7 +125,7 @@ TEST(low_latency_strategy_test, clamps_extremely_small_frequency_interval_withou
|
||||
}
|
||||
EXPECT_EQ(strategy.state().target_interval_ns, std::numeric_limits<std::uint64_t>::max());
|
||||
}
|
||||
TEST(low_latency_strategy_test, smooths_consumer_feedback_in_kernel) {
|
||||
TEST(low_latency_strategy_test, separates_consumer_rate_from_jitter_safety_margin) {
|
||||
Low_Latency_Test_Time_Source time_source;
|
||||
Low_Latency_Test_Observer observer;
|
||||
auto strategy = make_low_latency_test_strategy(time_source, observer);
|
||||
@@ -136,15 +136,34 @@ TEST(low_latency_strategy_test, smooths_consumer_feedback_in_kernel) {
|
||||
EXPECT_EQ(state.consumer_sample_interval_ns, 10'000'000u);
|
||||
EXPECT_EQ(state.consumer_smoothed_interval_ns, 10'000'000u);
|
||||
EXPECT_EQ(state.consumer_variation_ns, 0u);
|
||||
EXPECT_EQ(state.consumer_safety_interval_ns, 10'000'000u);
|
||||
EXPECT_EQ(state.consumer_interval_ns, 10'000'000u);
|
||||
strategy.set_consumer_feedback({14'000'000});
|
||||
state = strategy.state();
|
||||
EXPECT_EQ(state.consumer_sample_interval_ns, 14'000'000u);
|
||||
EXPECT_EQ(state.consumer_smoothed_interval_ns, 10'500'000u);
|
||||
EXPECT_EQ(state.consumer_variation_ns, 1'000'000u);
|
||||
EXPECT_EQ(state.consumer_interval_ns, 14'500'000u);
|
||||
EXPECT_EQ(state.consumer_smoothed_interval_ns, 12'000'000u);
|
||||
EXPECT_EQ(state.consumer_variation_ns, 250'000u);
|
||||
EXPECT_EQ(state.consumer_safety_interval_ns, 14'000'000u);
|
||||
EXPECT_EQ(state.consumer_interval_ns, 14'000'000u);
|
||||
EXPECT_EQ(state.next_refresh_interval_ns, 14'000'000u);
|
||||
EXPECT_EQ(state.limit_state, Low_Latency_Test_Strategy::Limit_State::consumer_limited);
|
||||
}
|
||||
TEST(low_latency_strategy_test, consumer_jitter_changes_safety_deadline_without_becoming_rate_limit) {
|
||||
Low_Latency_Test_Time_Source time_source;
|
||||
Low_Latency_Test_Observer observer;
|
||||
auto strategy = make_low_latency_test_strategy(time_source, observer);
|
||||
strategy.set_frequency_hz(1000.0);
|
||||
strategy.set_consumer_feedback({20'000'000});
|
||||
strategy.set_consumer_feedback({22'000'000});
|
||||
strategy.set_consumer_feedback({20'000'000});
|
||||
const auto state = strategy.state();
|
||||
EXPECT_EQ(state.consumer_sample_interval_ns, 20'000'000u);
|
||||
EXPECT_EQ(state.consumer_smoothed_interval_ns, 20'875'000u);
|
||||
EXPECT_EQ(state.consumer_variation_ns, 242'187u);
|
||||
EXPECT_EQ(state.consumer_interval_ns, 20'875'000u);
|
||||
EXPECT_EQ(state.consumer_safety_interval_ns, 21'843'748u);
|
||||
EXPECT_EQ(state.next_refresh_interval_ns, 20'875'000u);
|
||||
}
|
||||
TEST(low_latency_strategy_test, allows_frequency_and_consumer_limits_to_be_cleared) {
|
||||
Low_Latency_Test_Time_Source time_source;
|
||||
Low_Latency_Test_Observer observer;
|
||||
@@ -154,6 +173,7 @@ TEST(low_latency_strategy_test, allows_frequency_and_consumer_limits_to_be_clear
|
||||
strategy.clear_consumer_feedback();
|
||||
auto state = strategy.state();
|
||||
EXPECT_FALSE(state.consumer_feedback_enabled);
|
||||
EXPECT_EQ(state.consumer_safety_interval_ns, 0u);
|
||||
EXPECT_EQ(state.consumer_interval_ns, 0u);
|
||||
EXPECT_EQ(state.limit_state, Low_Latency_Test_Strategy::Limit_State::frequency_limited);
|
||||
strategy.clear_frequency_limit();
|
||||
|
||||
Reference in New Issue
Block a user