aboutsummaryrefslogtreecommitdiffstats
path: root/fnet/src/tests/frt
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2021-06-01 09:13:14 +0000
committerHåvard Pettersen <havardpe@oath.com>2021-06-01 11:22:31 +0000
commit5a66d61ea772f59583c9af03087014d74051fecf (patch)
tree77dda4d754178a287eb98c53b0789eccca2abb7b /fnet/src/tests/frt
parent97bb8e47324450b1cd2ec77a5ee2b03686631bce (diff)
drop empty buffers
Diffstat (limited to 'fnet/src/tests/frt')
-rw-r--r--fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp43
1 files changed, 34 insertions, 9 deletions
diff --git a/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp b/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp
index 58acb928540..b03df359715 100644
--- a/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp
+++ b/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp
@@ -18,8 +18,8 @@ struct Rpc : FRT_Invokable {
FastOS_ThreadPool thread_pool;
FNET_Transport transport;
FRT_Supervisor orb;
- Rpc(CryptoEngine::SP crypto, size_t num_threads)
- : thread_pool(128_Ki), transport(TransportConfig(num_threads).crypto(std::move(crypto))), orb(&transport) {}
+ Rpc(CryptoEngine::SP crypto, size_t num_threads, bool drop_empty)
+ : thread_pool(128_Ki), transport(TransportConfig(num_threads).crypto(std::move(crypto)).drop_empty_buffers(drop_empty)), orb(&transport) {}
void start() {
ASSERT_TRUE(transport.Start(&thread_pool));
}
@@ -38,7 +38,7 @@ struct Rpc : FRT_Invokable {
struct Server : Rpc {
uint32_t port;
- Server(CryptoEngine::SP crypto, size_t num_threads) : Rpc(std::move(crypto), num_threads), port(listen()) {
+ Server(CryptoEngine::SP crypto, size_t num_threads, bool drop_empty = false) : Rpc(std::move(crypto), num_threads, drop_empty), port(listen()) {
init_rpc();
start();
}
@@ -58,7 +58,7 @@ struct Server : Rpc {
struct Client : Rpc {
uint32_t port;
- Client(CryptoEngine::SP crypto, size_t num_threads, const Server &server) : Rpc(std::move(crypto), num_threads), port(server.port) {
+ Client(CryptoEngine::SP crypto, size_t num_threads, const Server &server, bool drop_empty = false) : Rpc(std::move(crypto), num_threads, drop_empty), port(server.port) {
start();
}
FRT_Target *connect() { return Rpc::connect(port); }
@@ -85,7 +85,16 @@ struct Result {
}
};
-void perform_test(size_t thread_id, Client &client, Result &result) {
+bool verbose = false;
+double budget = 1.5;
+
+void perform_test(size_t thread_id, Client &client, Result &result, bool vital = false) {
+ if (!vital && !verbose) {
+ if (thread_id == 0) {
+ fprintf(stderr, "... skipping non-vital test; run with 'verbose' to enable\n");
+ }
+ return;
+ }
uint64_t seq = 0;
FRT_Target *target = client.connect();
FRT_RPCRequest *req = client.orb.AllocRPCRequest();
@@ -101,7 +110,7 @@ void perform_test(size_t thread_id, Client &client, Result &result) {
};
size_t loop_cnt = 8;
BenchmarkTimer::benchmark(invoke, invoke, 0.5);
- BenchmarkTimer timer(1.5);
+ BenchmarkTimer timer(budget);
while (timer.has_budget()) {
timer.before();
for (size_t i = 0; i < loop_cnt; ++i) {
@@ -139,13 +148,29 @@ TEST_MT_FFF("parallel rpc with 1/1 transport threads and num_cores user threads
TEST_MT_FFF("parallel rpc with 1/1 transport threads and num_cores user threads (tls encryption)",
getNumThreads(), Server(tls_crypto, 1), Client(tls_crypto, 1, f1), Result(num_threads)) { perform_test(thread_id, f2, f3); }
+TEST_MT_FFF("parallel rpc with 1/1 transport threads and num_cores user threads (tls encryption + drop empty buffers)",
+ getNumThreads(), Server(tls_crypto, 1, true), Client(tls_crypto, 1, f1, true), Result(num_threads)) { perform_test(thread_id, f2, f3); }
+
TEST_MT_FFF("parallel rpc with 8/8 transport threads and num_cores user threads (no encryption)",
- getNumThreads(), Server(null_crypto, 8), Client(null_crypto, 8, f1), Result(num_threads)) { perform_test(thread_id, f2, f3); }
+ getNumThreads(), Server(null_crypto, 8), Client(null_crypto, 8, f1), Result(num_threads)) { perform_test(thread_id, f2, f3, true); }
TEST_MT_FFF("parallel rpc with 8/8 transport threads and num_cores user threads (xor encryption)",
getNumThreads(), Server(xor_crypto, 8), Client(xor_crypto, 8, f1), Result(num_threads)) { perform_test(thread_id, f2, f3); }
TEST_MT_FFF("parallel rpc with 8/8 transport threads and num_cores user threads (tls encryption)",
- getNumThreads(), Server(tls_crypto, 8), Client(tls_crypto, 8, f1), Result(num_threads)) { perform_test(thread_id, f2, f3); }
+ getNumThreads(), Server(tls_crypto, 8), Client(tls_crypto, 8, f1), Result(num_threads)) { perform_test(thread_id, f2, f3, true); }
-TEST_MAIN() { TEST_RUN_ALL(); }
+TEST_MT_FFF("parallel rpc with 8/8 transport threads and num_cores user threads (tls encryption + drop empty buffers)",
+ getNumThreads(), Server(tls_crypto, 8, true), Client(tls_crypto, 8, f1, true), Result(num_threads)) { perform_test(thread_id, f2, f3); }
+
+//-----------------------------------------------------------------------------
+
+int main(int argc, char **argv) {
+ TEST_MASTER.init(__FILE__);
+ if ((argc == 2) && (argv[1] == std::string("verbose"))) {
+ verbose = true;
+ budget = 10.0;
+ }
+ TEST_RUN_ALL();
+ return (TEST_MASTER.fini() ? 0 : 1);
+}