summaryrefslogtreecommitdiffstats
path: root/vbench/src/tests
diff options
context:
space:
mode:
Diffstat (limited to 'vbench/src/tests')
-rw-r--r--vbench/src/tests/app_dumpurl/app_dumpurl_test.cpp5
-rw-r--r--vbench/src/tests/app_vbench/.gitignore1
-rw-r--r--vbench/src/tests/app_vbench/CMakeLists.txt2
-rw-r--r--vbench/src/tests/app_vbench/app_vbench_test.cpp7
-rw-r--r--vbench/src/tests/app_vbench/vbench.cfg.template.template (renamed from vbench/src/tests/app_vbench/vbench.cfg.template)0
-rw-r--r--vbench/src/tests/http_client/http_client_test.cpp19
-rw-r--r--vbench/src/tests/http_connection/http_connection_test.cpp7
-rw-r--r--vbench/src/tests/http_connection_pool/http_connection_pool_test.cpp11
-rw-r--r--vbench/src/tests/socket/socket_test.cpp55
9 files changed, 59 insertions, 48 deletions
diff --git a/vbench/src/tests/app_dumpurl/app_dumpurl_test.cpp b/vbench/src/tests/app_dumpurl/app_dumpurl_test.cpp
index ae37aface73..15453078b35 100644
--- a/vbench/src/tests/app_dumpurl/app_dumpurl_test.cpp
+++ b/vbench/src/tests/app_dumpurl/app_dumpurl_test.cpp
@@ -2,6 +2,7 @@
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
#include <vespa/vespalib/util/slaveproc.h>
+#include <vespa/vespalib/net/crypto_engine.h>
using namespace vbench;
using vespalib::SlaveProc;
@@ -9,6 +10,8 @@ using vespalib::SlaveProc;
using InputReader = vespalib::InputReader;
using OutputWriter = vespalib::OutputWriter;
+auto null_crypto = std::make_shared<vespalib::NullCryptoEngine>();
+
bool endsWith(const Memory &mem, const string &str) {
return (mem.size < str.size()) ? false
: (strncmp(mem.data + mem.size - str.size(), str.data(), str.size()) == 0);
@@ -34,7 +37,7 @@ TEST("dumpurl usage") {
TEST_MT_F("run dumpurl", 2, ServerSocket()) {
if (thread_id == 0) {
- Stream::UP stream = f1.accept();
+ Stream::UP stream = f1.accept(*null_crypto);
SimpleBuffer ignore;
readUntil(*stream, ignore, "\r\n\r\n");
OutputWriter out(*stream, 256);
diff --git a/vbench/src/tests/app_vbench/.gitignore b/vbench/src/tests/app_vbench/.gitignore
index 0f290bb76ac..37e7b548d05 100644
--- a/vbench/src/tests/app_vbench/.gitignore
+++ b/vbench/src/tests/app_vbench/.gitignore
@@ -1,3 +1,4 @@
+/vbench.cfg.template
/vbench.cfg
/vbench.out
vbench_app_vbench_test_app
diff --git a/vbench/src/tests/app_vbench/CMakeLists.txt b/vbench/src/tests/app_vbench/CMakeLists.txt
index b5ce997c31a..b246fd2f1fd 100644
--- a/vbench/src/tests/app_vbench/CMakeLists.txt
+++ b/vbench/src/tests/app_vbench/CMakeLists.txt
@@ -7,4 +7,4 @@ vespa_add_executable(vbench_app_vbench_test_app TEST
vbench
)
vespa_add_test(NAME vbench_app_vbench_test_app NO_VALGRIND COMMAND vbench_app_vbench_test_app)
-configure_file(vbench.cfg.template vbench.cfg @ONLY)
+configure_file(vbench.cfg.template.template vbench.cfg.template @ONLY)
diff --git a/vbench/src/tests/app_vbench/app_vbench_test.cpp b/vbench/src/tests/app_vbench/app_vbench_test.cpp
index 366fe4ce871..00645045fb3 100644
--- a/vbench/src/tests/app_vbench/app_vbench_test.cpp
+++ b/vbench/src/tests/app_vbench/app_vbench_test.cpp
@@ -2,6 +2,7 @@
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
#include <vespa/vespalib/util/slaveproc.h>
+#include <vespa/vespalib/net/crypto_engine.h>
using namespace vbench;
using vespalib::SlaveProc;
@@ -9,6 +10,8 @@ using vespalib::SlaveProc;
using InputReader = vespalib::InputReader;
using OutputWriter = vespalib::OutputWriter;
+auto null_crypto = std::make_shared<vespalib::NullCryptoEngine>();
+
bool endsWith(const Memory &mem, const string &str) {
return (mem.size < str.size()) ? false
: (strncmp(mem.data + mem.size - str.size(), str.data(), str.size()) == 0);
@@ -35,7 +38,7 @@ TEST("vbench usage") {
TEST_MT_F("run vbench", 2, ServerSocket()) {
if (thread_id == 0) {
for (;;) {
- Stream::UP stream = f1.accept();
+ Stream::UP stream = f1.accept(*null_crypto);
if (stream.get() == 0) {
break;
}
@@ -51,7 +54,7 @@ TEST_MT_F("run vbench", 2, ServerSocket()) {
}
} else {
std::string out;
- EXPECT_TRUE(SlaveProc::run(strfmt("sed -i 's/_LOCAL_PORT_/%d/' vbench.cfg", f1.port()).c_str()));
+ EXPECT_TRUE(SlaveProc::run(strfmt("sed 's/_LOCAL_PORT_/%d/' vbench.cfg.template > vbench.cfg", f1.port()).c_str()));
EXPECT_TRUE(SlaveProc::run("../../apps/vbench/vbench_app run vbench.cfg 2> vbench.out", out));
fprintf(stderr, "%s\n", out.c_str());
f1.close();
diff --git a/vbench/src/tests/app_vbench/vbench.cfg.template b/vbench/src/tests/app_vbench/vbench.cfg.template.template
index 950d5151780..950d5151780 100644
--- a/vbench/src/tests/app_vbench/vbench.cfg.template
+++ b/vbench/src/tests/app_vbench/vbench.cfg.template.template
diff --git a/vbench/src/tests/http_client/http_client_test.cpp b/vbench/src/tests/http_client/http_client_test.cpp
index 36e1ca12110..36e04e012a0 100644
--- a/vbench/src/tests/http_client/http_client_test.cpp
+++ b/vbench/src/tests/http_client/http_client_test.cpp
@@ -1,12 +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>
using namespace vbench;
using InputReader = vespalib::InputReader;
using OutputWriter = vespalib::OutputWriter;
+auto null_crypto = std::make_shared<vespalib::NullCryptoEngine>();
+
void checkMemory(const string &expect, const Memory &mem) {
EXPECT_EQUAL(expect, string(mem.data, mem.size));
}
@@ -41,20 +44,20 @@ TEST_MT_F("verify request", 2, ServerSocket()) {
out.write("\r\n");
}
SimpleBuffer actual;
- Stream::UP stream = f1.accept();
+ Stream::UP stream = f1.accept(*null_crypto);
ASSERT_TRUE(stream.get() != 0);
readUntil(*stream, actual, "\r\n\r\n");
EXPECT_TRUE(expect == actual);
} else {
SimpleHttpResultHandler handler;
- HttpClient::fetch(ServerSpec("localhost", f1.port()),
+ HttpClient::fetch(*null_crypto, ServerSpec("localhost", f1.port()),
"/this/is/the/url", handler);
}
}
TEST_MT_F("verify connection close", 2, ServerSocket()) {
if (thread_id == 0) {
- Stream::UP stream = f1.accept();
+ Stream::UP stream = f1.accept(*null_crypto);
SimpleBuffer ignore;
readUntil(*stream, ignore, "\r\n\r\n");
OutputWriter out(*stream, 256);
@@ -63,7 +66,7 @@ TEST_MT_F("verify connection close", 2, ServerSocket()) {
out.write("data");
} else {
SimpleHttpResultHandler handler;
- HttpClient::fetch(ServerSpec("localhost", f1.port()),
+ HttpClient::fetch(*null_crypto, ServerSpec("localhost", f1.port()),
"/foo", handler);
EXPECT_EQUAL(0u, handler.failures().size());
EXPECT_EQUAL(0u, handler.headers().size());
@@ -73,7 +76,7 @@ TEST_MT_F("verify connection close", 2, ServerSocket()) {
TEST_MT_F("verify content length", 2, ServerSocket()) {
if (thread_id == 0) {
- Stream::UP stream = f1.accept();
+ Stream::UP stream = f1.accept(*null_crypto);
SimpleBuffer ignore;
readUntil(*stream, ignore, "\r\n\r\n");
OutputWriter out(*stream, 256);
@@ -83,7 +86,7 @@ TEST_MT_F("verify content length", 2, ServerSocket()) {
out.write("data");
} else {
SimpleHttpResultHandler handler;
- HttpClient::fetch(ServerSpec("localhost", f1.port()),
+ HttpClient::fetch(*null_crypto, ServerSpec("localhost", f1.port()),
"/foo", handler);
EXPECT_EQUAL(0u, handler.failures().size());
EXPECT_EQUAL(1u, handler.headers().size());
@@ -93,7 +96,7 @@ TEST_MT_F("verify content length", 2, ServerSocket()) {
TEST_MT_F("verify chunked encoding", 2, ServerSocket()) {
if (thread_id == 0) {
- Stream::UP stream = f1.accept();
+ Stream::UP stream = f1.accept(*null_crypto);
SimpleBuffer ignore;
readUntil(*stream, ignore, "\r\n\r\n");
OutputWriter out(*stream, 256);
@@ -108,7 +111,7 @@ TEST_MT_F("verify chunked encoding", 2, ServerSocket()) {
out.write("\r\n");
} else {
SimpleHttpResultHandler handler;
- HttpClient::fetch(ServerSpec("localhost", f1.port()),
+ HttpClient::fetch(*null_crypto, ServerSpec("localhost", f1.port()),
"/foo", handler);
if (handler.failures().size() > 0) {
fprintf(stderr, "failure: %s\n", handler.failures()[0].c_str());
diff --git a/vbench/src/tests/http_connection/http_connection_test.cpp b/vbench/src/tests/http_connection/http_connection_test.cpp
index 0776c5e212c..e3044978b2b 100644
--- a/vbench/src/tests/http_connection/http_connection_test.cpp
+++ b/vbench/src/tests/http_connection/http_connection_test.cpp
@@ -1,13 +1,16 @@
// 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>
using namespace vbench;
+auto null_crypto = std::make_shared<vespalib::NullCryptoEngine>();
+
TEST("http connection") {
ServerSocket serverSocket;
- HttpConnection client(ServerSpec("localhost", serverSocket.port()));
- Stream::UP server = serverSocket.accept();
+ HttpConnection client(*null_crypto, ServerSpec("localhost", serverSocket.port()));
+ Stream::UP server = serverSocket.accept(*null_crypto);
EXPECT_TRUE(client.fresh());
EXPECT_EQUAL("localhost", client.server().host);
EXPECT_FALSE(client.mayReuse(0.1)); // still fresh
diff --git a/vbench/src/tests/http_connection_pool/http_connection_pool_test.cpp b/vbench/src/tests/http_connection_pool/http_connection_pool_test.cpp
index 1c36cb6891f..c0c5982d22b 100644
--- a/vbench/src/tests/http_connection_pool/http_connection_pool_test.cpp
+++ b/vbench/src/tests/http_connection_pool/http_connection_pool_test.cpp
@@ -2,17 +2,20 @@
#include <vespa/vespalib/testkit/testapp.h>
#include <vbench/test/all.h>
#include <vespa/vespalib/util/sync.h>
+#include <vespa/vespalib/net/crypto_engine.h>
using namespace vbench;
using vespalib::CountDownLatch;
+auto null_crypto = std::make_shared<vespalib::NullCryptoEngine>();
+
TEST_MT_F("http connection pool", 2, ServerSocket()) {
if (thread_id == 0) {
- for (; f1.accept().get() != 0; ) {}
+ for (; f1.accept(*null_crypto).get() != 0; ) {}
} else {
Timer timer;
HttpConnection::UP conn;
- HttpConnectionPool pool(timer);
+ HttpConnectionPool pool(null_crypto, timer);
conn = pool.getConnection(ServerSpec("localhost", f1.port()));
EXPECT_TRUE(conn.get() != 0);
pool.putConnection(std::move(conn));
@@ -28,11 +31,11 @@ TEST_MT_F("http connection pool", 2, ServerSocket()) {
}
}
-TEST_MT_FFFF("stress http connection pool", 256, ServerSocket(), Timer(), HttpConnectionPool(f2),
+TEST_MT_FFFF("stress http connection pool", 256, ServerSocket(), Timer(), HttpConnectionPool(null_crypto, f2),
CountDownLatch(num_threads-2))
{
if (thread_id == 0) {
- for (; f1.accept().get() != 0; ) {}
+ for (; f1.accept(*null_crypto).get() != 0; ) {}
} else {
while (f2.sample() < 5.0) {
HttpConnection::UP conn = f3.getConnection(ServerSpec("localhost", f1.port()));
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(); }