mirror of https://github.com/grpc/grpc-node.git
Get the tests passing
This commit is contained in:
parent
4bb965d2d8
commit
f0d02f830d
|
|
@ -447,7 +447,11 @@ export class Http2ServerCallStream<
|
||||||
try {
|
try {
|
||||||
const requestBytes = Buffer.concat(chunks, totalLength);
|
const requestBytes = Buffer.concat(chunks, totalLength);
|
||||||
if (this.maxReceiveMessageSize !== -1 && requestBytes.length > this.maxReceiveMessageSize) {
|
if (this.maxReceiveMessageSize !== -1 && requestBytes.length > this.maxReceiveMessageSize) {
|
||||||
this.cancelWithStatus(Status.RESOURCE_EXHAUSTED, `Server received message of size ${requestBytes.length} > max size ${this.maxReceiveMessageSize}`);
|
this.sendError({
|
||||||
|
code: Status.RESOURCE_EXHAUSTED,
|
||||||
|
details: `Server received message of size ${requestBytes.length} > max size ${this.maxReceiveMessageSize}`
|
||||||
|
});
|
||||||
|
resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve(await this.deserializeMessage(requestBytes));
|
resolve(await this.deserializeMessage(requestBytes));
|
||||||
|
|
@ -564,18 +568,17 @@ export class Http2ServerCallStream<
|
||||||
this.sendStatus(status);
|
this.sendStatus(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
cancelWithStatus(code: Status, details: string) {
|
|
||||||
this.cancelled = true;
|
|
||||||
this.sendStatus({code, details, metadata: new Metadata()});
|
|
||||||
}
|
|
||||||
|
|
||||||
write(chunk: Buffer) {
|
write(chunk: Buffer) {
|
||||||
if (this.checkCancelled()) {
|
if (this.checkCancelled()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.maxSendMessageSize !== -1 && chunk.length > this.maxSendMessageSize) {
|
if (this.maxSendMessageSize !== -1 && chunk.length > this.maxSendMessageSize) {
|
||||||
this.cancelWithStatus(Status.RESOURCE_EXHAUSTED, `Server failed to send message of size ${chunk.length} > max size ${this.maxSendMessageSize}`);
|
this.sendError({
|
||||||
|
code: Status.RESOURCE_EXHAUSTED,
|
||||||
|
details: `Server failed to send message of size ${chunk.length} > max size ${this.maxSendMessageSize}`
|
||||||
|
});
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.sendMetadata();
|
this.sendMetadata();
|
||||||
|
|
@ -605,7 +608,11 @@ export class Http2ServerCallStream<
|
||||||
|
|
||||||
for (const message of messages) {
|
for (const message of messages) {
|
||||||
if (this.maxReceiveMessageSize !== -1 && message.length > this.maxReceiveMessageSize) {
|
if (this.maxReceiveMessageSize !== -1 && message.length > this.maxReceiveMessageSize) {
|
||||||
this.cancelWithStatus(Status.RESOURCE_EXHAUSTED, `Server received message of size ${message.length} > max size ${this.maxReceiveMessageSize}`);
|
this.sendError({
|
||||||
|
code: Status.RESOURCE_EXHAUSTED,
|
||||||
|
details: `Server received message of size ${message.length} > max size ${this.maxReceiveMessageSize}`
|
||||||
|
});
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
this.pushOrBufferMessage(readable, message);
|
this.pushOrBufferMessage(readable, message);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -144,9 +144,9 @@ describe(`${anyGrpc.clientName} client -> ${anyGrpc.serverName} server`, functio
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
describe.only('max message size', function() {
|
describe('max message size', function() {
|
||||||
// A size that is larger than the default limit
|
// A size that is larger than the default limit
|
||||||
const largeMessageSize = 6 * 1024 * 1024;
|
const largeMessageSize = 8 * 1024 * 1024;
|
||||||
const largeMessage = Buffer.alloc(largeMessageSize);
|
const largeMessage = Buffer.alloc(largeMessageSize);
|
||||||
it('should get an error when sending a large message', function(done) {
|
it('should get an error when sending a large message', function(done) {
|
||||||
done = multiDone(done, 2);
|
done = multiDone(done, 2);
|
||||||
|
|
@ -257,27 +257,28 @@ describe(`${anyGrpc.clientName} client -> ${anyGrpc.serverName} server`, functio
|
||||||
restrictedServer.forceShutdown();
|
restrictedServer.forceShutdown();
|
||||||
});
|
});
|
||||||
it('should get an error when sending a large message', function(done) {
|
it('should get an error when sending a large message', function(done) {
|
||||||
done = multiDone(done, 2);
|
|
||||||
restrictedServerClient.unaryCall({payload: {body: largeMessage}}, (error, result) => {
|
restrictedServerClient.unaryCall({payload: {body: largeMessage}}, (error, result) => {
|
||||||
|
console.log(error.message);
|
||||||
assert(error);
|
assert(error);
|
||||||
assert.strictEqual(error.code, grpc.status.RESOURCE_EXHAUSTED);
|
assert.strictEqual(error.code, grpc.status.RESOURCE_EXHAUSTED);
|
||||||
done();
|
const stream = restrictedServerClient.fullDuplexCall();
|
||||||
});
|
stream.write({payload: {body: largeMessage}});
|
||||||
const stream = restrictedServerClient.fullDuplexCall();
|
stream.end();
|
||||||
stream.write({payload: {body: largeMessage}});
|
stream.on('data', () => {});
|
||||||
stream.end();
|
stream.on('status', (status) => {
|
||||||
stream.on('data', () => {});
|
console.log(status.details);
|
||||||
stream.on('status', (status) => {
|
assert.strictEqual(status.code, grpc.status.RESOURCE_EXHAUSTED);
|
||||||
assert.strictEqual(status.code, grpc.status.RESOURCE_EXHAUSTED);
|
done();
|
||||||
done();
|
});
|
||||||
});
|
stream.on('error', (error) => {
|
||||||
stream.on('error', (error) => {
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('should get an error when requesting a large message', function(done) {
|
it('should get an error when requesting a large message', function(done) {
|
||||||
done = multiDone(done, 2);
|
done = multiDone(done, 2);
|
||||||
restrictedServerClient.unaryCall({response_size: largeMessageSize}, (error, result) => {
|
restrictedServerClient.unaryCall({response_size: largeMessageSize}, (error, result) => {
|
||||||
assert(error);
|
assert(error);
|
||||||
|
console.log(error.message);
|
||||||
assert.strictEqual(error.code, grpc.status.RESOURCE_EXHAUSTED);
|
assert.strictEqual(error.code, grpc.status.RESOURCE_EXHAUSTED);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue