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