aboutsummaryrefslogtreecommitdiffstats
path: root/fnet
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2018-09-03 09:54:06 +0000
committerHåvard Pettersen <havardpe@oath.com>2018-09-03 09:54:06 +0000
commita67d62b619af8a01bff2dffcdcf089368cf5401a (patch)
tree71e28eb0724317bd3280b38cd3a7f74366b63fdf /fnet
parent494d1479c6ca7ff618b4aab059a11383d1d98807 (diff)
also run invoke/session tests with xor crypto engine
bonus: wire crypto engine through supervisor
Diffstat (limited to 'fnet')
-rw-r--r--fnet/src/tests/frt/rpc/CMakeLists.txt2
-rw-r--r--fnet/src/tests/frt/rpc/invoke.cpp14
-rw-r--r--fnet/src/tests/frt/rpc/my_crypto_engine.hpp16
-rw-r--r--fnet/src/tests/frt/rpc/session.cpp13
-rw-r--r--fnet/src/vespa/fnet/frt/supervisor.cpp5
-rw-r--r--fnet/src/vespa/fnet/frt/supervisor.h9
6 files changed, 48 insertions, 11 deletions
diff --git a/fnet/src/tests/frt/rpc/CMakeLists.txt b/fnet/src/tests/frt/rpc/CMakeLists.txt
index b426ed42397..f935590ee77 100644
--- a/fnet/src/tests/frt/rpc/CMakeLists.txt
+++ b/fnet/src/tests/frt/rpc/CMakeLists.txt
@@ -6,6 +6,7 @@ vespa_add_executable(fnet_invoke_test_app TEST
fnet
)
vespa_add_test(NAME fnet_invoke_test_app COMMAND fnet_invoke_test_app)
+vespa_add_test(NAME fnet_invoke_test_app_xor COMMAND fnet_invoke_test_app ENVIRONMENT "CRYPTOENGINE=xor")
vespa_add_executable(fnet_detach_return_invoke_test_app TEST
SOURCES
detach_return_invoke.cpp
@@ -20,6 +21,7 @@ vespa_add_executable(fnet_session_test_app TEST
fnet
)
vespa_add_test(NAME fnet_session_test_app COMMAND fnet_session_test_app)
+vespa_add_test(NAME fnet_session_test_app_xor COMMAND fnet_session_test_app ENVIRONMENT "CRYPTOENGINE=xor")
vespa_add_executable(fnet_sharedblob_test_app TEST
SOURCES
sharedblob.cpp
diff --git a/fnet/src/tests/frt/rpc/invoke.cpp b/fnet/src/tests/frt/rpc/invoke.cpp
index f44a58dd8b3..787adb227f9 100644
--- a/fnet/src/tests/frt/rpc/invoke.cpp
+++ b/fnet/src/tests/frt/rpc/invoke.cpp
@@ -6,6 +6,11 @@
//-------------------------------------------------------------
+#include "my_crypto_engine.hpp"
+vespalib::CryptoEngine::SP crypto;
+
+//-------------------------------------------------------------
+
std::mutex _delayedReturnCntLock;
uint32_t _delayedReturnCnt = 0;
@@ -400,8 +405,8 @@ struct State {
FRT_RPCRequest *_req;
State()
- : _client(),
- _server(),
+ : _client(crypto),
+ _server(crypto),
_rpc(&_server, _client.GetScheduler()),
_echo(),
_peerSpec(),
@@ -929,4 +934,7 @@ TEST_F("invoke test", State()) {
EXPECT_TRUE(_phase_echo_cnt == 1);
}
-TEST_MAIN() { TEST_RUN_ALL(); }
+TEST_MAIN() {
+ crypto = my_crypto_engine();
+ TEST_RUN_ALL();
+}
diff --git a/fnet/src/tests/frt/rpc/my_crypto_engine.hpp b/fnet/src/tests/frt/rpc/my_crypto_engine.hpp
new file mode 100644
index 00000000000..6f573e5695a
--- /dev/null
+++ b/fnet/src/tests/frt/rpc/my_crypto_engine.hpp
@@ -0,0 +1,16 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+vespalib::CryptoEngine::SP my_crypto_engine() {
+ const char *env_str = getenv("CRYPTOENGINE");
+ if (!env_str) {
+ fprintf(stderr, "crypto engine: default\n");
+ return vespalib::CryptoEngine::get_default();
+ }
+ std::string engine(env_str);
+ if (engine == "xor") {
+ fprintf(stderr, "crypto engine: xor\n");
+ return std::make_shared<vespalib::XorCryptoEngine>();
+ }
+ TEST_FATAL(("invalid crypto engine: " + engine).c_str());
+ abort();
+}
diff --git a/fnet/src/tests/frt/rpc/session.cpp b/fnet/src/tests/frt/rpc/session.cpp
index 2e920ac9f98..b84db9b4e88 100644
--- a/fnet/src/tests/frt/rpc/session.cpp
+++ b/fnet/src/tests/frt/rpc/session.cpp
@@ -4,6 +4,12 @@
#include <vespa/fnet/frt/frt.h>
#include <mutex>
+//-------------------------------------------------------------
+
+#include "my_crypto_engine.hpp"
+vespalib::CryptoEngine::SP crypto;
+
+//-------------------------------------------------------------
class Session
{
@@ -82,7 +88,7 @@ struct RPC : public FRT_Invokable
TEST("session") {
RPC rpc;
- FRT_Supervisor orb;
+ FRT_Supervisor orb(crypto);
char spec[64];
rpc.Init(&orb);
ASSERT_TRUE(orb.Listen("tcp/0"));
@@ -121,4 +127,7 @@ TEST("session") {
EXPECT_TRUE(!rpc.bogusFini);
};
-TEST_MAIN() { TEST_RUN_ALL(); }
+TEST_MAIN() {
+ crypto = my_crypto_engine();
+ TEST_RUN_ALL();
+}
diff --git a/fnet/src/vespa/fnet/frt/supervisor.cpp b/fnet/src/vespa/fnet/frt/supervisor.cpp
index 0d2a9b68f17..927e2e84b94 100644
--- a/fnet/src/vespa/fnet/frt/supervisor.cpp
+++ b/fnet/src/vespa/fnet/frt/supervisor.cpp
@@ -26,7 +26,8 @@ FRT_Supervisor::FRT_Supervisor(FNET_Transport *transport,
}
-FRT_Supervisor::FRT_Supervisor(uint32_t threadStackSize,
+FRT_Supervisor::FRT_Supervisor(vespalib::CryptoEngine::SP crypto,
+ uint32_t threadStackSize,
uint32_t maxThreads)
: _transport(nullptr),
_threadPool(nullptr),
@@ -39,7 +40,7 @@ FRT_Supervisor::FRT_Supervisor(uint32_t threadStackSize,
_connHooks(*this),
_methodMismatchHook(nullptr)
{
- _transport = new FNET_Transport();
+ _transport = new FNET_Transport(std::move(crypto), 1);
assert(_transport != nullptr);
if (threadStackSize > 0) {
_threadPool = new FastOS_ThreadPool(threadStackSize, maxThreads);
diff --git a/fnet/src/vespa/fnet/frt/supervisor.h b/fnet/src/vespa/fnet/frt/supervisor.h
index e818e506186..051c1caceeb 100644
--- a/fnet/src/vespa/fnet/frt/supervisor.h
+++ b/fnet/src/vespa/fnet/frt/supervisor.h
@@ -9,6 +9,7 @@
#include <vespa/fnet/ipackethandler.h>
#include <vespa/fnet/connection.h>
#include <vespa/fnet/simplepacketstreamer.h>
+#include <vespa/vespalib/net/crypto_engine.h>
class FNET_Transport;
class FRT_Target;
@@ -82,10 +83,10 @@ private:
FRT_Supervisor &operator=(const FRT_Supervisor &);
public:
- FRT_Supervisor(FNET_Transport *transport,
- FastOS_ThreadPool *threadPool);
- FRT_Supervisor(uint32_t threadStackSize = 65000,
- uint32_t maxThreads = 0);
+ FRT_Supervisor(FNET_Transport *transport, FastOS_ThreadPool *threadPool);
+ FRT_Supervisor(vespalib::CryptoEngine::SP crypto, uint32_t threadStackSize = 65000, uint32_t maxThreads = 0);
+ FRT_Supervisor(uint32_t threadStackSize = 65000, uint32_t maxThreads = 0)
+ : FRT_Supervisor(vespalib::CryptoEngine::get_default(), threadStackSize, maxThreads) {}
virtual ~FRT_Supervisor();
bool StandAlone() { return _standAlone; }