mirror of https://github.com/grpc/grpc-node.git
97 lines
3.0 KiB
JavaScript
97 lines
3.0 KiB
JavaScript
const grpc = require('../any_grpc').server;
|
|
const protoLoader = require('../../packages/proto-loader');
|
|
const protoPackage = protoLoader.loadSync(
|
|
'src/proto/grpc/testing/worker_service.proto',
|
|
{keepCase: true,
|
|
defaults: true,
|
|
enums: String,
|
|
oneofs: true,
|
|
includeDirs: [__dirname + '/../proto/']});
|
|
const serviceProto = grpc.loadPackageDefinition(protoPackage).grpc.testing;
|
|
|
|
function main() {
|
|
const parseArgs = require('minimist');
|
|
const argv = parseArgs(process.argv, {
|
|
string: ['client_worker_port', 'server_worker_port']
|
|
});
|
|
const clientWorker = new serviceProto.WorkerService(`localhost:${argv.client_worker_port}`, grpc.credentials.createInsecure());
|
|
const serverWorker = new serviceProto.WorkerService(`localhost:${argv.server_worker_port}`, grpc.credentials.createInsecure());
|
|
const serverWorkerStream = serverWorker.runServer();
|
|
const clientWorkerStream = clientWorker.runClient();
|
|
let firstServerResponseReceived = false;
|
|
let markCount = 0;
|
|
serverWorkerStream.on('data', (response) => {
|
|
console.log('Server stats:', response.stats);
|
|
if (!firstServerResponseReceived) {
|
|
firstServerResponseReceived = true;
|
|
clientWorkerStream.write({
|
|
setup: {
|
|
server_targets: [`localhost:${response.port}`],
|
|
client_channels: 1,
|
|
outstanding_rpcs_per_channel: 1,
|
|
histogram_params: {
|
|
resolution: 0.01,
|
|
max_possible:60000000000
|
|
},
|
|
payload_config: {
|
|
bytebuf_params: {
|
|
req_size: 10,
|
|
resp_size: 10
|
|
}
|
|
},
|
|
load_params: {
|
|
closed_loop: {}
|
|
}
|
|
}
|
|
});
|
|
clientWorkerStream.on('status', (status) => {
|
|
console.log('Received client worker status ' + JSON.stringify(status));
|
|
serverWorkerStream.end();
|
|
});
|
|
const markInterval = setInterval(() => {
|
|
if (markCount >= 5) {
|
|
clientWorkerStream.end();
|
|
clearInterval(markInterval);
|
|
} else {
|
|
clientWorkerStream.write({
|
|
mark: {}
|
|
});
|
|
serverWorkerStream.write({
|
|
mark: {}
|
|
});
|
|
}
|
|
markCount += 1;
|
|
}, 1000);
|
|
}
|
|
});
|
|
clientWorkerStream.on('data', (response) => {
|
|
console.log('Client stats:', response.stats);
|
|
});
|
|
serverWorkerStream.write({
|
|
setup: {
|
|
port: 0
|
|
}
|
|
});
|
|
serverWorkerStream.on('status', (status) => {
|
|
console.log('Received server worker status ' + JSON.stringify(status));
|
|
clientWorker.quitWorker({}, (error, response) => {
|
|
if (error) {
|
|
console.log('Received error on clientWorker.quitWorker:', error);
|
|
} else {
|
|
console.log('Received response from clientWorker.quitWorker');
|
|
}
|
|
});
|
|
serverWorker.quitWorker({}, (error, response) => {
|
|
if (error) {
|
|
console.log('Received error on serverWorker.quitWorker:', error);
|
|
} else {
|
|
console.log('Received response from serverWorker.quitWorker');
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
if (require.main === module) {
|
|
main();
|
|
}
|