diff options
Diffstat (limited to 'src/node/stress/stress_client.js')
-rw-r--r-- | src/node/stress/stress_client.js | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/src/node/stress/stress_client.js b/src/node/stress/stress_client.js deleted file mode 100644 index fc35d45f4d..0000000000 --- a/src/node/stress/stress_client.js +++ /dev/null @@ -1,111 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -'use strict'; - -var _ = require('lodash'); - -var grpc = require('../../..'); - -var interop_client = require('../interop/interop_client'); -var MetricsServer = require('./metrics_server'); - -var running; - -var metrics_server; - -var start_time; -var query_count; - -function makeCall(client, test_cases) { - if (!running) { - return; - } - var test_case = test_cases[_.random(test_cases.length - 1)]; - interop_client.test_cases[test_case].run(client, function() { - query_count += 1; - makeCall(client, test_cases); - }); -} - -function makeCalls(client, test_cases, parallel_calls_per_channel) { - _.times(parallel_calls_per_channel, function() { - makeCall(client, test_cases); - }); -} - -function getQps() { - var diff = process.hrtime(start_time); - var seconds = diff[0] + diff[1] / 1e9; - return {long_value: query_count / seconds}; -} - -function start(server_addresses, test_cases, channels_per_server, - parallel_calls_per_channel, metrics_port) { - running = true; - /* Assuming that we are not calling unimplemented_method. The client class - * used by empty_unary is (currently) the client class used by every interop - * test except unimplemented_method */ - var Client = interop_client.test_cases.empty_unary.Client; - /* Make channels_per_server clients connecting to each server address */ - var channels = _.flatten(_.times( - channels_per_server, _.partial(_.map, server_addresses, function(address) { - return new Client(address, grpc.credentials.createInsecure()); - }))); - metrics_server = new MetricsServer(metrics_port); - metrics_server.registerGauge('qps', getQps); - start_time = process.hrtime(); - query_count = 0; - _.each(channels, _.partial(makeCalls, _, test_cases, - parallel_calls_per_channel)); - metrics_server.start(); -} - -function stop() { - running = false; - metrics_server.shutdown(); - console.log('QPS: ' + getQps().long_value); -} - -function main() { - var parseArgs = require('minimist'); - var argv = parseArgs(process.argv, { - string: ['server_addresses', 'test_cases', 'metrics_port'], - default: {'server_addresses': 'localhost:8080', - 'test_duration_secs': -1, - 'num_channels_per_server': 1, - 'num_stubs_per_channel': 1, - 'metrics_port': '8081'} - }); - var server_addresses = argv.server_addresses.split(','); - /* Generate an array of test cases, where the number of instances of each name - * corresponds to the number given in the argument. - * e.g. 'empty_unary:1,large_unary:2' => - * ['empty_unary', 'large_unary', 'large_unary'] */ - var test_cases = _.flatten(_.map(argv.test_cases.split(','), function(value) { - var split = value.split(':'); - return _.times(split[1], _.constant(split[0])); - })); - start(server_addresses, test_cases, argv.num_channels_per_server, - argv.num_stubs_per_channel, argv.metrics_port); - if (argv.test_duration_secs > -1) { - setTimeout(stop, argv.test_duration_secs * 1000); - } -} - -main(); |