Line data Source code
1 : /*
2 : *
3 : * Copyright 2015, Google Inc.
4 : * All rights reserved.
5 : *
6 : * Redistribution and use in source and binary forms, with or without
7 : * modification, are permitted provided that the following conditions are
8 : * met:
9 : *
10 : * * Redistributions of source code must retain the above copyright
11 : * notice, this list of conditions and the following disclaimer.
12 : * * Redistributions in binary form must reproduce the above
13 : * copyright notice, this list of conditions and the following disclaimer
14 : * in the documentation and/or other materials provided with the
15 : * distribution.
16 : * * Neither the name of Google Inc. nor the names of its
17 : * contributors may be used to endorse or promote products derived from
18 : * this software without specific prior written permission.
19 : *
20 : * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 : * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 : * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 : * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 : * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 : * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 : * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 : * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 : * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 : * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 : * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 : *
32 : */
33 :
34 : #ifndef TEST_QPS_DRIVER_H
35 : #define TEST_QPS_DRIVER_H
36 :
37 : #include <memory>
38 :
39 : #include "test/cpp/qps/histogram.h"
40 : #include "test/cpp/qps/qpstest.grpc.pb.h"
41 :
42 : namespace grpc {
43 : namespace testing {
44 : class ResourceUsage {
45 : public:
46 12 : ResourceUsage(double w, double u, double s)
47 12 : : wall_time_(w), user_time_(u), system_time_(s) {}
48 6 : double wall_time() const { return wall_time_; }
49 0 : double user_time() const { return user_time_; }
50 0 : double system_time() const { return system_time_; }
51 :
52 : private:
53 : double wall_time_;
54 : double user_time_;
55 : double system_time_;
56 : };
57 :
58 12 : struct ScenarioResult {
59 : Histogram latencies;
60 : std::vector<ResourceUsage> client_resources;
61 : std::vector<ResourceUsage> server_resources;
62 : ClientConfig client_config;
63 : ServerConfig server_config;
64 : };
65 :
66 : std::unique_ptr<ScenarioResult> RunScenario(
67 : const grpc::testing::ClientConfig& client_config, size_t num_clients,
68 : const grpc::testing::ServerConfig& server_config, size_t num_servers,
69 : int warmup_seconds, int benchmark_seconds, int spawn_local_worker_count);
70 :
71 : } // namespace testing
72 : } // namespace grpc
73 :
74 : #endif
|