Skip to content

Commit

Permalink
Add support for grpc 0.14 context propagation
Browse files Browse the repository at this point in the history
  • Loading branch information
Matt Loring committed May 18, 2016
1 parent c220566 commit 9f796a5
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 31 deletions.
2 changes: 1 addition & 1 deletion lib/hooks/userspace/hook-grpc.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ var shimmer = require('shimmer');
var semver = require('semver');
var agent;

var SUPPORTED_VERSIONS = '0.13.x';
var SUPPORTED_VERSIONS = '0.13 - 0.14';

function startBatchWrap(startBatch) {
return function startBatchTrace(thing, callback) {
Expand Down
1 change: 1 addition & 0 deletions test/hooks/fixtures/grpc0.14/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = require('grpc');
8 changes: 8 additions & 0 deletions test/hooks/fixtures/grpc0.14/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"name": "grpc0.14",
"version": "1.0.0",
"main": "index.js",
"dependencies": {
"grpc": "^0.14.0"
}
}
69 changes: 39 additions & 30 deletions test/standalone/test-grpc-context.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ var common = require('../hooks/common.js');
var assert = require('assert');
var express = require('../hooks/fixtures/express4');
var http = require('http');
var grpc = require('../hooks/fixtures/grpc0.13');
var test_proto = grpc.load(__dirname + '/../fixtures/test.proto').nodetest;
var grcPort = 50051;
var debugCount = 0;
agent.logger.debug = function(error) {
Expand All @@ -32,37 +30,48 @@ agent.logger.debug = function(error) {
}
};

describe('express + grpc', function() {
it('grpc should preserve context', function(done) {
var app = express();
app.get('/', function (req, res) {
var client = new test_proto.Tester('localhost:' + grcPort,
grpc.credentials.createInsecure());
client.test({message: 'hello'}, function(err, grpcRes) {
http.get('http://www.google.com/', function(httpRes) {
httpRes.on('data', function() {});
httpRes.on('end', function() {
res.sendStatus(200);
var versions = {
grpc013: require('../hooks/fixtures/grpc0.13'),
grpc014: require('../hooks/fixtures/grpc0.14')
};

Object.keys(versions).forEach(function(version) {
var grpc = versions[version];
var test_proto = grpc.load(__dirname + '/../fixtures/test.proto').nodetest;
describe('express + grpc', function() {
it('grpc should preserve context', function(done) {
var app = express();
app.get('/', function (req, res) {
var client = new test_proto.Tester('localhost:' + grcPort,
grpc.credentials.createInsecure());
client.test({message: 'hello'}, function(err, grpcRes) {
http.get('http://www.google.com/', function(httpRes) {
httpRes.on('data', function() {});
httpRes.on('end', function() {
res.sendStatus(200);
});
});
});
});
});
var server = app.listen(common.serverPort, function() {
var grpcServer = new grpc.Server();
grpcServer.addProtoService(test_proto.Tester.service, {
test: function(call, cb) {
cb(null, {message: 'world'});
}
});
grpcServer.bind('localhost:' + grcPort,
grpc.ServerCredentials.createInsecure());
grpcServer.start();
http.get({port: common.serverPort}, function(res) {
grpcServer.forceShutdown();
server.close();
assert.equal(common.getTraces().length, 1);
assert.equal(debugCount, 1);
done();
var server = app.listen(common.serverPort, function() {
var grpcServer = new grpc.Server();
grpcServer.addProtoService(test_proto.Tester.service, {
test: function(call, cb) {
cb(null, {message: 'world'});
}
});
grpcServer.bind('localhost:' + grcPort,
grpc.ServerCredentials.createInsecure());
grpcServer.start();
http.get({port: common.serverPort}, function(res) {
grpcServer.forceShutdown();
server.close();
assert.equal(common.getTraces().length, 1);
assert.equal(debugCount, 1);
debugCount = 0;
common.cleanTraces();
done();
});
});
});
});
Expand Down

0 comments on commit 9f796a5

Please sign in to comment.