summaryrefslogtreecommitdiffstats
path: root/fbench
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-03-12 09:20:18 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-03-12 09:20:18 +0000
commit769da18bf47b480e3b0822dd255f5570f56be846 (patch)
tree38dd076d1a05d122bbcb6a7e83d9941707e1ba25 /fbench
parentf317eace34bf4040c75fd10ac3f322b92b4b8876 (diff)
Do not aggregate header info over multiple calls
Diffstat (limited to 'fbench')
-rw-r--r--fbench/src/httpclient/httpclient.cpp17
-rw-r--r--fbench/src/httpclient/httpclient.h22
2 files changed, 18 insertions, 21 deletions
diff --git a/fbench/src/httpclient/httpclient.cpp b/fbench/src/httpclient/httpclient.cpp
index 9615a6e6df7..9265905c9f6 100644
--- a/fbench/src/httpclient/httpclient.cpp
+++ b/fbench/src/httpclient/httpclient.cpp
@@ -37,7 +37,6 @@ HTTPClient::HTTPClient(vespalib::CryptoEngine::SP engine, const char *hostname,
_buf(new char[_bufsize]),
_bufused(0),
_bufpos(0),
- _headerinfo(),
_isOpen(false),
_httpVersion(0),
_requestStatus(0),
@@ -219,7 +218,7 @@ HTTPClient::SplitString(char *input, int &argc, char **argv, int maxargs)
}
bool
-HTTPClient::ReadHTTPHeader()
+HTTPClient::ReadHTTPHeader(std::string & headerinfo)
{
int lineLen;
char line[4096];
@@ -268,8 +267,8 @@ HTTPClient::ReadHTTPHeader()
}
// Make sure to have enough memory in _headerinfo
- _headerinfo += benchmark_data;
- _headerinfo += "\n";
+ headerinfo += benchmark_data;
+ headerinfo += "\n";
}
SplitString(line, argc, argv, 32);
@@ -354,7 +353,7 @@ HTTPClient::ReadChunkHeader()
}
bool
-HTTPClient::Open(const char *url, bool usePost, const char *content, int cLen)
+HTTPClient::Open(std::string & headerinfo, const char *url, bool usePost, const char *content, int cLen)
{
if (_isOpen)
Close();
@@ -363,7 +362,7 @@ HTTPClient::Open(const char *url, bool usePost, const char *content, int cLen)
_dataRead = 0;
_dataDone = false;
_isOpen = Connect(url, usePost, content, cLen);
- if(!_isOpen || !ReadHTTPHeader()) {
+ if(!_isOpen || !ReadHTTPHeader(headerinfo)) {
Close();
return false;
}
@@ -532,20 +531,20 @@ HTTPClient::Fetch(const char *url, std::ostream *file,
ssize_t readRes = 0;
ssize_t written = 0;
- if (!Open(url, usePost, content, contentLen)) {
+ std::string headerinfo;
+ if (!Open(headerinfo, url, usePost, content, contentLen)) {
return FetchStatus(false, _requestStatus, _totalHitCount, 0);
}
// Write headerinfo
if (file) {
- file->write(_headerinfo.c_str(), _headerinfo.length());
+ file->write(headerinfo.c_str(), headerinfo.length());
if (file->fail()) {
Close();
return FetchStatus(false, _requestStatus, _totalHitCount, 0);
}
file->write("\r\n", 2);
// Reset header data.
- _headerinfo = "";
}
while((readRes = Read(buf, buflen)) > 0) {
diff --git a/fbench/src/httpclient/httpclient.h b/fbench/src/httpclient/httpclient.h
index cad01826db7..31a3881ec27 100644
--- a/fbench/src/httpclient/httpclient.h
+++ b/fbench/src/httpclient/httpclient.h
@@ -95,21 +95,20 @@ protected:
vespalib::SocketAddress _address;
vespalib::SyncCryptoSocket::UP _socket;
- std::string _hostname;
- int _port;
- bool _keepAlive;
- bool _headerBenchmarkdataCoverage;
- std::string _extraHeaders;
+ const std::string _hostname;
+ int _port;
+ bool _keepAlive;
+ bool _headerBenchmarkdataCoverage;
+ const std::string _extraHeaders;
vespalib::SocketSpec _sni_spec;
- std::string _host_header_value;
- uint64_t _reuseCount;
+ std::string _host_header_value;
+ uint64_t _reuseCount;
size_t _bufsize;
char *_buf;
ssize_t _bufused;
ssize_t _bufpos;
- std::string _headerinfo;
unsigned int _headerinfoPos;
bool _isOpen;
@@ -206,15 +205,14 @@ protected:
* @param argv the argument array.
* @param maxargs the size of 'argv'.
**/
- static char *SplitString(char *input, int &argc, char **argv,
- int maxargs);
+ static char *SplitString(char *input, int &argc, char **argv, int maxargs);
/**
* Read and parse the HTTP Header.
*
* @return success(true)/failure(fail)
**/
- bool ReadHTTPHeader();
+ bool ReadHTTPHeader(std::string & headerinfo);
/**
* Read and parse a chunk header. Only used with chunked encoding.
@@ -266,7 +264,7 @@ public:
* @param content if usePost is true, the content to post
* @param cLen length of content in bytes
**/
- bool Open(const char *url, bool usePost = false, const char *content = 0, int cLen = 0);
+ bool Open(std::string & headerinfo, const char *url, bool usePost = false, const char *content = 0, int cLen = 0);
/**
* Read data from the url we are currently connected to. This method