Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Side by Side Diff: third_party/grpc/test/cpp/interop/stress_interop_client.h

Issue 1932353002: Initial checkin of gRPC to third_party/ Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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 *is % allowed in string
32 */
33
34 #ifndef GRPC_TEST_CPP_STRESS_INTEROP_CLIENT_H
35 #define GRPC_TEST_CPP_STRESS_INTEROP_CLIENT_H
36
37 #include <memory>
38 #include <string>
39 #include <vector>
40
41 #include <grpc++/create_channel.h>
42
43 #include "test/cpp/interop/interop_client.h"
44 #include "test/cpp/util/metrics_server.h"
45
46 namespace grpc {
47 namespace testing {
48
49 using std::pair;
50 using std::vector;
51
52 // TODO(sreek): Add more test cases here in future
53 enum TestCaseType {
54 UNKNOWN_TEST = -1,
55 EMPTY_UNARY = 0,
56 LARGE_UNARY = 1,
57 LARGE_COMPRESSED_UNARY = 2,
58 CLIENT_STREAMING = 3,
59 SERVER_STREAMING = 4,
60 EMPTY_STREAM = 5
61 };
62
63 const vector<pair<TestCaseType, grpc::string>> kTestCaseList = {
64 {EMPTY_UNARY, "empty_unary"},
65 {LARGE_UNARY, "large_unary"},
66 {LARGE_COMPRESSED_UNARY, "large_compressed_unary"},
67 {CLIENT_STREAMING, "client_streaming"},
68 {SERVER_STREAMING, "server_streaming"},
69 {EMPTY_STREAM, "empty_stream"}};
70
71 class WeightedRandomTestSelector {
72 public:
73 // Takes a vector of <test_case, weight> pairs as the input
74 WeightedRandomTestSelector(const vector<pair<TestCaseType, int>>& tests);
75
76 // Returns a weighted-randomly chosen test case based on the test cases and
77 // weights passed in the constructor
78 TestCaseType GetNextTest() const;
79
80 private:
81 const vector<pair<TestCaseType, int>> tests_;
82 int total_weight_;
83 };
84
85 class StressTestInteropClient {
86 public:
87 StressTestInteropClient(int test_id, const grpc::string& server_address,
88 std::shared_ptr<Channel> channel,
89 const WeightedRandomTestSelector& test_selector,
90 long test_duration_secs, long sleep_duration_ms,
91 long metrics_collection_interval_secs);
92
93 // The main function. Use this as the thread entry point.
94 // qps_gauge is the Gauge to record the requests per second metric
95 void MainLoop(std::shared_ptr<Gauge> qps_gauge);
96
97 private:
98 void RunTest(TestCaseType test_case);
99
100 int test_id_;
101 const grpc::string& server_address_;
102 std::shared_ptr<Channel> channel_;
103 std::unique_ptr<InteropClient> interop_client_;
104 const WeightedRandomTestSelector& test_selector_;
105 long test_duration_secs_;
106 long sleep_duration_ms_;
107 long metrics_collection_interval_secs_;
108 };
109
110 } // namespace testing
111 } // namespace grpc
112
113 #endif // GRPC_TEST_CPP_STRESS_INTEROP_CLIENT_H
OLDNEW
« no previous file with comments | « third_party/grpc/test/cpp/interop/server_main.cc ('k') | third_party/grpc/test/cpp/interop/stress_interop_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698