22
33require ( '../setup/tap' )
44
5+ const { expect } = require ( 'chai' )
56const OutboundPlugin = require ( '../../src/plugins/outbound' )
67
78describe ( 'OuboundPlugin' , ( ) => {
9+ describe ( 'peer service decision' , ( ) => {
10+ let instance = null
11+ let computePeerServiceStub = null
12+ let getPeerServiceStub = null
13+ let getRemapStub = null
14+
15+ beforeEach ( ( ) => {
16+ instance = new OutboundPlugin ( )
17+ computePeerServiceStub = sinon . stub ( instance , 'tracer' )
18+ getPeerServiceStub = sinon . stub ( instance , 'getPeerService' )
19+ getRemapStub = sinon . stub ( instance , 'getPeerServiceRemap' )
20+ } )
21+
22+ afterEach ( ( ) => {
23+ computePeerServiceStub . restore ( )
24+ getPeerServiceStub . restore ( )
25+ getRemapStub . restore ( )
26+ } )
27+
28+ it ( 'should attempt to remap when we found peer service' , ( ) => {
29+ computePeerServiceStub . value ( { _computePeerService : true } )
30+ getPeerServiceStub . returns ( { foo : 'bar' } )
31+ instance . tagPeerService ( { context : ( ) => { return { _tags : { } } } , addTags : ( ) => { } } )
32+
33+ expect ( getPeerServiceStub ) . to . be . called
34+ expect ( getRemapStub ) . to . be . called
35+ } )
36+
37+ it ( 'should not attempt to remap if we found no peer service' , ( ) => {
38+ computePeerServiceStub . value ( { _computePeerService : true } )
39+ getPeerServiceStub . returns ( undefined )
40+ instance . tagPeerService ( { context : ( ) => { return { _tags : { } } } , addTags : ( ) => { } } )
41+
42+ expect ( getPeerServiceStub ) . to . be . called
43+ expect ( getRemapStub ) . to . not . be . called
44+ } )
45+
46+ it ( 'should do nothing when disabled' , ( ) => {
47+ computePeerServiceStub . value ( { _computePeerService : false } )
48+ instance . tagPeerService ( { context : ( ) => { return { _tags : { } } } , addTags : ( ) => { } } )
49+ expect ( getPeerServiceStub ) . to . not . be . called
50+ expect ( getRemapStub ) . to . not . be . called
51+ } )
52+ } )
853 describe ( 'peer.service computation' , ( ) => {
954 let instance = null
1055
@@ -16,7 +61,7 @@ describe('OuboundPlugin', () => {
1661 const res = instance . getPeerService ( {
1762 fooIsNotAPrecursor : 'bar'
1863 } )
19- expect ( res ) . to . deep . equal ( { } )
64+ expect ( res ) . to . equal ( undefined )
2065 } )
2166
2267 it ( 'should grab from remote host in datadog format' , ( ) => {
@@ -56,4 +101,58 @@ describe('OuboundPlugin', () => {
56101 } )
57102 } )
58103 } )
104+ describe ( 'remapping computation' , ( ) => {
105+ let instance = null
106+ let mappingStub = null
107+ const peerData = {
108+ 'peer.service' : 'foosvc' ,
109+ '_dd.peer.service.source' : 'out.host'
110+ }
111+
112+ beforeEach ( ( ) => {
113+ instance = new OutboundPlugin ( )
114+ } )
115+
116+ afterEach ( ( ) => {
117+ mappingStub . restore ( )
118+ } )
119+
120+ it ( 'should return peer data unchanged if there is no peer service' , ( ) => {
121+ const mappingData = instance . getPeerServiceRemap ( { 'foo' : 'bar' } )
122+ mappingStub = sinon . stub ( instance , 'tracer' )
123+ expect ( mappingData ) . to . deep . equal ( { 'foo' : 'bar' } )
124+ } )
125+
126+ it ( 'should return peer data unchanged if no mapping is available' , ( ) => {
127+ mappingStub = sinon . stub ( instance , 'tracer' ) . value ( { _peerServiceMapping : { } } )
128+ const mappingData = instance . getPeerServiceRemap ( peerData )
129+ expect ( mappingData ) . to . deep . equal ( peerData )
130+ } )
131+
132+ it ( 'should return peer data unchanged if no mapping item matches' , ( ) => {
133+ mappingStub = sinon . stub ( instance , 'tracer' ) . value ( {
134+ _peerServiceMapping : {
135+ barsvc : 'bar' ,
136+ bazsvc : 'baz'
137+ }
138+ } )
139+ const mappingData = instance . getPeerServiceRemap ( peerData )
140+ expect ( mappingData ) . to . deep . equal ( peerData )
141+ } )
142+
143+ it ( 'should remap if a mapping item matches' , ( ) => {
144+ mappingStub = sinon . stub ( instance , 'tracer' ) . value ( {
145+ _peerServiceMapping : {
146+ foosvc : 'foo' ,
147+ bazsvc : 'baz'
148+ }
149+ } )
150+ const mappingData = instance . getPeerServiceRemap ( peerData )
151+ expect ( mappingData ) . to . deep . equal ( {
152+ 'peer.service' : 'foo' ,
153+ '_dd.peer.service.source' : 'out.host' ,
154+ '_dd.peer.service.remapped_from' : 'foosvc'
155+ } )
156+ } )
157+ } )
59158} )
0 commit comments