blob: cf3c8ae80af7bea954df3391f04dc4b8ba0f816a [file] [log] [blame]
Craig Tillercb2cd262016-04-01 13:59:54 -07001# Copyright 2016, Google Inc.
2# All rights reserved.
3#
4# Redistribution and use in source and binary forms, with or without
5# modification, are permitted provided that the following conditions are
6# met:
7#
8# * Redistributions of source code must retain the above copyright
9# notice, this list of conditions and the following disclaimer.
10# * Redistributions in binary form must reproduce the above
11# copyright notice, this list of conditions and the following disclaimer
12# in the documentation and/or other materials provided with the
13# distribution.
14# * Neither the name of Google Inc. nor the names of its
15# contributors may be used to endorse or promote products derived from
16# this software without specific prior written permission.
17#
18# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
30# performance scenario configuration for various languages
31
Craig Tiller0bda0b32016-03-03 12:51:53 -080032SINGLE_MACHINE_CORES=8
33WARMUP_SECONDS=5
Jan Tattermuschde874a12016-04-18 09:21:37 -070034JAVA_WARMUP_SECONDS=15 # Java needs more warmup time for JIT to kick in.
Craig Tiller0bda0b32016-03-03 12:51:53 -080035BENCHMARK_SECONDS=30
36
Jan Tattermusch4fec48b2016-04-12 15:12:54 -070037HISTOGRAM_PARAMS = {
38 'resolution': 0.01,
39 'max_possible': 60e9,
40}
41
Craig Tiller0bda0b32016-03-03 12:51:53 -080042EMPTY_GENERIC_PAYLOAD = {
43 'bytebuf_params': {
44 'req_size': 0,
45 'resp_size': 0,
46 }
47}
48EMPTY_PROTO_PAYLOAD = {
49 'simple_params': {
50 'req_size': 0,
51 'resp_size': 0,
52 }
53}
54BIG_GENERIC_PAYLOAD = {
55 'bytebuf_params': {
56 'req_size': 65536,
57 'resp_size': 65536,
58 }
59}
60
61# deep is the number of RPCs outstanding on a channel in non-ping-pong tests
62# (the value used is 1 otherwise)
63DEEP=100
64
65# wide is the number of client channels in multi-channel tests (1 otherwise)
66WIDE=64
67
68
Craig Tillercb2cd262016-04-01 13:59:54 -070069class CXXLanguage:
70
71 def __init__(self):
72 self.safename = 'cxx'
73
74 def worker_cmdline(self):
75 return ['bins/opt/qps_worker']
76
77 def worker_port_offset(self):
78 return 0
79
80 def scenarios(self):
Craig Tiller0bda0b32016-03-03 12:51:53 -080081 # TODO(ctiller): add 70% load latency test
82 for secure in [True, False]:
83 if secure:
84 secstr = 'secure'
85 secargs = {'use_test_ca': True,
86 'server_host_override': 'foo.test.google.fr'}
87 else:
88 secstr = 'insecure'
89 secargs = None
90
91 yield {
Jan Tattermusch4fec48b2016-04-12 15:12:54 -070092 'name': 'cpp_generic_async_streaming_ping_pong_%s'
Craig Tiller0bda0b32016-03-03 12:51:53 -080093 % secstr,
94 'num_servers': 1,
95 'num_clients': 1,
96 'client_config': {
97 'client_type': 'ASYNC_CLIENT',
98 'security_params': secargs,
99 'outstanding_rpcs_per_channel': 1,
100 'client_channels': 1,
101 'async_client_threads': 1,
102 'rpc_type': 'STREAMING',
103 'load_params': {
104 'closed_loop': {}
105 },
106 'payload_config': EMPTY_GENERIC_PAYLOAD,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700107 'histogram_params': HISTOGRAM_PARAMS,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800108 },
109 'server_config': {
110 'server_type': 'ASYNC_GENERIC_SERVER',
111 'security_params': secargs,
vjpai1c813292016-04-20 14:17:27 -0700112 'core_limit': 1,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800113 'async_server_threads': 1,
114 'payload_config': EMPTY_GENERIC_PAYLOAD,
115 },
116 'warmup_seconds': WARMUP_SECONDS,
117 'benchmark_seconds': BENCHMARK_SECONDS
118 }
119 yield {
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700120 'name': 'cpp_generic_async_streaming_qps_unconstrained_%s'
Craig Tiller0bda0b32016-03-03 12:51:53 -0800121 % secstr,
122 'num_servers': 1,
123 'num_clients': 0,
124 'client_config': {
125 'client_type': 'ASYNC_CLIENT',
126 'security_params': secargs,
127 'outstanding_rpcs_per_channel': DEEP,
128 'client_channels': WIDE,
vjpai1c813292016-04-20 14:17:27 -0700129 'async_client_threads': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800130 'rpc_type': 'STREAMING',
131 'load_params': {
132 'closed_loop': {}
133 },
134 'payload_config': EMPTY_GENERIC_PAYLOAD,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700135 'histogram_params': HISTOGRAM_PARAMS,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800136 },
137 'server_config': {
138 'server_type': 'ASYNC_GENERIC_SERVER',
139 'security_params': secargs,
140 'core_limit': SINGLE_MACHINE_CORES/2,
vjpai1c813292016-04-20 14:17:27 -0700141 'async_server_threads': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800142 'payload_config': EMPTY_GENERIC_PAYLOAD,
143 },
144 'warmup_seconds': WARMUP_SECONDS,
145 'benchmark_seconds': BENCHMARK_SECONDS
146 }
147 yield {
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700148 'name': 'cpp_generic_async_streaming_qps_one_server_core_%s'
Craig Tiller0bda0b32016-03-03 12:51:53 -0800149 % secstr,
150 'num_servers': 1,
151 'num_clients': 0,
152 'client_config': {
153 'client_type': 'ASYNC_CLIENT',
154 'security_params': secargs,
155 'outstanding_rpcs_per_channel': DEEP,
156 'client_channels': WIDE,
vjpai1c813292016-04-20 14:17:27 -0700157 'async_client_threads': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800158 'rpc_type': 'STREAMING',
159 'load_params': {
160 'closed_loop': {}
161 },
162 'payload_config': EMPTY_GENERIC_PAYLOAD,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700163 'histogram_params': HISTOGRAM_PARAMS,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800164 },
165 'server_config': {
166 'server_type': 'ASYNC_GENERIC_SERVER',
167 'security_params': secargs,
168 'core_limit': 1,
169 'async_server_threads': 1,
170 'payload_config': EMPTY_GENERIC_PAYLOAD,
171 },
172 'warmup_seconds': WARMUP_SECONDS,
173 'benchmark_seconds': BENCHMARK_SECONDS
174 }
175 yield {
Jan Tattermusch7be244b2016-04-14 10:08:25 -0700176 'name': 'cpp_protobuf_async_streaming_qps_unconstrained_%s'
Craig Tiller0bda0b32016-03-03 12:51:53 -0800177 % secstr,
178 'num_servers': 1,
179 'num_clients': 0,
180 'client_config': {
181 'client_type': 'ASYNC_CLIENT',
182 'security_params': secargs,
183 'outstanding_rpcs_per_channel': DEEP,
184 'client_channels': WIDE,
vjpai1c813292016-04-20 14:17:27 -0700185 'async_client_threads': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800186 'rpc_type': 'STREAMING',
187 'load_params': {
188 'closed_loop': {}
189 },
Jan Tattermusch7be244b2016-04-14 10:08:25 -0700190 'payload_config': EMPTY_PROTO_PAYLOAD,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700191 'histogram_params': HISTOGRAM_PARAMS,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800192 },
193 'server_config': {
Jan Tattermusch7be244b2016-04-14 10:08:25 -0700194 'server_type': 'ASYNC_SERVER',
Craig Tiller0bda0b32016-03-03 12:51:53 -0800195 'security_params': secargs,
196 'core_limit': SINGLE_MACHINE_CORES/2,
vjpai1c813292016-04-20 14:17:27 -0700197 'async_server_threads': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800198 },
199 'warmup_seconds': WARMUP_SECONDS,
200 'benchmark_seconds': BENCHMARK_SECONDS
201 }
202 yield {
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700203 'name': 'cpp_single_channel_throughput_%s'
Craig Tiller0bda0b32016-03-03 12:51:53 -0800204 % secstr,
205 'num_servers': 1,
206 'num_clients': 1,
207 'client_config': {
208 'client_type': 'ASYNC_CLIENT',
209 'security_params': secargs,
vjpai1c813292016-04-20 14:17:27 -0700210 'outstanding_rpcs_per_channel': DEEP,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800211 'client_channels': 1,
vjpai1c813292016-04-20 14:17:27 -0700212 'async_client_threads': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800213 'rpc_type': 'STREAMING',
214 'load_params': {
215 'closed_loop': {}
216 },
217 'payload_config': BIG_GENERIC_PAYLOAD,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700218 'histogram_params': HISTOGRAM_PARAMS,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800219 },
220 'server_config': {
221 'server_type': 'ASYNC_GENERIC_SERVER',
222 'security_params': secargs,
223 'core_limit': SINGLE_MACHINE_CORES/2,
vjpai1c813292016-04-20 14:17:27 -0700224 'async_server_threads': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800225 'payload_config': BIG_GENERIC_PAYLOAD,
226 },
227 'warmup_seconds': WARMUP_SECONDS,
228 'benchmark_seconds': BENCHMARK_SECONDS
229 }
230 yield {
Jan Tattermusch108f93d2016-04-20 17:58:41 -0700231 'name': 'cpp_protobuf_async_streaming_ping_pong_%s'
Craig Tiller0bda0b32016-03-03 12:51:53 -0800232 % secstr,
233 'num_servers': 1,
234 'num_clients': 1,
235 'client_config': {
236 'client_type': 'ASYNC_CLIENT',
237 'security_params': secargs,
238 'outstanding_rpcs_per_channel': 1,
239 'client_channels': 1,
240 'async_client_threads': 1,
241 'rpc_type': 'STREAMING',
242 'load_params': {
243 'closed_loop': {}
244 },
245 'payload_config': EMPTY_PROTO_PAYLOAD,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700246 'histogram_params': HISTOGRAM_PARAMS,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800247 },
248 'server_config': {
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700249 'server_type': 'ASYNC_SERVER',
Craig Tiller0bda0b32016-03-03 12:51:53 -0800250 'security_params': secargs,
vjpai1c813292016-04-20 14:17:27 -0700251 'core_limit': 1,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800252 'async_server_threads': 1,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800253 },
254 'warmup_seconds': WARMUP_SECONDS,
255 'benchmark_seconds': BENCHMARK_SECONDS
256 }
Jan Tattermusch108f93d2016-04-20 17:58:41 -0700257 yield {
258 'name': 'cpp_protobuf_sync_unary_ping_pong_%s'
259 % secstr,
260 'num_servers': 1,
261 'num_clients': 1,
262 'client_config': {
263 'client_type': 'SYNC_CLIENT',
264 'security_params': secargs,
265 'outstanding_rpcs_per_channel': 1,
266 'client_channels': 1,
267 'async_client_threads': 0,
268 'rpc_type': 'UNARY',
269 'load_params': {
270 'closed_loop': {}
271 },
272 'payload_config': EMPTY_PROTO_PAYLOAD,
273 'histogram_params': HISTOGRAM_PARAMS,
274 },
275 'server_config': {
276 'server_type': 'SYNC_SERVER',
277 'security_params': secargs,
278 'core_limit': 1,
279 'async_server_threads': 0,
280 },
281 'warmup_seconds': WARMUP_SECONDS,
282 'benchmark_seconds': BENCHMARK_SECONDS
283 }
284 yield {
285 'name': 'cpp_protobuf_async_unary_ping_pong_%s'
286 % secstr,
287 'num_servers': 1,
288 'num_clients': 1,
289 'client_config': {
290 'client_type': 'ASYNC_CLIENT',
291 'security_params': secargs,
292 'outstanding_rpcs_per_channel': 1,
293 'client_channels': 1,
294 'async_client_threads': 1,
295 'rpc_type': 'UNARY',
296 'load_params': {
297 'closed_loop': {}
298 },
299 'payload_config': EMPTY_PROTO_PAYLOAD,
300 'histogram_params': HISTOGRAM_PARAMS,
301 },
302 'server_config': {
303 'server_type': 'ASYNC_SERVER',
304 'security_params': secargs,
305 'core_limit': 1,
306 'async_server_threads': 1,
307 },
308 'warmup_seconds': WARMUP_SECONDS,
309 'benchmark_seconds': BENCHMARK_SECONDS
310 }
Craig Tillercb2cd262016-04-01 13:59:54 -0700311
312 def __str__(self):
313 return 'c++'
314
315
316class CSharpLanguage:
317
318 def __init__(self):
319 self.safename = str(self)
320
321 def worker_cmdline(self):
322 return ['tools/run_tests/performance/run_worker_csharp.sh']
323
324 def worker_port_offset(self):
325 return 100
326
327 def scenarios(self):
328 # TODO(jtattermusch): add more scenarios
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700329 secargs = None
Craig Tiller0bda0b32016-03-03 12:51:53 -0800330 yield {
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700331 'name': 'csharp_generic_async_streaming_ping_pong',
Craig Tiller0bda0b32016-03-03 12:51:53 -0800332 'num_servers': 1,
333 'num_clients': 1,
334 'client_config': {
335 'client_type': 'ASYNC_CLIENT',
336 'security_params': secargs,
337 'outstanding_rpcs_per_channel': 1,
338 'client_channels': 1,
339 'async_client_threads': 1,
340 'rpc_type': 'STREAMING',
341 'load_params': {
342 'closed_loop': {}
343 },
344 'payload_config': EMPTY_GENERIC_PAYLOAD,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700345 'histogram_params': HISTOGRAM_PARAMS,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800346 },
347 'server_config': {
348 'server_type': 'ASYNC_GENERIC_SERVER',
349 'security_params': secargs,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700350 'core_limit': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800351 'async_server_threads': 1,
352 'payload_config': EMPTY_GENERIC_PAYLOAD,
353 },
354 'warmup_seconds': WARMUP_SECONDS,
355 'benchmark_seconds': BENCHMARK_SECONDS
356 }
Jan Tattermuschd61c2522016-04-14 08:36:25 -0700357 yield {
358 'name': 'csharp_protobuf_async_unary_ping_pong',
359 'num_servers': 1,
360 'num_clients': 1,
361 'client_config': {
362 'client_type': 'ASYNC_CLIENT',
363 'security_params': secargs,
364 'outstanding_rpcs_per_channel': 1,
365 'client_channels': 1,
366 'async_client_threads': 1,
367 'rpc_type': 'UNARY',
368 'load_params': {
369 'closed_loop': {}
370 },
371 'payload_config': EMPTY_PROTO_PAYLOAD,
372 'histogram_params': HISTOGRAM_PARAMS,
373 },
374 'server_config': {
375 'server_type': 'ASYNC_SERVER',
376 'security_params': secargs,
377 'core_limit': 0,
378 'async_server_threads': 1,
379 },
380 'warmup_seconds': WARMUP_SECONDS,
381 'benchmark_seconds': BENCHMARK_SECONDS
382 }
383 yield {
384 'name': 'csharp_protobuf_sync_to_async_unary_ping_pong',
385 'num_servers': 1,
386 'num_clients': 1,
387 'client_config': {
388 'client_type': 'SYNC_CLIENT',
389 'security_params': secargs,
390 'outstanding_rpcs_per_channel': 1,
391 'client_channels': 1,
392 'async_client_threads': 1,
393 'rpc_type': 'UNARY',
394 'load_params': {
395 'closed_loop': {}
396 },
397 'payload_config': EMPTY_PROTO_PAYLOAD,
398 'histogram_params': HISTOGRAM_PARAMS,
399 },
400 'server_config': {
401 'server_type': 'ASYNC_SERVER',
402 'security_params': secargs,
403 'core_limit': 0,
404 'async_server_threads': 1,
405 },
406 'warmup_seconds': WARMUP_SECONDS,
407 'benchmark_seconds': BENCHMARK_SECONDS
408 }
409 yield {
410 'name': 'csharp_to_cpp_protobuf_sync_unary_ping_pong',
411 'num_servers': 1,
412 'num_clients': 1,
413 'client_config': {
414 'client_type': 'SYNC_CLIENT',
415 'security_params': secargs,
416 'outstanding_rpcs_per_channel': 1,
417 'client_channels': 1,
418 'async_client_threads': 1,
419 'rpc_type': 'UNARY',
420 'load_params': {
421 'closed_loop': {}
422 },
423 'payload_config': EMPTY_PROTO_PAYLOAD,
424 'histogram_params': HISTOGRAM_PARAMS,
425 },
426 'server_config': {
427 'server_type': 'SYNC_SERVER',
428 'security_params': secargs,
429 'core_limit': 0,
430 'async_server_threads': 1,
431 },
432 'warmup_seconds': WARMUP_SECONDS,
433 'benchmark_seconds': BENCHMARK_SECONDS,
434 'SERVER_LANGUAGE': 'c++' # recognized by run_performance_tests.py
435 }
Craig Tillercb2cd262016-04-01 13:59:54 -0700436
437 def __str__(self):
438 return 'csharp'
439
440
441class NodeLanguage:
442
443 def __init__(self):
444 pass
445 self.safename = str(self)
446
447 def worker_cmdline(self):
448 return ['tools/run_tests/performance/run_worker_node.sh']
449
450 def worker_port_offset(self):
451 return 200
452
453 def scenarios(self):
454 # TODO(jtattermusch): add more scenarios
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700455 secargs = None
Craig Tiller0bda0b32016-03-03 12:51:53 -0800456 yield {
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700457 'name': 'node_protobuf_unary_ping_pong',
Craig Tiller0bda0b32016-03-03 12:51:53 -0800458 'num_servers': 1,
459 'num_clients': 1,
460 'client_config': {
461 'client_type': 'ASYNC_CLIENT',
462 'security_params': secargs,
463 'outstanding_rpcs_per_channel': 1,
464 'client_channels': 1,
465 'async_client_threads': 1,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700466 'rpc_type': 'UNARY',
Craig Tiller0bda0b32016-03-03 12:51:53 -0800467 'load_params': {
468 'closed_loop': {}
469 },
470 'payload_config': EMPTY_PROTO_PAYLOAD,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700471 'histogram_params': HISTOGRAM_PARAMS,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800472 },
473 'server_config': {
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700474 'server_type': 'ASYNC_SERVER',
Craig Tiller0bda0b32016-03-03 12:51:53 -0800475 'security_params': secargs,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700476 'core_limit': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800477 'async_server_threads': 1,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800478 },
479 'warmup_seconds': WARMUP_SECONDS,
480 'benchmark_seconds': BENCHMARK_SECONDS
481 }
Craig Tillercb2cd262016-04-01 13:59:54 -0700482
483 def __str__(self):
484 return 'node'
485
486
Jan Tattermuscha5780e12016-04-15 16:14:42 -0700487class RubyLanguage:
488
489 def __init__(self):
490 pass
491 self.safename = str(self)
492
493 def worker_cmdline(self):
494 return ['tools/run_tests/performance/run_worker_ruby.sh']
495
496 def worker_port_offset(self):
497 return 300
498
499 def scenarios(self):
500 # TODO(jtattermusch): add more scenarios
501 secargs = None
502 yield {
503 'name': 'ruby_protobuf_unary_ping_pong',
504 'num_servers': 1,
505 'num_clients': 1,
506 'client_config': {
507 'client_type': 'SYNC_CLIENT',
508 'security_params': secargs,
509 'outstanding_rpcs_per_channel': 1,
510 'client_channels': 1,
511 'async_client_threads': 1,
512 'rpc_type': 'UNARY',
513 'load_params': {
514 'closed_loop': {}
515 },
516 'payload_config': EMPTY_PROTO_PAYLOAD,
517 'histogram_params': HISTOGRAM_PARAMS,
518 },
519 'server_config': {
520 'server_type': 'SYNC_SERVER',
521 'security_params': secargs,
522 'core_limit': 0,
523 'async_server_threads': 1,
524 },
525 'warmup_seconds': WARMUP_SECONDS,
526 'benchmark_seconds': BENCHMARK_SECONDS
527 }
528
529 def __str__(self):
530 return 'ruby'
531
532
Jan Tattermuschde874a12016-04-18 09:21:37 -0700533class JavaLanguage:
534
535 def __init__(self):
536 pass
537 self.safename = str(self)
538
539 def worker_cmdline(self):
540 return ['tools/run_tests/performance/run_worker_java.sh']
541
542 def worker_port_offset(self):
543 return 400
544
545 def scenarios(self):
546 # TODO(jtattermusch): add more scenarios
547 secargs = None
548 yield {
549 'name': 'java_protobuf_unary_ping_pong',
550 'num_servers': 1,
551 'num_clients': 1,
552 'client_config': {
553 'client_type': 'SYNC_CLIENT',
554 'security_params': secargs,
555 'outstanding_rpcs_per_channel': 1,
556 'client_channels': 1,
557 'async_client_threads': 1,
558 'rpc_type': 'UNARY',
559 'load_params': {
560 'closed_loop': {}
561 },
562 'payload_config': EMPTY_PROTO_PAYLOAD,
563 'histogram_params': HISTOGRAM_PARAMS,
564 },
565 'server_config': {
566 'server_type': 'SYNC_SERVER',
567 'security_params': secargs,
568 'core_limit': 0,
569 'async_server_threads': 1,
570 },
571 'warmup_seconds': JAVA_WARMUP_SECONDS,
572 'benchmark_seconds': BENCHMARK_SECONDS
573 }
574
575 def __str__(self):
576 return 'java'
577
578
Craig Tillercb2cd262016-04-01 13:59:54 -0700579LANGUAGES = {
580 'c++' : CXXLanguage(),
581 'csharp' : CSharpLanguage(),
582 'node' : NodeLanguage(),
Jan Tattermuschde874a12016-04-18 09:21:37 -0700583 'ruby' : RubyLanguage(),
584 'java' : JavaLanguage(),
Craig Tillercb2cd262016-04-01 13:59:54 -0700585}