aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Siddharth Rakesh <sidrakesh@google.com>2015-06-18 16:45:55 -0700
committerGravatar Siddharth Rakesh <sidrakesh@google.com>2015-06-18 16:45:55 -0700
commitcc5857b624a0f99af1cdf9944213673080d0fe52 (patch)
tree3cae0cb33c5b956bfde7fe1b1aebd77d4e0f69f9 /test
parenta31c9d27e084017d459bc5c72f96c1a37704dc0b (diff)
Fixed hanging client declaration, server address can be passed now
Diffstat (limited to 'test')
-rw-r--r--test/cpp/qps/perf_db.proto (renamed from test/cpp/qps/user_data.proto)2
-rw-r--r--test/cpp/qps/perf_db_client.cc (renamed from test/cpp/qps/user_data_client.cc)20
-rw-r--r--test/cpp/qps/perf_db_client.h (renamed from test/cpp/qps/user_data_client.h)51
-rw-r--r--test/cpp/qps/report.cc41
-rw-r--r--test/cpp/qps/report.h12
-rwxr-xr-xtest/cpp/qps/run_perf_db_test.py4
-rw-r--r--test/cpp/util/benchmark_config.cc4
7 files changed, 71 insertions, 63 deletions
diff --git a/test/cpp/qps/user_data.proto b/test/cpp/qps/perf_db.proto
index 947ccce60b..f4f174937c 100644
--- a/test/cpp/qps/user_data.proto
+++ b/test/cpp/qps/perf_db.proto
@@ -33,7 +33,7 @@ import "test/cpp/qps/qpstest.proto";
package grpc.testing;
-service UserDataTransfer {
+service PerfDbTransfer {
// Sends client info
rpc RecordSingleClientData (SingleUserRecordRequest) returns (SingleUserRecordReply) {}
diff --git a/test/cpp/qps/user_data_client.cc b/test/cpp/qps/perf_db_client.cc
index a8ced7559d..6a1fe7e26e 100644
--- a/test/cpp/qps/user_data_client.cc
+++ b/test/cpp/qps/perf_db_client.cc
@@ -31,30 +31,30 @@
*
*/
-#include "user_data_client.h"
+#include "perf_db_client.h"
namespace grpc {
namespace testing {
//sets the client and server config information
-void UserDataClient::setConfigs(const ClientConfig& clientConfig, const ServerConfig& serverConfig) {
+void PerfDbClient::setConfigs(const ClientConfig& clientConfig, const ServerConfig& serverConfig) const {
clientConfig_ = clientConfig;
serverConfig_ = serverConfig;
}
//sets the QPS
-void UserDataClient::setQPS(double QPS) {
+void PerfDbClient::setQPS(double QPS) const {
QPS_ = QPS;
}
//sets the QPS per core
-void UserDataClient::setQPSPerCore(double QPSPerCore) {
+void PerfDbClient::setQPSPerCore(double QPSPerCore) const {
QPSPerCore_ = QPSPerCore;
}
//sets the 50th, 90th, 95th, 99th and 99.9th percentile latency
-void UserDataClient::setLatencies(double percentileLatency50, double percentileLatency90,
- double percentileLatency95, double percentileLatency99, double percentileLatency99Point9) {
+void PerfDbClient::setLatencies(double percentileLatency50, double percentileLatency90,
+ double percentileLatency95, double percentileLatency99, double percentileLatency99Point9) const {
percentileLatency50_ = percentileLatency50;
percentileLatency90_ = percentileLatency90;
percentileLatency95_ = percentileLatency95;
@@ -63,8 +63,8 @@ void UserDataClient::setLatencies(double percentileLatency50, double percentileL
}
//sets the server and client, user and system times
-void UserDataClient::setTimes(double serverSystemTime, double serverUserTime,
- double clientSystemTime, double clientUserTime) {
+void PerfDbClient::setTimes(double serverSystemTime, double serverUserTime,
+ double clientSystemTime, double clientUserTime) const {
serverSystemTime_ = serverSystemTime;
serverUserTime_ = serverUserTime;
clientSystemTime_ = clientSystemTime;
@@ -72,7 +72,7 @@ void UserDataClient::setTimes(double serverSystemTime, double serverUserTime,
}
//sends the data to the performancew database server
-int UserDataClient::sendData(std::string access_token, std::string test_name, std::string sys_info) {
+int PerfDbClient::sendData(std::string access_token, std::string test_name, std::string sys_info) const {
//Data record request object
SingleUserRecordRequest singleUserRecordRequest;
@@ -104,7 +104,7 @@ int UserDataClient::sendData(std::string access_token, std::string test_name, st
ClientContext context;
Status status = stub_->RecordSingleClientData(&context, singleUserRecordRequest, &singleUserRecordReply);
- if (status.IsOk()) {
+ if (status.ok()) {
return 1; //data sent to database successfully
} else {
return -1; //error in data sending
diff --git a/test/cpp/qps/user_data_client.h b/test/cpp/qps/perf_db_client.h
index c2e07ef5cd..4a63dbf3d2 100644
--- a/test/cpp/qps/user_data_client.h
+++ b/test/cpp/qps/perf_db_client.h
@@ -43,55 +43,56 @@
#include <grpc++/create_channel.h>
#include <grpc++/credentials.h>
#include <grpc++/status.h>
-#include "test/cpp/qps/user_data.grpc.pb.h"
+#include "test/cpp/qps/perf_db.grpc.pb.h"
namespace grpc{
namespace testing {
//Manages data sending to performance database server
-class UserDataClient {
+class PerfDbClient {
public:
- UserDataClient(std::shared_ptr<ChannelInterface> channel)
- : stub_(UserDataTransfer::NewStub(channel)) {}
+ PerfDbClient() {}
- ~UserDataClient() {}
+ void init(std::shared_ptr<ChannelInterface> channel) { stub_ = PerfDbTransfer::NewStub(channel); }
+
+ ~PerfDbClient() {}
//sets the client and server config information
- void setConfigs(const ClientConfig& clientConfig, const ServerConfig& serverConfig);
+ void setConfigs(const ClientConfig& clientConfig, const ServerConfig& serverConfig) const;
//sets the QPS
- void setQPS(double QPS);
+ void setQPS(double QPS) const;
//sets the QPS per core
- void setQPSPerCore(double QPSPerCore);
+ void setQPSPerCore(double QPSPerCore) const;
//sets the 50th, 90th, 95th, 99th and 99.9th percentile latency
void setLatencies(double percentileLatency50, double percentileLatency90,
- double percentileLatency95, double percentileLatency99, double percentileLatency99Point9);
+ double percentileLatency95, double percentileLatency99, double percentileLatency99Point9) const;
//sets the server and client, user and system times
void setTimes(double serverSystemTime, double serverUserTime,
- double clientSystemTime, double clientUserTime);
+ double clientSystemTime, double clientUserTime) const;
//sends the data to the performancew database server
- int sendData(std::string access_token, std::string test_name, std::string sys_info);
+ int sendData(std::string access_token, std::string test_name, std::string sys_info) const;
private:
- std::unique_ptr<UserDataTransfer::Stub> stub_;
- ClientConfig clientConfig_;
- ServerConfig serverConfig_;
- double QPS_ = DBL_MIN;
- double QPSPerCore_ = DBL_MIN;
- double percentileLatency50_ = DBL_MIN;
- double percentileLatency90_ = DBL_MIN;
- double percentileLatency95_ = DBL_MIN;
- double percentileLatency99_ = DBL_MIN;
- double percentileLatency99Point9_ = DBL_MIN;
- double serverSystemTime_ = DBL_MIN;
- double serverUserTime_ = DBL_MIN;
- double clientSystemTime_ = DBL_MIN;
- double clientUserTime_ = DBL_MIN;
+ std::unique_ptr<PerfDbTransfer::Stub> stub_;
+ mutable ClientConfig clientConfig_;
+ mutable ServerConfig serverConfig_;
+ mutable double QPS_ = DBL_MIN;
+ mutable double QPSPerCore_ = DBL_MIN;
+ mutable double percentileLatency50_ = DBL_MIN;
+ mutable double percentileLatency90_ = DBL_MIN;
+ mutable double percentileLatency95_ = DBL_MIN;
+ mutable double percentileLatency99_ = DBL_MIN;
+ mutable double percentileLatency99Point9_ = DBL_MIN;
+ mutable double serverSystemTime_ = DBL_MIN;
+ mutable double serverUserTime_ = DBL_MIN;
+ mutable double clientSystemTime_ = DBL_MIN;
+ mutable double clientUserTime_ = DBL_MIN;
};
} //namespace testing
diff --git a/test/cpp/qps/report.cc b/test/cpp/qps/report.cc
index c524327ff0..3d71f76fd2 100644
--- a/test/cpp/qps/report.cc
+++ b/test/cpp/qps/report.cc
@@ -35,7 +35,6 @@
#include <grpc/support/log.h>
#include "test/cpp/qps/stats.h"
-#include "user_data_client.h"
namespace grpc {
namespace testing {
@@ -119,41 +118,41 @@ void GprLogReporter::ReportTimes(const ScenarioResult& result) const {
[](ResourceUsage u) { return u.wall_time; }));
}
-UserDataClient userDataClient(grpc::CreateChannel("localhost:50052", grpc::InsecureCredentials(),
- ChannelArguments()));
+// perfDbClient perfDbClient(grpc::CreateChannel("localhost:50052", grpc::InsecureCredentials(),
+// ChannelArguments()));
//Performance database reporter implementation.
-void UserDatabaseReporter::ReportQPS(const ScenarioResult& result) const {
+void PerfDbReporter::ReportQPS(const ScenarioResult& result) const {
auto qps = result.latencies.Count() /
average(result.client_resources,
[](ResourceUsage u) { return u.wall_time; });
- userDataClient.setQPS(qps);
- userDataClient.setConfigs(result.client_config, result.server_config);
+ perfDbClient.setQPS(qps);
+ perfDbClient.setConfigs(result.client_config, result.server_config);
}
-void UserDatabaseReporter::ReportQPSPerCore(const ScenarioResult& result) const {
+void PerfDbReporter::ReportQPSPerCore(const ScenarioResult& result) const {
auto qps = result.latencies.Count() /
average(result.client_resources,
[](ResourceUsage u) { return u.wall_time; });
auto qpsPerCore = qps / result.server_config.threads();
- userDataClient.setQPS(qps);
- userDataClient.setQPSPerCore(qpsPerCore);
- userDataClient.setConfigs(result.client_config, result.server_config);
+ perfDbClient.setQPS(qps);
+ perfDbClient.setQPSPerCore(qpsPerCore);
+ perfDbClient.setConfigs(result.client_config, result.server_config);
}
-void UserDatabaseReporter::ReportLatency(const ScenarioResult& result) const {
- userDataClient.setLatencies(result.latencies.Percentile(50) / 1000,
+void PerfDbReporter::ReportLatency(const ScenarioResult& result) const {
+ perfDbClient.setLatencies(result.latencies.Percentile(50) / 1000,
result.latencies.Percentile(90) / 1000,
result.latencies.Percentile(95) / 1000,
result.latencies.Percentile(99) / 1000,
result.latencies.Percentile(99.9) / 1000);
- userDataClient.setConfigs(result.client_config, result.server_config);
+ perfDbClient.setConfigs(result.client_config, result.server_config);
}
-void UserDatabaseReporter::ReportTimes(const ScenarioResult& result) const {
+void PerfDbReporter::ReportTimes(const ScenarioResult& result) const {
double serverSystemTime = 100.0 * sum(result.server_resources,
[](ResourceUsage u) { return u.system_time; }) /
sum(result.server_resources,
@@ -171,22 +170,22 @@ void UserDatabaseReporter::ReportTimes(const ScenarioResult& result) const {
sum(result.client_resources,
[](ResourceUsage u) { return u.wall_time; });
- userDataClient.setTimes(serverSystemTime, serverUserTime,
+ perfDbClient.setTimes(serverSystemTime, serverUserTime,
clientSystemTime, clientUserTime);
- userDataClient.setConfigs(result.client_config, result.server_config);
+ perfDbClient.setConfigs(result.client_config, result.server_config);
}
-void UserDatabaseReporter::SendData() const {
+void PerfDbReporter::SendData() const {
//send data to performance database
- int userDataState = userDataClient.sendData(access_token_, test_name_, sys_info_);
+ int dataState = perfDbClient.sendData(access_token_, test_name_, sys_info_);
//check state of data sending
- switch(userDataState) {
+ switch(dataState) {
case 1:
- gpr_log(GPR_INFO, "Data sent to user database successfully");
+ gpr_log(GPR_INFO, "Data sent to performance database successfully");
break;
case -1:
- gpr_log(GPR_INFO, "Data could not be sent to user database");
+ gpr_log(GPR_INFO, "Data could not be sent to performance database");
break;
}
}
diff --git a/test/cpp/qps/report.h b/test/cpp/qps/report.h
index 432ed5ddf2..afc79ff75f 100644
--- a/test/cpp/qps/report.h
+++ b/test/cpp/qps/report.h
@@ -41,6 +41,7 @@
#include "test/cpp/qps/driver.h"
#include "test/cpp/qps/qpstest.grpc.pb.h"
+#include "perf_db_client.h"
namespace grpc {
namespace testing {
@@ -104,13 +105,16 @@ class GprLogReporter : public Reporter {
};
/** Reporter for client leaderboard. */
-class UserDatabaseReporter : public Reporter {
+class PerfDbReporter : public Reporter {
public:
- UserDatabaseReporter(const string& name, const string& access_token, const string& test_name, const string& sys_info)
- : Reporter(name), access_token_(access_token), test_name_(test_name), sys_info_(sys_info) {}
- ~UserDatabaseReporter() { SendData(); };
+ PerfDbReporter(const string& name, const string& access_token, const string& test_name, const string& sys_info, const string& server_address)
+ : Reporter(name), access_token_(access_token), test_name_(test_name), sys_info_(sys_info) {
+ perfDbClient.init(grpc::CreateChannel(server_address, grpc::InsecureCredentials(), ChannelArguments()));
+ }
+ ~PerfDbReporter() { SendData(); };
private:
+ PerfDbClient perfDbClient;
std::string access_token_;
std::string test_name_;
std::string sys_info_;
diff --git a/test/cpp/qps/run_perf_db_test.py b/test/cpp/qps/run_perf_db_test.py
index 7f840fa723..34007aa97c 100755
--- a/test/cpp/qps/run_perf_db_test.py
+++ b/test/cpp/qps/run_perf_db_test.py
@@ -257,6 +257,8 @@ def main():
except Exception, e:
print 'Error in authentication'
+ serverAddress = 'sidrakesh.mtv.google.corp.com:50052'
+
try:
testPath = findTestPath(test) # Get path to test
testName = testPath.split('/')[-1] # Get test name
@@ -265,7 +267,7 @@ def main():
print '\nBeginning test:\n'
# Run the test
- subprocess.call([testPath, '--report_metrics_db=true', '--access_token='+accessToken, '--test_name='+testName, '--sys_info='+str(sysInfo).strip('[]')])
+ subprocess.call([testPath, '--report_metrics_db=true', '--access_token='+accessToken, '--test_name='+testName, '--sys_info='+str(sysInfo).strip('[]'), '--server_address='+serverAddress])
except OSError:
print 'Could not execute the test, please check test name'
diff --git a/test/cpp/util/benchmark_config.cc b/test/cpp/util/benchmark_config.cc
index 250bb7ac8e..f8cfabd0d6 100644
--- a/test/cpp/util/benchmark_config.cc
+++ b/test/cpp/util/benchmark_config.cc
@@ -45,6 +45,8 @@ DEFINE_string(test_name, "", "Name of the test being executed");
DEFINE_string(sys_info, "", "System information");
+DEFINE_string(server_address, "localhost:50052", "Address of the performance database server");
+
// In some distros, gflags is in the namespace google, and in some others,
// in gflags. This hack is enabling us to find both.
namespace google {}
@@ -67,7 +69,7 @@ static std::shared_ptr<Reporter> InitBenchmarkReporters() {
}
if(FLAGS_report_metrics_db) {
composite_reporter->add(
- std::unique_ptr<Reporter>(new UserDatabaseReporter("UserDataReporter", FLAGS_access_token, FLAGS_test_name, FLAGS_sys_info)));
+ std::unique_ptr<Reporter>(new PerfDbReporter("PerfDbReporter", FLAGS_access_token, FLAGS_test_name, FLAGS_sys_info, FLAGS_server_address)));
}
return std::shared_ptr<Reporter>(composite_reporter);