aboutsummaryrefslogtreecommitdiffstats
path: root/fbench
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2019-07-12 12:46:51 +0000
committerHåvard Pettersen <havardpe@oath.com>2019-07-12 12:46:51 +0000
commit711f101fbe56a93848285452311ba63ecc62f07f (patch)
tree18e5246fa8e2d317195b5eed2150eeaf1fa8f524 /fbench
parent1c79079945c56fa91de8427fbc8f2170eec9ed8c (diff)
added option to use default crypto engine as fallback
this will enable picking up TLS configuration from the environment
Diffstat (limited to 'fbench')
-rw-r--r--fbench/src/fbench/fbench.cpp20
-rw-r--r--fbench/src/fbench/fbench.h3
2 files changed, 17 insertions, 6 deletions
diff --git a/fbench/src/fbench/fbench.cpp b/fbench/src/fbench/fbench.cpp
index 205dc867950..723980cd1c7 100644
--- a/fbench/src/fbench/fbench.cpp
+++ b/fbench/src/fbench/fbench.cpp
@@ -63,13 +63,18 @@ FBench::~FBench()
bool
FBench::init_crypto_engine(const std::string &ca_certs_file_name,
const std::string &cert_chain_file_name,
- const std::string &private_key_file_name)
+ const std::string &private_key_file_name,
+ bool allow_default_tls)
{
if (ca_certs_file_name.empty() &&
cert_chain_file_name.empty() &&
private_key_file_name.empty())
{
- _crypto_engine = std::make_shared<vespalib::NullCryptoEngine>();
+ if (allow_default_tls) {
+ _crypto_engine = vespalib::CryptoEngine::get_default();
+ } else {
+ _crypto_engine = std::make_shared<vespalib::NullCryptoEngine>();
+ }
return true;
}
if (ca_certs_file_name.empty()) {
@@ -297,7 +302,8 @@ FBench::Usage()
printf(" -z : use single query file to be distributed between clients.\n");
printf(" -T <str> : CA certificate file to verify peer against.\n");
printf(" -C <str> : client certificate file name.\n");
- printf(" -K <str> : client private key file name.\n\n");
+ printf(" -K <str> : client private key file name.\n");
+ printf(" -D : use TLS configuration from environment if T/C/K is not used\n\n");
printf(" <hostname> : the host you want to benchmark.\n");
printf(" <port> : the port to use when contacting the host.\n\n");
printf("Several hostnames and ports can be listed\n");
@@ -332,6 +338,7 @@ FBench::Main(int argc, char *argv[])
std::string ca_certs_file_name; // -T
std::string cert_chain_file_name; // -C
std::string private_key_file_name; // -K
+ bool allow_default_tls = false; // -D
int restartLimit = -1;
bool keepAlive = true;
@@ -351,7 +358,7 @@ FBench::Main(int argc, char *argv[])
idx = 1;
optError = false;
- while((opt = GetOpt(argc, argv, "H:A:T:C:K:a:n:c:l:i:s:q:o:r:m:p:kxyzP", arg, idx)) != -1) {
+ while((opt = GetOpt(argc, argv, "H:A:T:C:K:Da:n:c:l:i:s:q:o:r:m:p:kxyzP", arg, idx)) != -1) {
switch(opt) {
case 'A':
authority = arg;
@@ -372,6 +379,9 @@ FBench::Main(int argc, char *argv[])
case 'K':
private_key_file_name = std::string(arg);
break;
+ case 'D':
+ allow_default_tls = true;
+ break;
case 'a':
queryStringToAppend = std::string(arg);
break;
@@ -443,7 +453,7 @@ FBench::Main(int argc, char *argv[])
return -1;
}
- if (!init_crypto_engine(ca_certs_file_name, cert_chain_file_name, private_key_file_name)) {
+ if (!init_crypto_engine(ca_certs_file_name, cert_chain_file_name, private_key_file_name, allow_default_tls)) {
fprintf(stderr, "failed to initialize crypto engine\n");
return -1;
}
diff --git a/fbench/src/fbench/fbench.h b/fbench/src/fbench/fbench.h
index 8cbab2e6d6c..e4a8e4e0b27 100644
--- a/fbench/src/fbench/fbench.h
+++ b/fbench/src/fbench/fbench.h
@@ -35,7 +35,8 @@ private:
bool init_crypto_engine(const std::string &ca_certs_file_name,
const std::string &cert_chain_file_name,
- const std::string &private_key_file_name);
+ const std::string &private_key_file_name,
+ bool allow_default_tls);
void InitBenchmark(int numClients, int ignoreCount, int cycle,
const char *filenamePattern, const char *outputPattern,