зеркало из https://github.com/microsoft/CCF.git
JS logging perf test (#1987)
This commit is contained in:
Родитель
bd7f87278b
Коммит
ce63da01f6
|
@ -840,6 +840,8 @@ if(BUILD_TESTS)
|
|||
1000
|
||||
--repetitions
|
||||
1000
|
||||
--msg-ser-fmt
|
||||
msgpack
|
||||
)
|
||||
|
||||
add_perf_test(
|
||||
|
@ -858,6 +860,27 @@ if(BUILD_TESTS)
|
|||
--repetitions
|
||||
10000
|
||||
--use-websockets
|
||||
--msg-ser-fmt
|
||||
msgpack
|
||||
)
|
||||
|
||||
add_perf_test(
|
||||
NAME logging_scenario_js_perf_test
|
||||
PYTHON_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/tests/infra/perfclient.py
|
||||
CONSENSUS cft
|
||||
CLIENT_BIN ./scenario_perf_client
|
||||
LABEL log_scenario_js
|
||||
ADDITIONAL_ARGS
|
||||
--js-app-bundle
|
||||
${CMAKE_SOURCE_DIR}/samples/apps/logging/js
|
||||
--scenario-file
|
||||
${CMAKE_CURRENT_LIST_DIR}/tests/perf_logging_scenario_100txs.json
|
||||
--max-writes-ahead
|
||||
1000
|
||||
--repetitions
|
||||
800
|
||||
--msg-ser-fmt
|
||||
text
|
||||
)
|
||||
endif()
|
||||
|
||||
|
|
|
@ -350,6 +350,27 @@ namespace client
|
|||
append_prepared_tx(tx, index);
|
||||
}
|
||||
|
||||
void add_prepared_tx(
|
||||
const std::string& method,
|
||||
const nlohmann::json& params,
|
||||
bool expects_commit,
|
||||
const std::optional<size_t>& index,
|
||||
const serdes::Pack& serdes)
|
||||
{
|
||||
auto body = serdes::pack(params, serdes);
|
||||
|
||||
const PreparedTx tx{rpc_connection->gen_request(
|
||||
method,
|
||||
body,
|
||||
serdes == serdes::Pack::Text ?
|
||||
http::headervalues::contenttype::OCTET_STREAM :
|
||||
http::headervalues::contenttype::MSGPACK),
|
||||
method,
|
||||
expects_commit};
|
||||
|
||||
append_prepared_tx(tx, index);
|
||||
}
|
||||
|
||||
void add_prepared_tx(
|
||||
const std::string& method,
|
||||
const nlohmann::json& params,
|
||||
|
|
|
@ -10,6 +10,9 @@ struct ScenarioPerfClientOptions : public client::PerfOptions
|
|||
{
|
||||
size_t repetitions = 1;
|
||||
std::string scenario_file;
|
||||
std::vector<std::pair<std::string, serdes::Pack>> serdes_map{
|
||||
{"text", serdes::Pack::Text}, {"msgpack", serdes::Pack::MsgPack}};
|
||||
serdes::Pack serdes;
|
||||
|
||||
ScenarioPerfClientOptions(
|
||||
CLI::App& app, const std::string& default_pid_file) :
|
||||
|
@ -19,6 +22,9 @@ struct ScenarioPerfClientOptions : public client::PerfOptions
|
|||
app.add_option("--scenario-file", scenario_file)
|
||||
->required(true)
|
||||
->check(CLI::ExistingFile);
|
||||
app.add_option("--msg-ser-fmt", serdes, "Message serialisation format")
|
||||
->required()
|
||||
->transform(CLI::CheckedTransformer(serdes_map, CLI::ignore_case));
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -107,7 +113,11 @@ private:
|
|||
const auto& transaction = transactions[i];
|
||||
|
||||
add_prepared_tx(
|
||||
transaction["method"], transaction["params"], true, std::nullopt);
|
||||
transaction["method"],
|
||||
transaction["params"],
|
||||
true,
|
||||
std::nullopt,
|
||||
options.serdes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче