mirror of
https://github.com/grpc/grpc-node.git
synced 2025-12-08 18:23:54 +00:00
Added error events on client streams when the server is streaming
This commit is contained in:
parent
f91d3bcff2
commit
d718acee37
@ -260,8 +260,8 @@ function cancelAfterFirstResponse(client, done) {
|
||||
call.on('data', function(data) {
|
||||
call.cancel();
|
||||
});
|
||||
call.on('status', function(status) {
|
||||
assert.strictEqual(status.code, grpc.status.CANCELLED);
|
||||
call.on('error', function(error) {
|
||||
assert.strictEqual(error.code, grpc.status.CANCELLED);
|
||||
done();
|
||||
});
|
||||
}
|
||||
|
||||
@ -245,6 +245,7 @@ function makeUnaryRequestFunction(method, serialize, deserialize) {
|
||||
if (response.status.code !== grpc.status.OK) {
|
||||
var error = new Error(response.status.details);
|
||||
error.code = response.status.code;
|
||||
error.metadata = response.status.metadata;
|
||||
callback(error);
|
||||
return;
|
||||
}
|
||||
@ -316,6 +317,7 @@ function makeClientStreamRequestFunction(method, serialize, deserialize) {
|
||||
if (response.status.code !== grpc.status.OK) {
|
||||
var error = new Error(response.status.details);
|
||||
error.code = response.status.code;
|
||||
error.metadata = response.status.metadata;
|
||||
callback(error);
|
||||
return;
|
||||
}
|
||||
@ -382,6 +384,13 @@ function makeServerStreamRequestFunction(method, serialize, deserialize) {
|
||||
throw err;
|
||||
}
|
||||
stream.emit('status', response.status);
|
||||
if (response.status.code !== grpc.status.OK) {
|
||||
var error = new Error(response.status.details);
|
||||
error.code = response.status.code;
|
||||
error.metadata = response.status.metadata;
|
||||
stream.emit('error', error);
|
||||
return;
|
||||
}
|
||||
});
|
||||
});
|
||||
return stream;
|
||||
@ -440,6 +449,13 @@ function makeBidiStreamRequestFunction(method, serialize, deserialize) {
|
||||
throw err;
|
||||
}
|
||||
stream.emit('status', response.status);
|
||||
if (response.status.code !== grpc.status.OK) {
|
||||
var error = new Error(response.status.details);
|
||||
error.code = response.status.code;
|
||||
error.metadata = response.status.metadata;
|
||||
stream.emit('error', error);
|
||||
return;
|
||||
}
|
||||
});
|
||||
});
|
||||
return stream;
|
||||
|
||||
@ -130,8 +130,7 @@ describe('Math client', function() {
|
||||
});
|
||||
call.write({dividend: 7, divisor: 0});
|
||||
call.end();
|
||||
call.on('status', function checkStatus(status) {
|
||||
assert.notEqual(status.code, grpc.status.OK);
|
||||
call.on('error', function checkStatus(status) {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
@ -278,9 +278,8 @@ describe('Trailing metadata', function() {
|
||||
it('should be present when a server stream call fails', function(done) {
|
||||
var call = client.serverStream({error: true});
|
||||
call.on('data', function(){});
|
||||
call.on('status', function(status) {
|
||||
assert.notStrictEqual(status.code, grpc.status.OK);
|
||||
assert.deepEqual(status.metadata.metadata, ['yes']);
|
||||
call.on('error', function(error) {
|
||||
assert.deepEqual(error.metadata.metadata, ['yes']);
|
||||
done();
|
||||
});
|
||||
});
|
||||
@ -302,9 +301,8 @@ describe('Trailing metadata', function() {
|
||||
call.write({error: true});
|
||||
call.end();
|
||||
call.on('data', function(){});
|
||||
call.on('status', function(status) {
|
||||
assert.notStrictEqual(status.code, grpc.status.OK);
|
||||
assert.deepEqual(status.metadata.metadata, ['yes']);
|
||||
call.on('error', function(error) {
|
||||
assert.deepEqual(error.metadata.metadata, ['yes']);
|
||||
done();
|
||||
});
|
||||
});
|
||||
@ -345,16 +343,16 @@ describe('Cancelling surface client', function() {
|
||||
});
|
||||
it('Should correctly cancel a server stream call', function(done) {
|
||||
var call = client.fib({'limit': 5});
|
||||
call.on('status', function(status) {
|
||||
assert.strictEqual(status.code, surface_client.status.CANCELLED);
|
||||
call.on('error', function(error) {
|
||||
assert.strictEqual(error.code, surface_client.status.CANCELLED);
|
||||
done();
|
||||
});
|
||||
call.cancel();
|
||||
});
|
||||
it('Should correctly cancel a bidi stream call', function(done) {
|
||||
var call = client.divMany();
|
||||
call.on('status', function(status) {
|
||||
assert.strictEqual(status.code, surface_client.status.CANCELLED);
|
||||
call.on('error', function(error) {
|
||||
assert.strictEqual(error.code, surface_client.status.CANCELLED);
|
||||
done();
|
||||
});
|
||||
call.cancel();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user