浏览器端反馈控制
This commit is contained in:
@@ -1076,7 +1076,7 @@ TEST(RenderiveWebGallery, WebRuntimeMetricsPublishKernelSmoothedConsumerFeedback
|
||||
EXPECT_EQ(observer.at("consumer_safety_interval_ns"), 20'000'000);
|
||||
EXPECT_EQ(observer.at("consumer_interval_ns"), 20'000'000);
|
||||
EXPECT_EQ(observer.at("limit_state"), "consumer_limited");
|
||||
EXPECT_EQ(limit.at("consumer_feedback_source"), "web_runtime");
|
||||
EXPECT_EQ(limit.at("consumer_feedback_source"), "presentation");
|
||||
observed = response_json(session.handle(gallery_request(
|
||||
Gallery_Request_Kind::Observe,
|
||||
R"({"category":"event","type":"gallery_observe","client_metrics":{"transport_fps":45,"presentation_fps":45,"websocket_buffered_bytes":0,"changed_pixel_frames":20,"duplicate_pixel_frames":0,"frame_request_timeout_count":0,"frame_round_trip_ms":4,"display_interval_ms":22,"overwritten_pixel_frames":0,"last_pixel_receive_age_ms":1,"last_pixel_change_age_ms":1}})")));
|
||||
@@ -1103,6 +1103,52 @@ TEST(RenderiveWebGallery, WebRuntimeMetricsPublishKernelSmoothedConsumerFeedback
|
||||
EXPECT_EQ(rejected.at("type"), "error");
|
||||
}
|
||||
|
||||
TEST(RenderiveWebGallery, ConsumerFeedbackSourcesCanBeSelectedIndependentlyAndManually) {
|
||||
Gallery_Plot_Session session(true);
|
||||
ASSERT_EQ(response_json(session.handle(gallery_request(
|
||||
Gallery_Request_Kind::Open, open_message("spectrum", "low_latency")))).at("type"),
|
||||
"case_state");
|
||||
ASSERT_EQ(patch_controls(session, {
|
||||
{"frequency_limit_enabled", false},
|
||||
{"consumer_feedback_enabled", true},
|
||||
{"consumer_pixel_feedback_enabled", true},
|
||||
{"consumer_presentation_feedback_enabled", false},
|
||||
{"consumer_manual_feedback_enabled", false}
|
||||
}).at("type"), "case_state");
|
||||
auto observed = response_json(session.handle(gallery_request(
|
||||
Gallery_Request_Kind::Observe,
|
||||
R"({"category":"event","type":"gallery_observe","client_metrics":{"transport_fps":25,"presentation_fps":60,"websocket_buffered_bytes":0,"changed_pixel_frames":1,"duplicate_pixel_frames":0,"frame_request_timeout_count":0,"frame_round_trip_ms":5,"display_interval_ms":16,"display_interval_latest_ms":16,"display_interval_p95_ms":17,"display_jitter_ms":1,"overwritten_pixel_frames":0,"last_pixel_receive_age_ms":1,"last_pixel_change_age_ms":1}})")));
|
||||
auto observer = observed.at("telemetry").at("kernel_observer");
|
||||
EXPECT_EQ(observer.at("consumer_feedback_source"), "pixel");
|
||||
EXPECT_EQ(observer.at("consumer_pixel_interval_ns"), 40'000'000);
|
||||
EXPECT_EQ(observer.at("consumer_presentation_interval_ns"), 16'000'000);
|
||||
EXPECT_EQ(observer.at("consumer_sample_interval_ns"), 40'000'000);
|
||||
observed = patch_controls(session, {
|
||||
{"consumer_pixel_feedback_enabled", false},
|
||||
{"consumer_presentation_feedback_enabled", true}
|
||||
});
|
||||
observer = observed.at("telemetry").at("kernel_observer");
|
||||
EXPECT_EQ(observer.at("consumer_feedback_source"), "presentation");
|
||||
EXPECT_EQ(observer.at("consumer_sample_interval_ns"), 16'000'000);
|
||||
observed = patch_controls(session, {
|
||||
{"consumer_presentation_feedback_enabled", false},
|
||||
{"consumer_manual_feedback_enabled", true},
|
||||
{"consumer_manual_fps", 20.0}
|
||||
});
|
||||
observer = observed.at("telemetry").at("kernel_observer");
|
||||
EXPECT_EQ(observer.at("consumer_feedback_source"), "manual");
|
||||
EXPECT_EQ(observer.at("consumer_manual_interval_ns"), 50'000'000);
|
||||
EXPECT_EQ(observer.at("consumer_sample_interval_ns"), 50'000'000);
|
||||
observed = patch_controls(session, {
|
||||
{"consumer_manual_feedback_enabled", false}
|
||||
});
|
||||
observer = observed.at("telemetry").at("kernel_observer");
|
||||
EXPECT_EQ(observer.at("consumer_feedback_source"), "none");
|
||||
EXPECT_FALSE(observer.at("consumer_feedback_enabled").get<bool>());
|
||||
EXPECT_TRUE(observer.at("consumer_feedback_master_enabled").get<bool>());
|
||||
EXPECT_EQ(observer.at("consumer_interval_ns"), 0);
|
||||
}
|
||||
|
||||
TEST(RenderiveWebGallery, PlaybackStrategyQueuesWithoutAutomaticConsumptionAndReportsEmptyQueue) {
|
||||
Gallery_Plot_Session session(true);
|
||||
const auto opened = response_json(session.handle(gallery_request(
|
||||
|
||||
Reference in New Issue
Block a user