Merge remote-tracking branch 'upstream/v1.8.x' into v1.8.4_upmerge

This commit is contained in:
murgatroid99 2018-01-31 14:11:43 -08:00
commit 081c157f78
4 changed files with 26 additions and 16 deletions

View File

@ -52,6 +52,22 @@ var Duplex = stream.Duplex;
var util = require('util'); var util = require('util');
var version = require('../package.json').version; var version = require('../package.json').version;
/**
* Create an Error object from a status object
* @private
* @param {grpc~StatusObject} status The status object
* @return {Error} The resulting Error
*/
function createStatusError(status) {
let statusName = _.invert(constants.status)[status.code];
let message = `${status.code} ${statusName}: ${status.details}`;
let error = new Error(message);
error.code = status.code;
error.metadata = status.metadata;
error.details = status.details;
return error;
}
/** /**
* Initial response metadata sent by the server when it starts processing the * Initial response metadata sent by the server when it starts processing the
* call * call
@ -251,9 +267,7 @@ function _emitStatusIfDone() {
if (status.code === constants.status.OK) { if (status.code === constants.status.OK) {
this.push(null); this.push(null);
} else { } else {
var error = new Error(status.details); var error = createStatusError(status);
error.code = status.code;
error.metadata = status.metadata;
this.emit('error', error); this.emit('error', error);
} }
this.emit('status', status); this.emit('status', status);
@ -556,9 +570,7 @@ Client.prototype.makeUnaryRequest = function(method, serialize, deserialize,
} }
} }
if (status.code !== constants.status.OK) { if (status.code !== constants.status.OK) {
error = new Error(status.details); error = new createStatusError(status);
error.code = status.code;
error.metadata = status.metadata;
callback(error); callback(error);
} else { } else {
callback(null, deserialized); callback(null, deserialized);
@ -645,9 +657,7 @@ Client.prototype.makeClientStreamRequest = function(method, serialize,
} }
} }
if (status.code !== constants.status.OK) { if (status.code !== constants.status.OK) {
error = new Error(response.status.details); error = createStatusError(status);
error.code = status.code;
error.metadata = status.metadata;
callback(error); callback(error);
} else { } else {
callback(null, deserialized); callback(null, deserialized);

View File

@ -319,7 +319,7 @@ describe('client credentials', function() {
client_options); client_options);
client.unary({}, function(err, data) { client.unary({}, function(err, data) {
assert(err); assert(err);
assert.strictEqual(err.message, assert.strictEqual(err.details,
'Getting metadata from plugin failed with error: ' + 'Getting metadata from plugin failed with error: ' +
'Authentication error'); 'Authentication error');
assert.notStrictEqual(err.code, grpc.status.OK); assert.notStrictEqual(err.code, grpc.status.OK);
@ -369,7 +369,7 @@ describe('client credentials', function() {
client_options); client_options);
client.unary({}, function(err, data) { client.unary({}, function(err, data) {
assert(err); assert(err);
assert.strictEqual(err.message, assert.strictEqual(err.details,
'Getting metadata from plugin failed with error: ' + 'Getting metadata from plugin failed with error: ' +
'Authentication failure'); 'Authentication failure');
done(); done();

View File

@ -981,7 +981,7 @@ describe('Other conditions', function() {
client.unary({error: true}, function(err, data) { client.unary({error: true}, function(err, data) {
assert(err); assert(err);
assert.strictEqual(err.code, grpc.status.UNKNOWN); assert.strictEqual(err.code, grpc.status.UNKNOWN);
assert.strictEqual(err.message, 'Requested error'); assert.strictEqual(err.details, 'Requested error');
done(); done();
}); });
}); });
@ -989,7 +989,7 @@ describe('Other conditions', function() {
var call = client.clientStream(function(err, data) { var call = client.clientStream(function(err, data) {
assert(err); assert(err);
assert.strictEqual(err.code, grpc.status.UNKNOWN); assert.strictEqual(err.code, grpc.status.UNKNOWN);
assert.strictEqual(err.message, 'Requested error'); assert.strictEqual(err.details, 'Requested error');
done(); done();
}); });
call.write({error: false}); call.write({error: false});
@ -1001,7 +1001,7 @@ describe('Other conditions', function() {
call.on('data', function(){}); call.on('data', function(){});
call.on('error', function(error) { call.on('error', function(error) {
assert.strictEqual(error.code, grpc.status.UNKNOWN); assert.strictEqual(error.code, grpc.status.UNKNOWN);
assert.strictEqual(error.message, 'Requested error'); assert.strictEqual(error.details, 'Requested error');
done(); done();
}); });
}); });
@ -1013,7 +1013,7 @@ describe('Other conditions', function() {
call.on('data', function(){}); call.on('data', function(){});
call.on('error', function(error) { call.on('error', function(error) {
assert.strictEqual(error.code, grpc.status.UNKNOWN); assert.strictEqual(error.code, grpc.status.UNKNOWN);
assert.strictEqual(error.message, 'Requested error'); assert.strictEqual(error.details, 'Requested error');
done(); done();
}); });
}); });

View File

@ -347,7 +347,7 @@ function statusCodeAndMessage(client, done) {
client.unaryCall(arg, function(err, resp) { client.unaryCall(arg, function(err, resp) {
assert(err); assert(err);
assert.strictEqual(err.code, 2); assert.strictEqual(err.code, 2);
assert.strictEqual(err.message, 'test status message'); assert.strictEqual(err.details, 'test status message');
done(); done();
}); });
var duplex = client.fullDuplexCall(); var duplex = client.fullDuplexCall();