diff --git a/src/trace-span.js b/src/trace-span.js index a10bfdf63..80bdaed62 100644 --- a/src/trace-span.js +++ b/src/trace-span.js @@ -16,6 +16,8 @@ 'use strict'; +var util = require('util'); + /** * Creates a trace span object. * @constructor @@ -37,7 +39,7 @@ function TraceSpan(name, spanId, parentSpanId) { * @param {string} value The new value of the label. */ TraceSpan.prototype.setLabel = function(key, value) { - this.labels[key] = '' + value; + this.labels[key] = typeof value === 'object' ? util.inspect(value) : '' + value; }; diff --git a/test/hooks/test-trace-grpc.js b/test/hooks/test-trace-grpc.js index f91348cd3..1ae767d80 100644 --- a/test/hooks/test-trace-grpc.js +++ b/test/hooks/test-trace-grpc.js @@ -276,7 +276,7 @@ Object.keys(versions).forEach(function(version) { var trace = common.getMatchingSpan(predicate); assert(trace); assert.strictEqual(trace.labels.argument, '{"n":' + EMIT_ERROR + '}'); - assert.strictEqual(trace.labels.error, 'Error: test'); + assert(trace.labels.error.indexOf('Error: test') !== -1); }; assertTraceProperties(grpcClientPredicate); assertTraceProperties(grpcServerPredicate); @@ -293,7 +293,7 @@ Object.keys(versions).forEach(function(version) { var assertTraceProperties = function(predicate) { var trace = common.getMatchingSpan(predicate); assert(trace); - assert.strictEqual(trace.labels.error, 'Error: test'); + assert(trace.labels.error.indexOf('Error: test') !== -1); }; assertTraceProperties(grpcClientPredicate); assertTraceProperties(grpcServerPredicate); @@ -313,7 +313,7 @@ Object.keys(versions).forEach(function(version) { var assertTraceProperties = function(predicate) { var trace = common.getMatchingSpan(predicate); assert(trace); - assert.strictEqual(trace.labels.error, 'Error: test'); + assert(trace.labels.error.indexOf('Error: test') !== -1); }; assertTraceProperties(grpcClientPredicate); assertTraceProperties(grpcServerPredicate); @@ -333,7 +333,7 @@ Object.keys(versions).forEach(function(version) { var assertTraceProperties = function(predicate) { var trace = common.getMatchingSpan(predicate); assert(trace); - assert.strictEqual(trace.labels.error, 'Error: test'); + assert(trace.labels.error.indexOf('Error: test') !== -1); }; assertTraceProperties(grpcClientPredicate); assertTraceProperties(grpcServerPredicate); diff --git a/test/test-trace-span.js b/test/test-trace-span.js index c41a8816a..fa9757827 100644 --- a/test/test-trace-span.js +++ b/test/test-trace-span.js @@ -45,6 +45,12 @@ describe('TraceSpan', function() { assert.equal(span.labels.c, '5'); }); + it ('serializes object labels correctly', function() { + var span = new TraceSpan('name', 1, 0); + span.setLabel('a', [{i: 5}, {j: 6}]); + assert.equal(span.labels.a, '[ { i: 5 }, { j: 6 } ]'); + }); + it('closes', function() { var span = new TraceSpan('name', 1, 0); assert.equal(span.endTime, '');