blob: 55657f8d8a2dcd57da8105cda87fe40b0fb12c21 [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 Tattermusch299f97f2016-04-20 18:41:55 -070037SECURE_SECARGS = {'use_test_ca': True,
38 'server_host_override': 'foo.test.google.fr'}
39
Jan Tattermusch4fec48b2016-04-12 15:12:54 -070040HISTOGRAM_PARAMS = {
41 'resolution': 0.01,
42 'max_possible': 60e9,
43}
44
Craig Tiller0bda0b32016-03-03 12:51:53 -080045EMPTY_GENERIC_PAYLOAD = {
46 'bytebuf_params': {
47 'req_size': 0,
48 'resp_size': 0,
49 }
50}
51EMPTY_PROTO_PAYLOAD = {
52 'simple_params': {
53 'req_size': 0,
54 'resp_size': 0,
55 }
56}
57BIG_GENERIC_PAYLOAD = {
58 'bytebuf_params': {
59 'req_size': 65536,
60 'resp_size': 65536,
61 }
62}
63
64# deep is the number of RPCs outstanding on a channel in non-ping-pong tests
65# (the value used is 1 otherwise)
66DEEP=100
67
68# wide is the number of client channels in multi-channel tests (1 otherwise)
69WIDE=64
70
71
Craig Tillercb2cd262016-04-01 13:59:54 -070072class CXXLanguage:
73
74 def __init__(self):
75 self.safename = 'cxx'
76
77 def worker_cmdline(self):
78 return ['bins/opt/qps_worker']
79
80 def worker_port_offset(self):
81 return 0
82
83 def scenarios(self):
Craig Tiller0bda0b32016-03-03 12:51:53 -080084 # TODO(ctiller): add 70% load latency test
85 for secure in [True, False]:
86 if secure:
87 secstr = 'secure'
Jan Tattermusch299f97f2016-04-20 18:41:55 -070088 secargs = SECURE_SECARGS
Craig Tiller0bda0b32016-03-03 12:51:53 -080089 else:
90 secstr = 'insecure'
91 secargs = None
92
93 yield {
Jan Tattermusch4fec48b2016-04-12 15:12:54 -070094 'name': 'cpp_generic_async_streaming_ping_pong_%s'
Craig Tiller0bda0b32016-03-03 12:51:53 -080095 % secstr,
96 'num_servers': 1,
97 'num_clients': 1,
98 'client_config': {
99 'client_type': 'ASYNC_CLIENT',
100 'security_params': secargs,
101 'outstanding_rpcs_per_channel': 1,
102 'client_channels': 1,
103 'async_client_threads': 1,
104 'rpc_type': 'STREAMING',
105 'load_params': {
106 'closed_loop': {}
107 },
108 'payload_config': EMPTY_GENERIC_PAYLOAD,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700109 'histogram_params': HISTOGRAM_PARAMS,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800110 },
111 'server_config': {
112 'server_type': 'ASYNC_GENERIC_SERVER',
113 'security_params': secargs,
vjpai1c813292016-04-20 14:17:27 -0700114 'core_limit': 1,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800115 'async_server_threads': 1,
116 'payload_config': EMPTY_GENERIC_PAYLOAD,
117 },
118 'warmup_seconds': WARMUP_SECONDS,
119 'benchmark_seconds': BENCHMARK_SECONDS
120 }
121 yield {
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700122 'name': 'cpp_generic_async_streaming_qps_unconstrained_%s'
Craig Tiller0bda0b32016-03-03 12:51:53 -0800123 % secstr,
124 'num_servers': 1,
125 'num_clients': 0,
126 'client_config': {
127 'client_type': 'ASYNC_CLIENT',
128 'security_params': secargs,
129 'outstanding_rpcs_per_channel': DEEP,
130 'client_channels': WIDE,
vjpai1c813292016-04-20 14:17:27 -0700131 'async_client_threads': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800132 'rpc_type': 'STREAMING',
133 'load_params': {
134 'closed_loop': {}
135 },
136 'payload_config': EMPTY_GENERIC_PAYLOAD,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700137 'histogram_params': HISTOGRAM_PARAMS,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800138 },
139 'server_config': {
140 'server_type': 'ASYNC_GENERIC_SERVER',
141 'security_params': secargs,
142 'core_limit': SINGLE_MACHINE_CORES/2,
vjpai1c813292016-04-20 14:17:27 -0700143 'async_server_threads': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800144 'payload_config': EMPTY_GENERIC_PAYLOAD,
145 },
146 'warmup_seconds': WARMUP_SECONDS,
147 'benchmark_seconds': BENCHMARK_SECONDS
148 }
149 yield {
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700150 'name': 'cpp_generic_async_streaming_qps_one_server_core_%s'
Craig Tiller0bda0b32016-03-03 12:51:53 -0800151 % secstr,
152 'num_servers': 1,
153 'num_clients': 0,
154 'client_config': {
155 'client_type': 'ASYNC_CLIENT',
156 'security_params': secargs,
157 'outstanding_rpcs_per_channel': DEEP,
158 'client_channels': WIDE,
vjpai1c813292016-04-20 14:17:27 -0700159 'async_client_threads': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800160 'rpc_type': 'STREAMING',
161 'load_params': {
162 'closed_loop': {}
163 },
164 'payload_config': EMPTY_GENERIC_PAYLOAD,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700165 'histogram_params': HISTOGRAM_PARAMS,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800166 },
167 'server_config': {
168 'server_type': 'ASYNC_GENERIC_SERVER',
169 'security_params': secargs,
170 'core_limit': 1,
171 'async_server_threads': 1,
172 'payload_config': EMPTY_GENERIC_PAYLOAD,
173 },
174 'warmup_seconds': WARMUP_SECONDS,
175 'benchmark_seconds': BENCHMARK_SECONDS
176 }
177 yield {
Jan Tattermusch7be244b2016-04-14 10:08:25 -0700178 'name': 'cpp_protobuf_async_streaming_qps_unconstrained_%s'
Craig Tiller0bda0b32016-03-03 12:51:53 -0800179 % secstr,
180 'num_servers': 1,
181 'num_clients': 0,
182 'client_config': {
183 'client_type': 'ASYNC_CLIENT',
184 'security_params': secargs,
185 'outstanding_rpcs_per_channel': DEEP,
186 'client_channels': WIDE,
vjpai1c813292016-04-20 14:17:27 -0700187 'async_client_threads': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800188 'rpc_type': 'STREAMING',
189 'load_params': {
190 'closed_loop': {}
191 },
Jan Tattermusch7be244b2016-04-14 10:08:25 -0700192 'payload_config': EMPTY_PROTO_PAYLOAD,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700193 'histogram_params': HISTOGRAM_PARAMS,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800194 },
195 'server_config': {
Jan Tattermusch7be244b2016-04-14 10:08:25 -0700196 'server_type': 'ASYNC_SERVER',
Craig Tiller0bda0b32016-03-03 12:51:53 -0800197 'security_params': secargs,
198 'core_limit': SINGLE_MACHINE_CORES/2,
vjpai1c813292016-04-20 14:17:27 -0700199 'async_server_threads': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800200 },
201 'warmup_seconds': WARMUP_SECONDS,
202 'benchmark_seconds': BENCHMARK_SECONDS
203 }
204 yield {
Jan Tattermusch108f93d2016-04-20 17:58:41 -0700205 'name': 'cpp_protobuf_async_streaming_ping_pong_%s'
Craig Tiller0bda0b32016-03-03 12:51:53 -0800206 % secstr,
207 'num_servers': 1,
208 'num_clients': 1,
209 'client_config': {
210 'client_type': 'ASYNC_CLIENT',
211 'security_params': secargs,
212 'outstanding_rpcs_per_channel': 1,
213 'client_channels': 1,
214 'async_client_threads': 1,
215 'rpc_type': 'STREAMING',
216 'load_params': {
217 'closed_loop': {}
218 },
219 'payload_config': EMPTY_PROTO_PAYLOAD,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700220 'histogram_params': HISTOGRAM_PARAMS,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800221 },
222 'server_config': {
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700223 'server_type': 'ASYNC_SERVER',
Craig Tiller0bda0b32016-03-03 12:51:53 -0800224 'security_params': secargs,
vjpai1c813292016-04-20 14:17:27 -0700225 'core_limit': 1,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800226 'async_server_threads': 1,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800227 },
228 'warmup_seconds': WARMUP_SECONDS,
229 'benchmark_seconds': BENCHMARK_SECONDS
230 }
Jan Tattermusch108f93d2016-04-20 17:58:41 -0700231 yield {
232 'name': 'cpp_protobuf_sync_unary_ping_pong_%s'
233 % secstr,
234 'num_servers': 1,
235 'num_clients': 1,
236 'client_config': {
237 'client_type': 'SYNC_CLIENT',
238 'security_params': secargs,
239 'outstanding_rpcs_per_channel': 1,
240 'client_channels': 1,
241 'async_client_threads': 0,
242 'rpc_type': 'UNARY',
243 'load_params': {
244 'closed_loop': {}
245 },
246 'payload_config': EMPTY_PROTO_PAYLOAD,
247 'histogram_params': HISTOGRAM_PARAMS,
248 },
249 'server_config': {
250 'server_type': 'SYNC_SERVER',
251 'security_params': secargs,
252 'core_limit': 1,
253 'async_server_threads': 0,
254 },
255 'warmup_seconds': WARMUP_SECONDS,
256 'benchmark_seconds': BENCHMARK_SECONDS
257 }
258 yield {
259 'name': 'cpp_protobuf_async_unary_ping_pong_%s'
260 % secstr,
261 'num_servers': 1,
262 'num_clients': 1,
263 'client_config': {
264 'client_type': 'ASYNC_CLIENT',
265 'security_params': secargs,
266 'outstanding_rpcs_per_channel': 1,
267 'client_channels': 1,
268 'async_client_threads': 1,
269 'rpc_type': 'UNARY',
270 'load_params': {
271 'closed_loop': {}
272 },
273 'payload_config': EMPTY_PROTO_PAYLOAD,
274 'histogram_params': HISTOGRAM_PARAMS,
275 },
276 'server_config': {
277 'server_type': 'ASYNC_SERVER',
278 'security_params': secargs,
279 'core_limit': 1,
280 'async_server_threads': 1,
281 },
282 'warmup_seconds': WARMUP_SECONDS,
283 'benchmark_seconds': BENCHMARK_SECONDS
284 }
Craig Tillercb2cd262016-04-01 13:59:54 -0700285
286 def __str__(self):
287 return 'c++'
288
289
290class CSharpLanguage:
291
292 def __init__(self):
293 self.safename = str(self)
294
295 def worker_cmdline(self):
296 return ['tools/run_tests/performance/run_worker_csharp.sh']
297
298 def worker_port_offset(self):
299 return 100
300
301 def scenarios(self):
Jan Tattermusch299f97f2016-04-20 18:41:55 -0700302 secargs = SECURE_SECARGS
Craig Tiller0bda0b32016-03-03 12:51:53 -0800303 yield {
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700304 'name': 'csharp_generic_async_streaming_ping_pong',
Craig Tiller0bda0b32016-03-03 12:51:53 -0800305 'num_servers': 1,
306 'num_clients': 1,
307 'client_config': {
308 'client_type': 'ASYNC_CLIENT',
309 'security_params': secargs,
310 'outstanding_rpcs_per_channel': 1,
311 'client_channels': 1,
312 'async_client_threads': 1,
313 'rpc_type': 'STREAMING',
314 'load_params': {
315 'closed_loop': {}
316 },
317 'payload_config': EMPTY_GENERIC_PAYLOAD,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700318 'histogram_params': HISTOGRAM_PARAMS,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800319 },
320 'server_config': {
321 'server_type': 'ASYNC_GENERIC_SERVER',
322 'security_params': secargs,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700323 'core_limit': 0,
Jan Tattermusch1a311682016-04-20 18:36:32 -0700324 'async_server_threads': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800325 'payload_config': EMPTY_GENERIC_PAYLOAD,
326 },
327 'warmup_seconds': WARMUP_SECONDS,
328 'benchmark_seconds': BENCHMARK_SECONDS
329 }
Jan Tattermuschd61c2522016-04-14 08:36:25 -0700330 yield {
331 'name': 'csharp_protobuf_async_unary_ping_pong',
332 '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': 'UNARY',
341 'load_params': {
342 'closed_loop': {}
343 },
344 'payload_config': EMPTY_PROTO_PAYLOAD,
345 'histogram_params': HISTOGRAM_PARAMS,
346 },
347 'server_config': {
348 'server_type': 'ASYNC_SERVER',
349 'security_params': secargs,
350 'core_limit': 0,
Jan Tattermusch1a311682016-04-20 18:36:32 -0700351 'async_server_threads': 0,
Jan Tattermuschd61c2522016-04-14 08:36:25 -0700352 },
353 'warmup_seconds': WARMUP_SECONDS,
354 'benchmark_seconds': BENCHMARK_SECONDS
355 }
356 yield {
357 'name': 'csharp_protobuf_sync_to_async_unary_ping_pong',
358 'num_servers': 1,
359 'num_clients': 1,
360 'client_config': {
361 'client_type': 'SYNC_CLIENT',
362 'security_params': secargs,
363 'outstanding_rpcs_per_channel': 1,
364 'client_channels': 1,
365 'async_client_threads': 1,
366 'rpc_type': 'UNARY',
367 'load_params': {
368 'closed_loop': {}
369 },
370 'payload_config': EMPTY_PROTO_PAYLOAD,
371 'histogram_params': HISTOGRAM_PARAMS,
372 },
373 'server_config': {
374 'server_type': 'ASYNC_SERVER',
375 'security_params': secargs,
376 'core_limit': 0,
Jan Tattermusch1a311682016-04-20 18:36:32 -0700377 'async_server_threads': 0,
Jan Tattermuschd61c2522016-04-14 08:36:25 -0700378 },
379 'warmup_seconds': WARMUP_SECONDS,
380 'benchmark_seconds': BENCHMARK_SECONDS
381 }
382 yield {
383 'name': 'csharp_to_cpp_protobuf_sync_unary_ping_pong',
384 'num_servers': 1,
385 'num_clients': 1,
386 'client_config': {
387 'client_type': 'SYNC_CLIENT',
388 'security_params': secargs,
389 'outstanding_rpcs_per_channel': 1,
390 'client_channels': 1,
391 'async_client_threads': 1,
392 'rpc_type': 'UNARY',
393 'load_params': {
394 'closed_loop': {}
395 },
396 'payload_config': EMPTY_PROTO_PAYLOAD,
397 'histogram_params': HISTOGRAM_PARAMS,
398 },
399 'server_config': {
400 'server_type': 'SYNC_SERVER',
401 'security_params': secargs,
Jan Tattermuschaf7a8b62016-04-21 10:15:06 -0700402 'core_limit': 1,
403 'async_server_threads': 1,
Jan Tattermuschd61c2522016-04-14 08:36:25 -0700404 },
405 'warmup_seconds': WARMUP_SECONDS,
406 'benchmark_seconds': BENCHMARK_SECONDS,
407 'SERVER_LANGUAGE': 'c++' # recognized by run_performance_tests.py
408 }
Craig Tillercb2cd262016-04-01 13:59:54 -0700409
410 def __str__(self):
411 return 'csharp'
412
413
414class NodeLanguage:
415
416 def __init__(self):
417 pass
418 self.safename = str(self)
419
420 def worker_cmdline(self):
421 return ['tools/run_tests/performance/run_worker_node.sh']
422
423 def worker_port_offset(self):
424 return 200
425
426 def scenarios(self):
427 # TODO(jtattermusch): add more scenarios
Jan Tattermusch299f97f2016-04-20 18:41:55 -0700428 secargs = SECURE_SECARGS
Craig Tiller0bda0b32016-03-03 12:51:53 -0800429 yield {
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700430 'name': 'node_protobuf_unary_ping_pong',
Craig Tiller0bda0b32016-03-03 12:51:53 -0800431 'num_servers': 1,
432 'num_clients': 1,
433 'client_config': {
434 'client_type': 'ASYNC_CLIENT',
435 'security_params': secargs,
436 'outstanding_rpcs_per_channel': 1,
437 'client_channels': 1,
438 'async_client_threads': 1,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700439 'rpc_type': 'UNARY',
Craig Tiller0bda0b32016-03-03 12:51:53 -0800440 'load_params': {
441 'closed_loop': {}
442 },
443 'payload_config': EMPTY_PROTO_PAYLOAD,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700444 'histogram_params': HISTOGRAM_PARAMS,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800445 },
446 'server_config': {
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700447 'server_type': 'ASYNC_SERVER',
Craig Tiller0bda0b32016-03-03 12:51:53 -0800448 'security_params': secargs,
Jan Tattermusch4fec48b2016-04-12 15:12:54 -0700449 'core_limit': 0,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800450 'async_server_threads': 1,
Craig Tiller0bda0b32016-03-03 12:51:53 -0800451 },
452 'warmup_seconds': WARMUP_SECONDS,
453 'benchmark_seconds': BENCHMARK_SECONDS
454 }
Craig Tillercb2cd262016-04-01 13:59:54 -0700455
456 def __str__(self):
457 return 'node'
458
459
Jan Tattermuscha5780e12016-04-15 16:14:42 -0700460class RubyLanguage:
461
462 def __init__(self):
463 pass
464 self.safename = str(self)
465
466 def worker_cmdline(self):
467 return ['tools/run_tests/performance/run_worker_ruby.sh']
468
469 def worker_port_offset(self):
470 return 300
471
472 def scenarios(self):
473 # TODO(jtattermusch): add more scenarios
Jan Tattermusch299f97f2016-04-20 18:41:55 -0700474 secargs = SECURE_SECARGS
Jan Tattermuscha5780e12016-04-15 16:14:42 -0700475 yield {
476 'name': 'ruby_protobuf_unary_ping_pong',
477 'num_servers': 1,
478 'num_clients': 1,
479 'client_config': {
480 'client_type': 'SYNC_CLIENT',
481 'security_params': secargs,
482 'outstanding_rpcs_per_channel': 1,
483 'client_channels': 1,
484 'async_client_threads': 1,
485 'rpc_type': 'UNARY',
486 'load_params': {
487 'closed_loop': {}
488 },
489 'payload_config': EMPTY_PROTO_PAYLOAD,
490 'histogram_params': HISTOGRAM_PARAMS,
491 },
492 'server_config': {
493 'server_type': 'SYNC_SERVER',
494 'security_params': secargs,
495 'core_limit': 0,
496 'async_server_threads': 1,
497 },
498 'warmup_seconds': WARMUP_SECONDS,
499 'benchmark_seconds': BENCHMARK_SECONDS
500 }
501
502 def __str__(self):
503 return 'ruby'
504
505
Jan Tattermuschde874a12016-04-18 09:21:37 -0700506class JavaLanguage:
507
508 def __init__(self):
509 pass
510 self.safename = str(self)
511
512 def worker_cmdline(self):
513 return ['tools/run_tests/performance/run_worker_java.sh']
514
515 def worker_port_offset(self):
516 return 400
517
518 def scenarios(self):
519 # TODO(jtattermusch): add more scenarios
Jan Tattermusche222c002016-04-20 18:55:24 -0700520 for secure in [True, False]:
521 if secure:
522 secstr = 'secure'
523 secargs = SECURE_SECARGS
524 else:
525 secstr = 'insecure'
526 secargs = None
527
528 yield {
529 'name': 'java_protobuf_unary_ping_pong_%s' % secstr,
530 'num_servers': 1,
531 'num_clients': 1,
532 'client_config': {
533 'client_type': 'SYNC_CLIENT',
534 'security_params': secargs,
535 'outstanding_rpcs_per_channel': 1,
536 'client_channels': 1,
537 'async_client_threads': 1,
538 'rpc_type': 'UNARY',
539 'load_params': {
540 'closed_loop': {}
541 },
542 'payload_config': EMPTY_PROTO_PAYLOAD,
543 'histogram_params': HISTOGRAM_PARAMS,
Jan Tattermuschde874a12016-04-18 09:21:37 -0700544 },
Jan Tattermusche222c002016-04-20 18:55:24 -0700545 'server_config': {
546 'server_type': 'SYNC_SERVER',
547 'security_params': secargs,
548 'core_limit': 0,
549 'async_server_threads': 1,
550 },
551 'warmup_seconds': JAVA_WARMUP_SECONDS,
552 'benchmark_seconds': BENCHMARK_SECONDS
553 }
Jan Tattermuschde874a12016-04-18 09:21:37 -0700554
555 def __str__(self):
556 return 'java'
557
558
Craig Tillercb2cd262016-04-01 13:59:54 -0700559LANGUAGES = {
560 'c++' : CXXLanguage(),
561 'csharp' : CSharpLanguage(),
562 'node' : NodeLanguage(),
Jan Tattermuschde874a12016-04-18 09:21:37 -0700563 'ruby' : RubyLanguage(),
564 'java' : JavaLanguage(),
Craig Tillercb2cd262016-04-01 13:59:54 -0700565}