mirror of https://github.com/grpc/grpc-node.git
Refactored tests to avoid hanging
This commit is contained in:
parent
ed731519c6
commit
f5e13dba4f
|
|
@ -34,8 +34,6 @@
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var grpc = require('bindings')('grpc.node');
|
var grpc = require('bindings')('grpc.node');
|
||||||
|
|
||||||
var channel = new grpc.Channel('localhost:7070');
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper function to return an absolute deadline given a relative timeout in
|
* Helper function to return an absolute deadline given a relative timeout in
|
||||||
* seconds.
|
* seconds.
|
||||||
|
|
@ -49,6 +47,17 @@ function getDeadline(timeout_secs) {
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('call', function() {
|
describe('call', function() {
|
||||||
|
var channel;
|
||||||
|
var server;
|
||||||
|
before(function() {
|
||||||
|
server = new grpc.Server();
|
||||||
|
var port = server.addHttp2Port('localhost:0');
|
||||||
|
server.start();
|
||||||
|
channel = new grpc.Channel('localhost:' + port);
|
||||||
|
});
|
||||||
|
after(function() {
|
||||||
|
server.shutdown();
|
||||||
|
});
|
||||||
describe('constructor', function() {
|
describe('constructor', function() {
|
||||||
it('should reject anything less than 3 arguments', function() {
|
it('should reject anything less than 3 arguments', function() {
|
||||||
assert.throws(function() {
|
assert.throws(function() {
|
||||||
|
|
|
||||||
|
|
@ -86,14 +86,23 @@ function cancelHandler(stream) {
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('echo client', function() {
|
describe('echo client', function() {
|
||||||
it('should receive echo responses', function(done) {
|
var server;
|
||||||
var server = new Server();
|
var channel;
|
||||||
|
before(function() {
|
||||||
|
server = new Server();
|
||||||
var port_num = server.bind('0.0.0.0:0');
|
var port_num = server.bind('0.0.0.0:0');
|
||||||
server.register('echo', echoHandler);
|
server.register('echo', echoHandler);
|
||||||
|
server.register('error', errorHandler);
|
||||||
|
server.register('cancellation', cancelHandler);
|
||||||
server.start();
|
server.start();
|
||||||
|
|
||||||
|
channel = new grpc.Channel('localhost:' + port_num);
|
||||||
|
});
|
||||||
|
after(function() {
|
||||||
|
server.shutdown();
|
||||||
|
});
|
||||||
|
it('should receive echo responses', function(done) {
|
||||||
var messages = ['echo1', 'echo2', 'echo3', 'echo4'];
|
var messages = ['echo1', 'echo2', 'echo3', 'echo4'];
|
||||||
var channel = new grpc.Channel('localhost:' + port_num);
|
|
||||||
var stream = client.makeRequest(
|
var stream = client.makeRequest(
|
||||||
channel,
|
channel,
|
||||||
'echo');
|
'echo');
|
||||||
|
|
@ -105,98 +114,91 @@ describe('echo client', function() {
|
||||||
assert.equal(messages[index], chunk.toString());
|
assert.equal(messages[index], chunk.toString());
|
||||||
index += 1;
|
index += 1;
|
||||||
});
|
});
|
||||||
|
stream.on('end', function() {
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it('should get an error status that the server throws', function(done) {
|
||||||
|
var stream = client.makeRequest(
|
||||||
|
channel,
|
||||||
|
'error',
|
||||||
|
null,
|
||||||
|
getDeadline(1));
|
||||||
|
|
||||||
|
stream.on('data', function() {});
|
||||||
|
stream.write(new Buffer('test'));
|
||||||
|
stream.end();
|
||||||
|
stream.on('status', function(status) {
|
||||||
|
assert.equal(status.code, grpc.status.UNIMPLEMENTED);
|
||||||
|
assert.equal(status.details, 'error details');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it('should be able to cancel a call', function(done) {
|
||||||
|
var stream = client.makeRequest(
|
||||||
|
channel,
|
||||||
|
'cancellation',
|
||||||
|
null,
|
||||||
|
getDeadline(1));
|
||||||
|
|
||||||
|
stream.cancel();
|
||||||
|
stream.on('status', function(status) {
|
||||||
|
assert.equal(status.code, grpc.status.CANCELLED);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
/* TODO(mlumish): explore options for reducing duplication between this test
|
||||||
|
* and the insecure echo client test */
|
||||||
|
describe('secure echo client', function() {
|
||||||
|
var server;
|
||||||
|
var channel;
|
||||||
|
before(function(done) {
|
||||||
|
fs.readFile(ca_path, function(err, ca_data) {
|
||||||
|
assert.ifError(err);
|
||||||
|
fs.readFile(key_path, function(err, key_data) {
|
||||||
|
assert.ifError(err);
|
||||||
|
fs.readFile(pem_path, function(err, pem_data) {
|
||||||
|
assert.ifError(err);
|
||||||
|
var creds = grpc.Credentials.createSsl(ca_data);
|
||||||
|
var server_creds = grpc.ServerCredentials.createSsl(null,
|
||||||
|
key_data,
|
||||||
|
pem_data);
|
||||||
|
|
||||||
|
server = new Server({'credentials' : server_creds});
|
||||||
|
var port_num = server.bind('0.0.0.0:0', true);
|
||||||
|
server.register('echo', echoHandler);
|
||||||
|
server.start();
|
||||||
|
|
||||||
|
channel = new grpc.Channel('localhost:' + port_num, {
|
||||||
|
'grpc.ssl_target_name_override' : 'foo.test.google.com',
|
||||||
|
'credentials' : creds
|
||||||
|
});
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
after(function() {
|
||||||
|
server.shutdown();
|
||||||
|
});
|
||||||
|
it('should recieve echo responses', function(done) {
|
||||||
|
var messages = ['echo1', 'echo2', 'echo3', 'echo4'];
|
||||||
|
var stream = client.makeRequest(
|
||||||
|
channel,
|
||||||
|
'echo');
|
||||||
|
|
||||||
|
_(messages).map(function(val) {
|
||||||
|
return new Buffer(val);
|
||||||
|
}).pipe(stream);
|
||||||
|
var index = 0;
|
||||||
|
stream.on('data', function(chunk) {
|
||||||
|
assert.equal(messages[index], chunk.toString());
|
||||||
|
index += 1;
|
||||||
|
});
|
||||||
stream.on('end', function() {
|
stream.on('end', function() {
|
||||||
server.shutdown();
|
server.shutdown();
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('should get an error status that the server throws', function(done) {
|
|
||||||
var server = new Server();
|
|
||||||
var port_num = server.bind('0.0.0.0:0');
|
|
||||||
server.register('error', errorHandler);
|
|
||||||
server.start();
|
|
||||||
|
|
||||||
var channel = new grpc.Channel('localhost:' + port_num);
|
|
||||||
var stream = client.makeRequest(
|
|
||||||
channel,
|
|
||||||
'error',
|
|
||||||
null,
|
|
||||||
getDeadline(1));
|
|
||||||
|
|
||||||
stream.on('data', function() {});
|
|
||||||
stream.write(new Buffer('test'));
|
|
||||||
stream.end();
|
|
||||||
stream.on('status', function(status) {
|
|
||||||
assert.equal(status.code, grpc.status.UNIMPLEMENTED);
|
|
||||||
assert.equal(status.details, 'error details');
|
|
||||||
server.shutdown();
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
it('should be able to cancel a call', function(done) {
|
|
||||||
var server = new Server();
|
|
||||||
var port_num = server.bind('0.0.0.0:0');
|
|
||||||
server.register('cancellation', cancelHandler);
|
|
||||||
server.start();
|
|
||||||
|
|
||||||
var channel = new grpc.Channel('localhost:' + port_num);
|
|
||||||
var stream = client.makeRequest(
|
|
||||||
channel,
|
|
||||||
'cancellation',
|
|
||||||
null,
|
|
||||||
getDeadline(1));
|
|
||||||
|
|
||||||
stream.cancel();
|
|
||||||
stream.on('status', function(status) {
|
|
||||||
assert.equal(status.code, grpc.status.CANCELLED);
|
|
||||||
server.shutdown();
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
/* TODO(mlumish): explore options for reducing duplication between this test
|
|
||||||
* and the insecure echo client test */
|
|
||||||
describe('secure echo client', function() {
|
|
||||||
it('should recieve echo responses', function(done) {
|
|
||||||
fs.readFile(ca_path, function(err, ca_data) {
|
|
||||||
assert.ifError(err);
|
|
||||||
fs.readFile(key_path, function(err, key_data) {
|
|
||||||
assert.ifError(err);
|
|
||||||
fs.readFile(pem_path, function(err, pem_data) {
|
|
||||||
assert.ifError(err);
|
|
||||||
var creds = grpc.Credentials.createSsl(ca_data);
|
|
||||||
var server_creds = grpc.ServerCredentials.createSsl(null,
|
|
||||||
key_data,
|
|
||||||
pem_data);
|
|
||||||
|
|
||||||
var server = new Server({'credentials' : server_creds});
|
|
||||||
var port_num = server.bind('0.0.0.0:0', true);
|
|
||||||
server.register('echo', echoHandler);
|
|
||||||
server.start();
|
|
||||||
|
|
||||||
var messages = ['echo1', 'echo2', 'echo3', 'echo4'];
|
|
||||||
var channel = new grpc.Channel('localhost:' + port_num, {
|
|
||||||
'grpc.ssl_target_name_override' : 'foo.test.google.com',
|
|
||||||
'credentials' : creds
|
|
||||||
});
|
|
||||||
var stream = client.makeRequest(
|
|
||||||
channel,
|
|
||||||
'echo');
|
|
||||||
|
|
||||||
_(messages).map(function(val) {
|
|
||||||
return new Buffer(val);
|
|
||||||
}).pipe(stream);
|
|
||||||
var index = 0;
|
|
||||||
stream.on('data', function(chunk) {
|
|
||||||
assert.equal(messages[index], chunk.toString());
|
|
||||||
index += 1;
|
|
||||||
});
|
|
||||||
stream.on('end', function() {
|
|
||||||
server.shutdown();
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue