mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Update ipc_performance_test to compare similar transfers (see #3502)
This commit is contained in:
committed by
Marshall Greenblatt
parent
e6a96e2bec
commit
15caa9858d
@@ -7,26 +7,24 @@
|
||||
namespace {
|
||||
|
||||
constexpr int kSingleQueryErrorCode = 5;
|
||||
constexpr size_t kMessageSizeThreshold = 16000;
|
||||
constexpr size_t kMsgSizeThresholdInBytes = 16000;
|
||||
constexpr auto kCharSize = sizeof(CefString::char_type);
|
||||
|
||||
enum class TestType { SUCCESS, FAILURE };
|
||||
|
||||
CefString GenerateResponse(size_t size, char ch) {
|
||||
return CefString(std::string(size, ch));
|
||||
CefString GenerateResponse(size_t count, char ch) {
|
||||
return std::string(count, ch);
|
||||
}
|
||||
|
||||
CefString GenerateResponse(size_t size, wchar_t ch) {
|
||||
return CefString(std::wstring(size, ch));
|
||||
CefString GenerateResponse(size_t count, wchar_t ch) {
|
||||
return std::wstring(count, ch);
|
||||
}
|
||||
|
||||
template <class CharType>
|
||||
class ThresholdTestHandler final : public SingleLoadTestHandler {
|
||||
public:
|
||||
ThresholdTestHandler(TestType type, size_t message_size, CharType symbol)
|
||||
: test_type_(type),
|
||||
message_size_(message_size),
|
||||
message_size_str_(std::to_string(message_size)),
|
||||
symbol_(symbol) {}
|
||||
ThresholdTestHandler(TestType type, size_t string_length, CharType symbol)
|
||||
: test_type_(type), string_length_(string_length), symbol_(symbol) {}
|
||||
|
||||
std::string GetMainHTML() override {
|
||||
const std::string& errorCodeStr = std::to_string(kSingleQueryErrorCode);
|
||||
@@ -35,7 +33,8 @@ class ThresholdTestHandler final : public SingleLoadTestHandler {
|
||||
"<html><body><script>\n"
|
||||
// Send the query.
|
||||
"var request_id = window." +
|
||||
std::string(kJSQueryFunc) + "({\n request: '" + message_size_str_ +
|
||||
std::string(kJSQueryFunc) + "({\n request: '" +
|
||||
std::to_string(string_length_) +
|
||||
"',\n persistent: false,\n"
|
||||
" onSuccess: function(response) {\n"
|
||||
" window.mrtNotify(response);\n"
|
||||
@@ -63,7 +62,7 @@ class ThresholdTestHandler final : public SingleLoadTestHandler {
|
||||
EXPECT_FALSE(got_notify_);
|
||||
got_notify_.yes();
|
||||
|
||||
auto expected = GenerateResponse(message_size_, symbol_);
|
||||
auto expected = GenerateResponse(string_length_, symbol_);
|
||||
|
||||
switch (test_type_) {
|
||||
case TestType::SUCCESS:
|
||||
@@ -108,7 +107,7 @@ class ThresholdTestHandler final : public SingleLoadTestHandler {
|
||||
AssertMainFrame(frame);
|
||||
EXPECT_NE(0, query_id);
|
||||
EXPECT_FALSE(persistent);
|
||||
EXPECT_EQ(message_size_str_, request.ToString());
|
||||
EXPECT_EQ(std::to_string(string_length_), request.ToString());
|
||||
|
||||
const size_t message_size =
|
||||
static_cast<size_t>(std::stoi(request.ToString()));
|
||||
@@ -130,8 +129,7 @@ class ThresholdTestHandler final : public SingleLoadTestHandler {
|
||||
|
||||
private:
|
||||
const TestType test_type_;
|
||||
const size_t message_size_;
|
||||
const std::string message_size_str_;
|
||||
const size_t string_length_;
|
||||
const CharType symbol_;
|
||||
|
||||
CefRefPtr<Callback> callback_;
|
||||
@@ -149,20 +147,22 @@ using WCharTestHandlerPtr = CefRefPtr<WCharTestHandler>;
|
||||
} // namespace
|
||||
|
||||
TEST(MessageRouterTest, ThresholdMessageUnderSuccessCallback) {
|
||||
const auto UnderThreshold = kMessageSizeThreshold - 1;
|
||||
const auto under_threshold = kMsgSizeThresholdInBytes - kCharSize;
|
||||
const auto string_length = under_threshold / kCharSize;
|
||||
CharTestHandlerPtr handler =
|
||||
new CharTestHandler(TestType::SUCCESS, UnderThreshold, 'A');
|
||||
handler->SetMessageSizeThreshold(kMessageSizeThreshold);
|
||||
new CharTestHandler(TestType::SUCCESS, string_length, 'A');
|
||||
handler->SetMessageSizeThreshold(kMsgSizeThresholdInBytes);
|
||||
|
||||
handler->ExecuteTest();
|
||||
|
||||
ReleaseAndWaitForDestructor(handler);
|
||||
}
|
||||
|
||||
TEST(MessageRouterTest, ThresholMessageExactdSuccessCallback) {
|
||||
TEST(MessageRouterTest, ThresholdMessageExactSuccessCallback) {
|
||||
const auto string_length = kMsgSizeThresholdInBytes / kCharSize;
|
||||
CharTestHandlerPtr handler =
|
||||
new CharTestHandler(TestType::SUCCESS, kMessageSizeThreshold, 'A');
|
||||
handler->SetMessageSizeThreshold(kMessageSizeThreshold);
|
||||
new CharTestHandler(TestType::SUCCESS, string_length, 'A');
|
||||
handler->SetMessageSizeThreshold(kMsgSizeThresholdInBytes);
|
||||
|
||||
handler->ExecuteTest();
|
||||
|
||||
@@ -170,10 +170,11 @@ TEST(MessageRouterTest, ThresholMessageExactdSuccessCallback) {
|
||||
}
|
||||
|
||||
TEST(MessageRouterTest, ThresholdMessageOverSuccessCallback) {
|
||||
const auto OverThreshold = kMessageSizeThreshold + 1;
|
||||
const auto over_threshold = kMsgSizeThresholdInBytes + kCharSize;
|
||||
const auto string_length = over_threshold / kCharSize;
|
||||
CharTestHandlerPtr handler =
|
||||
new CharTestHandler(TestType::SUCCESS, OverThreshold, 'A');
|
||||
handler->SetMessageSizeThreshold(kMessageSizeThreshold);
|
||||
new CharTestHandler(TestType::SUCCESS, string_length, 'A');
|
||||
handler->SetMessageSizeThreshold(kMsgSizeThresholdInBytes);
|
||||
|
||||
handler->ExecuteTest();
|
||||
|
||||
@@ -181,21 +182,23 @@ TEST(MessageRouterTest, ThresholdMessageOverSuccessCallback) {
|
||||
}
|
||||
|
||||
TEST(MessageRouterTest, ThresholdMessageUnderFailureCallback) {
|
||||
const auto UnderThreshold = kMessageSizeThreshold - 1;
|
||||
const auto under_threshold = kMsgSizeThresholdInBytes - kCharSize;
|
||||
const auto string_length = under_threshold / kCharSize;
|
||||
CharTestHandlerPtr handler =
|
||||
new CharTestHandler(TestType::FAILURE, UnderThreshold, 'A');
|
||||
handler->SetMessageSizeThreshold(kMessageSizeThreshold);
|
||||
new CharTestHandler(TestType::FAILURE, string_length, 'A');
|
||||
handler->SetMessageSizeThreshold(kMsgSizeThresholdInBytes);
|
||||
|
||||
handler->ExecuteTest();
|
||||
|
||||
ReleaseAndWaitForDestructor(handler);
|
||||
}
|
||||
|
||||
TEST(MessageRouterTest, ThresholMessageOverdFailureCallback) {
|
||||
const auto OverThreshold = kMessageSizeThreshold + 1;
|
||||
TEST(MessageRouterTest, ThresholdMessageOverFailureCallback) {
|
||||
const auto over_threshold = kMsgSizeThresholdInBytes + kCharSize;
|
||||
const auto string_length = over_threshold / kCharSize;
|
||||
CharTestHandlerPtr handler =
|
||||
new CharTestHandler(TestType::FAILURE, OverThreshold, 'A');
|
||||
handler->SetMessageSizeThreshold(kMessageSizeThreshold);
|
||||
new CharTestHandler(TestType::FAILURE, string_length, 'A');
|
||||
handler->SetMessageSizeThreshold(kMsgSizeThresholdInBytes);
|
||||
|
||||
handler->ExecuteTest();
|
||||
|
||||
@@ -203,10 +206,11 @@ TEST(MessageRouterTest, ThresholMessageOverdFailureCallback) {
|
||||
}
|
||||
|
||||
TEST(MessageRouterTest, ThresholdUtf8MessageUnderSuccessCallback) {
|
||||
const auto UnderThreshold = kMessageSizeThreshold - 1;
|
||||
const auto under_threshold = kMsgSizeThresholdInBytes - kCharSize;
|
||||
const auto string_length = under_threshold / kCharSize;
|
||||
WCharTestHandlerPtr handler =
|
||||
new WCharTestHandler(TestType::SUCCESS, UnderThreshold, L'\u304B');
|
||||
handler->SetMessageSizeThreshold(kMessageSizeThreshold);
|
||||
new WCharTestHandler(TestType::SUCCESS, string_length, L'\u304B');
|
||||
handler->SetMessageSizeThreshold(kMsgSizeThresholdInBytes);
|
||||
|
||||
handler->ExecuteTest();
|
||||
|
||||
@@ -214,10 +218,11 @@ TEST(MessageRouterTest, ThresholdUtf8MessageUnderSuccessCallback) {
|
||||
}
|
||||
|
||||
TEST(MessageRouterTest, ThresholdUtf8MessageOverSuccessCallback) {
|
||||
const auto OverThreshold = kMessageSizeThreshold + 1;
|
||||
const auto over_threshold = kMsgSizeThresholdInBytes + kCharSize;
|
||||
const auto string_length = over_threshold / kCharSize;
|
||||
WCharTestHandlerPtr handler =
|
||||
new WCharTestHandler(TestType::SUCCESS, OverThreshold, L'\u304B');
|
||||
handler->SetMessageSizeThreshold(kMessageSizeThreshold);
|
||||
new WCharTestHandler(TestType::SUCCESS, string_length, L'\u304B');
|
||||
handler->SetMessageSizeThreshold(kMsgSizeThresholdInBytes);
|
||||
|
||||
handler->ExecuteTest();
|
||||
|
||||
|
Reference in New Issue
Block a user