From 15caa9858d990739aa27cb8916021140c83c7a88 Mon Sep 17 00:00:00 2001 From: Nik Pavlov Date: Wed, 18 Oct 2023 19:41:33 +0000 Subject: [PATCH] Update ipc_performance_test to compare similar transfers (see #3502) --- libcef_dll/wrapper/cef_message_router.cc | 9 ++- tests/cefclient/browser/client_handler.cc | 16 ++-- .../renderer/ipc_performance_test.cc | 16 ++-- .../cefclient/resources/ipc_performance.html | 52 +++++------- .../message_router_threshold_unittest.cc | 79 ++++++++++--------- tests/shared/common/binary_value_utils.cc | 8 +- tests/shared/common/binary_value_utils.h | 4 +- 7 files changed, 93 insertions(+), 91 deletions(-) diff --git a/libcef_dll/wrapper/cef_message_router.cc b/libcef_dll/wrapper/cef_message_router.cc index 17e4b252e..80da8d2cf 100644 --- a/libcef_dll/wrapper/cef_message_router.cc +++ b/libcef_dll/wrapper/cef_message_router.cc @@ -61,9 +61,12 @@ struct ParsedMessage { CefString message; }; +size_t GetByteLength(const CefString& value) { + return value.size() * sizeof(CefString::char_type); +} + size_t GetMessageSize(const CefString& response) { - return sizeof(MessageHeader) + - (response.size() * sizeof(CefString::char_type)); + return sizeof(MessageHeader) + GetByteLength(response); } void CopyResponseIntoMemory(void* memory, const CefString& response) { @@ -126,7 +129,7 @@ CefRefPtr BuildMessage(size_t threshold, int context_id, int request_id, const CefString& response) { - if (response.size() <= threshold) { + if (GetByteLength(response) <= threshold) { return BuildListMessage(message_name, context_id, request_id, response); } else { return BuildBinaryMessage(message_name, context_id, request_id, response); diff --git a/tests/cefclient/browser/client_handler.cc b/tests/cefclient/browser/client_handler.cc index 46019bef8..f2b1bf313 100644 --- a/tests/cefclient/browser/client_handler.cc +++ b/tests/cefclient/browser/client_handler.cc @@ -285,18 +285,18 @@ void OnTestSMRProcessMessageReceived( static_cast(region->Memory()); const auto message_size = std::max(region->Size(), sizeof(bv_utils::BrowserMessage)); - const auto renderer_time = renderer_msg->start_time; - const auto duration = finish_time - renderer_time; - const auto start_time = bv_utils::Now(); + + std::vector data(message_size); + const auto browser_msg = + reinterpret_cast(data.data()); + browser_msg->test_id = renderer_msg->test_id; + browser_msg->duration = finish_time - renderer_msg->start_time; + browser_msg->start_time = bv_utils::Now(); auto builder = CefSharedProcessMessageBuilder::Create( bv_utils::kTestSendSMRProcessMessage, message_size); - const auto browser_msg = - static_cast(builder->Memory()); - browser_msg->test_id = renderer_msg->test_id; - browser_msg->duration = duration; - browser_msg->start_time = start_time; + bv_utils::CopyDataIntoMemory(data, builder->Memory()); frame->SendProcessMessage(PID_RENDERER, builder->Build()); } diff --git a/tests/cefclient/renderer/ipc_performance_test.cc b/tests/cefclient/renderer/ipc_performance_test.cc index 2593150c5..c8b570a4b 100644 --- a/tests/cefclient/renderer/ipc_performance_test.cc +++ b/tests/cefclient/renderer/ipc_performance_test.cc @@ -207,15 +207,17 @@ class IpcDelegate final : public client::ClientAppRenderer::Delegate { const auto buffer_size = std::max(message_size, sizeof(bv_utils::RendererMessage)); - const auto start_time = bv_utils::Now(); + + std::vector buffer(buffer_size); + const auto renderer_msg = + reinterpret_cast(buffer.data()); + renderer_msg->test_id = test_id; + renderer_msg->start_time = bv_utils::Now(); auto builder = CefSharedProcessMessageBuilder::Create( bv_utils::kTestSendSMRProcessMessage, buffer_size); - auto renderer_msg = - static_cast(builder->Memory()); - renderer_msg->test_id = test_id; - renderer_msg->start_time = start_time; + bv_utils::CopyDataIntoMemory(buffer, builder->Memory()); frame->SendProcessMessage(PID_BROWSER, builder->Build()); } @@ -229,8 +231,8 @@ class IpcDelegate final : public client::ClientAppRenderer::Delegate { CefString code = "testSendProcessMessageResult(" + std::to_string(msg.test_id) + ", " + - bv_utils::ToMilliString(rendered_to_browser) + ", " + - bv_utils::ToMilliString(browser_to_rendered) + ");"; + bv_utils::ToMicroSecString(rendered_to_browser) + ", " + + bv_utils::ToMicroSecString(browser_to_rendered) + ");"; frame->ExecuteJavaScript(code, frame->GetURL(), 0); } diff --git a/tests/cefclient/resources/ipc_performance.html b/tests/cefclient/resources/ipc_performance.html index ea05175c7..35e42b897 100644 --- a/tests/cefclient/resources/ipc_performance.html +++ b/tests/cefclient/resources/ipc_performance.html @@ -1,8 +1,9 @@ + IPC Performance Tests - +