Merge github.com:grpc/grpc into we-dont-need-no-backup

This commit is contained in:
Craig Tiller 2015-05-17 14:28:56 -07:00
commit 19dba77736
3 changed files with 26 additions and 7 deletions

View File

@ -263,6 +263,19 @@ function cancelAfterFirstResponse(client, done) {
});
}
function timeoutOnSleepingServer(client, done) {
var deadline = new Date();
deadline.setMilliseconds(deadline.getMilliseconds() + 1);
var call = client.fullDuplexCall(null, deadline);
call.write({
payload: {body: zeroBuffer(27182)}
});
call.on('error', function(error) {
assert.strictEqual(error.code, grpc.status.DEADLINE_EXCEEDED);
done();
});
}
/**
* Run one of the authentication tests.
* @param {string} expected_user The expected username in the response
@ -271,7 +284,7 @@ function cancelAfterFirstResponse(client, done) {
* @param {function} done Callback to call when the test is completed. Included
* primarily for use with mocha
*/
function authTest(expected_user, client, scope, done) {
function authTest(expected_user, scope, client, done) {
(new GoogleAuth()).getApplicationDefault(function(err, credential) {
assert.ifError(err);
if (credential.createScopedRequired() && scope) {
@ -315,6 +328,7 @@ var test_cases = {
empty_stream: emptyStream,
cancel_after_begin: cancelAfterBegin,
cancel_after_first_response: cancelAfterFirstResponse,
timeout_on_sleeping_server: timeoutOnSleepingServer,
compute_engine_creds: _.partial(authTest, COMPUTE_ENGINE_USER, null),
service_account_creds: _.partial(authTest, AUTH_USER, AUTH_SCOPE),
jwt_token_creds: _.partial(authTest, AUTH_USER, null)

View File

@ -223,7 +223,7 @@ function makeUnaryRequestFunction(method, serialize, deserialize) {
emitter.cancel = function cancel() {
call.cancel();
};
this.updateMetadata(metadata, function(error, metadata) {
this.updateMetadata(this.auth_uri, metadata, function(error, metadata) {
if (error) {
call.cancel();
callback(error);
@ -289,7 +289,7 @@ function makeClientStreamRequestFunction(method, serialize, deserialize) {
metadata = {};
}
var stream = new ClientWritableStream(call, serialize);
this.updateMetadata(metadata, function(error, metadata) {
this.updateMetadata(this.auth_uri, metadata, function(error, metadata) {
if (error) {
call.cancel();
callback(error);
@ -360,7 +360,7 @@ function makeServerStreamRequestFunction(method, serialize, deserialize) {
metadata = {};
}
var stream = new ClientReadableStream(call, deserialize);
this.updateMetadata(metadata, function(error, metadata) {
this.updateMetadata(this.auth_uri, metadata, function(error, metadata) {
if (error) {
call.cancel();
stream.emit('error', error);
@ -427,7 +427,7 @@ function makeBidiStreamRequestFunction(method, serialize, deserialize) {
metadata = {};
}
var stream = new ClientDuplexStream(call, serialize, deserialize);
this.updateMetadata(metadata, function(error, metadata) {
this.updateMetadata(this.auth_uri, metadata, function(error, metadata) {
if (error) {
call.cancel();
stream.emit('error', error);
@ -503,10 +503,11 @@ function makeClientConstructor(methods, serviceName) {
callback(null, metadata);
};
}
this.server_address = address.replace(/\/$/, '');
this.channel = new grpc.Channel(address, options);
this.updateMetadata = _.partial(updateMetadata,
this.server_address + '/' + serviceName);
this.auth_uri = this.server_address + '/' + serviceName;
this.updateMetadata = updateMetadata;
}
_.each(methods, function(attrs, name) {

View File

@ -86,4 +86,8 @@ describe('Interop tests', function() {
interop_client.runTest(port, name_override, 'cancel_after_first_response',
true, true, done);
});
it('should pass timeout_on_sleeping_server', function(done) {
interop_client.runTest(port, name_override, 'timeout_on_sleeping_server',
true, true, done);
});
});