summaryrefslogtreecommitdiffstats
path: root/vbench/src/tests/socket/socket_test.cpp
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2019-01-17 13:58:49 +0000
committerHåvard Pettersen <havardpe@oath.com>2019-01-25 12:36:05 +0000
commit2ec8f7e3540b5dd4a5521b2f92c47de64ed01869 (patch)
treeea6d69d65ea79c2cc23c1f29cf91f8890a62dcc4 /vbench/src/tests/socket/socket_test.cpp
parent02d24b5d24d8c3c3e97dbca86357881a5282601c (diff)
TLS support in vbench
- vbench/dumpurl applications explicitly run without encryption for now (config file/command line options should be added). - configstatus tool uses default encryption which will pick up local settings via environment where applicable.
Diffstat (limited to 'vbench/src/tests/socket/socket_test.cpp')
-rw-r--r--vbench/src/tests/socket/socket_test.cpp55
1 files changed, 25 insertions, 30 deletions
diff --git a/vbench/src/tests/socket/socket_test.cpp b/vbench/src/tests/socket/socket_test.cpp
index 609191fc596..8623c946c84 100644
--- a/vbench/src/tests/socket/socket_test.cpp
+++ b/vbench/src/tests/socket/socket_test.cpp
@@ -1,9 +1,15 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
+#include <vespa/vespalib/net/crypto_engine.h>
+#include <vespa/vespalib/net/tls/tls_crypto_engine.h>
+#include <vespa/vespalib/test/make_tls_options_for_testing.h>
using namespace vbench;
+auto null_crypto = std::make_shared<vespalib::NullCryptoEngine>();
+auto tls_crypto = std::make_shared<vespalib::TlsCryptoEngine>(vespalib::test::make_tls_options_for_testing());
+
using OutputWriter = vespalib::OutputWriter;
const size_t numLines = 100;
@@ -32,43 +38,32 @@ struct Agent {
}
};
-struct Client : public Agent, public vespalib::Runnable {
- Client(Stream::UP s) : Agent(std::move(s)) {}
- void run() override {
- TEST_THREAD("client");
- write("client-");
- read("server-");
- }
-};
-
-struct Server : public Agent, public vespalib::Runnable {
- Server(Stream::UP s) : Agent(std::move(s)) {}
- void run() override {
- TEST_THREAD("server");
- read("client-");
- write("server-");
- }
-};
-
-TEST("socket") {
- ServerSocket serverSocket;
- Client client(Stream::UP(new Socket("localhost", serverSocket.port())));
- Server server(serverSocket.accept());
- vespalib::Thread clientThread(client);
- vespalib::Thread serverThread(server);
- clientThread.start();
- serverThread.start();
- clientThread.join();
- serverThread.join();
- {
- server.socket.reset();
+void verify_socket(CryptoEngine &crypto, ServerSocket &server_socket, size_t thread_id) {
+ if (thread_id == 0) { // client
+ Agent client(std::make_unique<Socket>(crypto, "localhost", server_socket.port()));
+ client.write("client-");
+ client.read("server-");
+ TEST_BARRIER(); // #1
LineReader reader(*client.socket);
string line;
EXPECT_FALSE(reader.readLine(line));
EXPECT_TRUE(line.empty());
EXPECT_TRUE(client.socket->eof());
EXPECT_FALSE(client.socket->tainted());
+ } else { // server
+ Agent server(server_socket.accept(crypto));
+ server.read("client-");
+ server.write("server-");
+ TEST_BARRIER(); // #1
}
}
+TEST_MT_F("socket", 2, ServerSocket()) {
+ TEST_DO(verify_socket(*null_crypto, f1, thread_id));
+}
+
+TEST_MT_F("secure socket", 2, ServerSocket()) {
+ TEST_DO(verify_socket(*tls_crypto, f1, thread_id));
+}
+
TEST_MAIN() { TEST_RUN_ALL(); }