Skip to content

Commit

Permalink
Fix recording of performance data
Browse files Browse the repository at this point in the history
  • Loading branch information
bastih committed Nov 7, 2013
1 parent 77a1ade commit c280f3e
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 5 deletions.
7 changes: 3 additions & 4 deletions src/lib/access/system/RequestParseTask.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
#include "helper/numerical_converter.h"
#include "helper/PapiTracer.h"
#include "helper/sha1.h"

#include "helper/vector_helpers.h"
#include "io/TransactionManager.h"
#include "net/Router.h"
#include "net/AbstractConnection.h"
Expand Down Expand Up @@ -72,8 +72,6 @@ void RequestParseTask::operator()() {

performance_vector_t& performance_data = _responseTask->getPerformanceData();



bool recordPerformance = false;
std::vector<std::shared_ptr<Task> > tasks;

Expand Down Expand Up @@ -109,7 +107,7 @@ void RequestParseTask::operator()() {

if (ctx && reader.parse(query_string, request_data)) {
_responseTask->setTxContext(*ctx);
recordPerformance = request_data["performance"].asBool();
recordPerformance = getOrDefault(body_data, "performance", "false") == "true";

// the performance attribute for this operation (at [0])
if (recordPerformance) {
Expand All @@ -127,6 +125,7 @@ void RequestParseTask::operator()() {
sessionId = request_data["sessionId"].asInt();
_responseTask->setPriority(priority);
_responseTask->setSessionId(sessionId);
_responseTask->setRecordPerformanceData(recordPerformance);
try {
tasks = QueryParser::instance().deserialize(
QueryTransformationEngine::getInstance()->transform(request_data),
Expand Down
10 changes: 10 additions & 0 deletions src/lib/helper/vector_helpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,14 @@ bool allValid(Input values) {
return std::all_of(std::begin(values), std::end(values), [] (decltype(*begin(values)) v) { return v != nullptr; });
}

template <typename MapType>
auto getOrDefault(const MapType& map, typename MapType::key_type key, typename MapType::mapped_type def) -> typename MapType::mapped_type {
auto f = map.find(key);
if (f != std::end(map)) {
return f->second;
}
return def;
}


#endif
8 changes: 7 additions & 1 deletion tools/test_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@ def test_urls(port):
assert("/static/" in op)
assert("/operations/" in op)

def test_perf_flag(port):
op = subprocess.check_output("curl -X POST -s --data performance=true --data-urlencode query@test/autojson/NoOp.json localhost:{0}/query/".format(port).split(" "))
assert "performanceData" in op
op = subprocess.check_output("curl -X POST -s --data performance=false --data-urlencode query@test/autojson/NoOp.json localhost:{0}/query/".format(port).split(" "))
assert "performanceData" not in op

def test_sockets(port, pid):
i = get_num_sockets(pid)
c = Connection(port=port)
Expand Down Expand Up @@ -73,7 +79,7 @@ def main():

test_tx(c)
test_sockets(port, p.pid)

test_perf_flag(port)
send_query_and_terminate_before_response(port)
time.sleep(2)
send_query_and_terminate_before_response(port)
Expand Down

0 comments on commit c280f3e

Please sign in to comment.