Path: blob/main/components/gitpod-protocol/src/util/tracing.spec.ts
2500 views
/**1* Copyright (c) 2021 Gitpod GmbH. All rights reserved.2* Licensed under the GNU Affero General Public License (AGPL).3* See License.AGPL.txt in the project root for license information.4*/56import { suite, test } from "@testdeck/mocha";7import * as chai from "chai";8import { TraceContext } from "./tracing";9import { MockTracer } from "opentracing";1011const expect = chai.expect;1213@suite14class TestTracing {15@test public async testTracingContext_addNestedTags() {16const tracer = new MockTracer();17const span = tracer.startSpan("testTracingContext_addNestedTags");18TraceContext.addNestedTags(19{ span },20{21rpc: {22system: "jsonrpc",23jsonrpc: {24version: "1.0",25method: "test",26parameters: ["abc", "def"],27},28},29},30);3132const mockSpan = tracer.report().spans[0];33expect(mockSpan.tags()).to.deep.equal({34"rpc.system": "jsonrpc",35"rpc.jsonrpc.version": "1.0",36"rpc.jsonrpc.method": "test",37"rpc.jsonrpc.parameters.0": "abc",38"rpc.jsonrpc.parameters.1": "def",39});40}4142@test public async testTracingContext_addNestedTags_null() {43const tracer = new MockTracer();44const span = tracer.startSpan("testTracingContext_addNestedTags_null");45TraceContext.addNestedTags(46{ span },47{48someShape: {49thisIsNull: null,50thisIsUndefined: undefined,51},52},53);5455const mockSpan = tracer.report().spans[0];56expect(mockSpan.tags()).to.deep.equal({57"someShape.thisIsNull": null,58"someShape.thisIsUndefined": undefined,59});60}6162@test public async testTracingContext_addJsonRPCParameters() {63const tracer = new MockTracer();64const span = tracer.startSpan("testTracingContext_addJsonRPCParameters");65const ctx = { span };66TraceContext.addJsonRPCParameters(ctx, {67one: "one",68two: {69name: "two",70some: "shape",71containing: "PII",72},73three: "three",74});7576const mockSpan = tracer.report().spans[0];77expect(mockSpan.tags()).to.deep.equal({78"rpc.jsonrpc.parameters.one": "one",79"rpc.jsonrpc.parameters.two.containing": "PII",80"rpc.jsonrpc.parameters.two.name": "two",81"rpc.jsonrpc.parameters.two.some": "shape",82"rpc.jsonrpc.parameters.three": "three",83"rpc.system": "jsonrpc",84});85}86}87module.exports = new TestTracing();888990