Test both text and binary mode

This commit is contained in:
Stanley Cheung 2020-04-23 16:10:27 -07:00 committed by Stanley Cheung
parent 17fbe35265
commit 621dd26180
4 changed files with 41 additions and 16 deletions

View File

@ -92,15 +92,27 @@ pid2=$(docker run -d --network=host -p 7074:7074 grpcweb/node-interop-server)
cd test/interop && \
npm install && \
npm link grpc-web && \
protoc -I=../.. src/proto/grpc/testing/test.proto \
npm link grpc-web
# Test grpc-web-text mode
protoc -I=../.. src/proto/grpc/testing/test.proto \
src/proto/grpc/testing/empty.proto \
src/proto/grpc/testing/messages.proto \
--plugin=protoc-gen-grpc-web=$(pwd)/../../javascript/net/grpc/web/protoc-gen-grpc-web \
--js_out=import_style=commonjs:. \
--grpc-web_out=import_style=commonjs,mode=grpcwebtext:. && \
npm test && \
cd ../..
npm test
# Test grpc-web mode (binary)
protoc -I=../.. src/proto/grpc/testing/test.proto \
src/proto/grpc/testing/empty.proto \
src/proto/grpc/testing/messages.proto \
--plugin=protoc-gen-grpc-web=$(pwd)/../../javascript/net/grpc/web/protoc-gen-grpc-web \
--js_out=import_style=commonjs:. \
--grpc-web_out=import_style=commonjs,mode=grpcweb:. && \
npm test -- --mode=binary
cd ../..
# Clean up
docker rm -f $pid1

View File

@ -165,33 +165,45 @@ function doUnimplementedMethod(done) {
var testCases = {
'empty_unary': doEmptyUnary,
'large_unary': doLargeUnary,
'server_streaming': doServerStreaming,
'custom_metadata': doCustomMetadata,
'status_code_and_message': doStatusCodeAndMessage,
'unimplemented_method': doUnimplementedMethod
'empty_unary': {testFunc: doEmptyUnary},
'large_unary': {testFunc: doLargeUnary},
'server_streaming': {testFunc: doServerStreaming,
skipBinaryMode: true},
'custom_metadata': {testFunc: doCustomMetadata},
'status_code_and_message': {testFunc: doStatusCodeAndMessage},
'unimplemented_method': {testFunc: doUnimplementedMethod}
};
if (typeof window === 'undefined') {
if (typeof window === 'undefined') { // Running from Node
console.log('Running from Node...');
// Fill in XHR runtime
global.XMLHttpRequest = require("xhr2");
var parseArgs = require('minimist');
var argv = parseArgs(process.argv, {
string: ['mode']
});
if (argv.mode == 'binary') {
console.log('Testing grpc-web mode (binary)...');
} else {
console.log('Testing grpc-web-text mode...');
}
describe('grpc-web interop tests', function() {
Object.keys(testCases).forEach((testCase) => {
it('should pass '+testCase, testCases[testCase]);
if (argv.mode == 'binary' && testCases[testCase].skipBinaryMode) return;
it('should pass '+testCase, testCases[testCase].testFunc);
});
});
} else {
console.log('Running from browser...');
Object.keys(testCases).forEach((testCase) => {
var test = testCases[testCase];
var testFunc = testCases[testCase].testFunc;
var doneCalled = false;
test((err) => {
testFunc((err) => {
if (err) {
throw err;
} else {

View File

@ -4,13 +4,14 @@
"description": "gRPC-Web Interop Test Client",
"license": "Apache-2.0",
"scripts": {
"test": "mocha -b --timeout 500 client.js"
"test": "mocha -b --timeout 500 interop_client.js"
},
"dependencies": {
"google-protobuf": "~3.11.4",
"grpc-web": "~1.0.0"
},
"devDependencies": {
"minimist": "~1.2.5",
"mocha": "~7.1.1",
"webpack": "~4.43.0",
"webpack-cli": "~3.3.11",

View File

@ -1,4 +1,4 @@
module.exports = {
mode: "production",
entry: "./client.js",
entry: "./interop_client.js",
};