@@ -1281,4 +1281,142 @@ function checkConnection(span, setupType) {
1281
1281
} ) ;
1282
1282
}
1283
1283
} ) ;
1284
+ mochaSuiteFn ( 'ignore-endpoints:' , function ( ) {
1285
+ describe ( 'when ignore-endpoints is enabled via agent configuration' , ( ) => {
1286
+ const { AgentStubControls } = require ( '../../../apps/agentStubControls' ) ;
1287
+ const customAgentControls = new AgentStubControls ( ) ;
1288
+ let controls ;
1289
+
1290
+ before ( async ( ) => {
1291
+ await customAgentControls . startAgent ( {
1292
+ ignoreEndpoints : { redis : 'get|set' }
1293
+ } ) ;
1294
+
1295
+ controls = new ProcessControls ( {
1296
+ agentControls : customAgentControls ,
1297
+ dirname : __dirname
1298
+ } ) ;
1299
+ await controls . startAndWaitForAgentConnection ( ) ;
1300
+ } ) ;
1301
+
1302
+ beforeEach ( async ( ) => {
1303
+ await customAgentControls . clearReceivedTraceData ( ) ;
1304
+ } ) ;
1305
+
1306
+ after ( async ( ) => {
1307
+ await customAgentControls . stopAgent ( ) ;
1308
+ await controls . stop ( ) ;
1309
+ } ) ;
1310
+
1311
+ it ( 'should ignore redis spans for ignored endpoints (get, set)' , async ( ) => {
1312
+ await controls
1313
+ . sendRequest ( {
1314
+ method : 'POST' ,
1315
+ path : '/values' ,
1316
+ qs : {
1317
+ key : 'discount' ,
1318
+ value : 50
1319
+ }
1320
+ } )
1321
+ . then ( async ( ) => {
1322
+ return retry ( async ( ) => {
1323
+ const spans = await customAgentControls . getSpans ( ) ;
1324
+ // 1 x http entry span
1325
+ expect ( spans . length ) . to . equal ( 1 ) ;
1326
+ spans . forEach ( span => {
1327
+ expect ( span . n ) . not . to . equal ( 'redis' ) ;
1328
+ } ) ;
1329
+ expectAtLeastOneMatching ( spans , [
1330
+ span => expect ( span . n ) . to . equal ( 'node.http.server' ) ,
1331
+ span => expect ( span . data . http . method ) . to . equal ( 'POST' )
1332
+ ] ) ;
1333
+ } ) ;
1334
+ } ) ;
1335
+ } ) ;
1336
+ } ) ;
1337
+ describe ( 'when ignore-endpoints is enabled via tracing configuration' , async ( ) => {
1338
+ globalAgent . setUpCleanUpHooks ( ) ;
1339
+ const agentControls = globalAgent . instance ;
1340
+ let controls ;
1341
+
1342
+ before ( async ( ) => {
1343
+ controls = new ProcessControls ( {
1344
+ useGlobalAgent : true ,
1345
+ dirname : __dirname ,
1346
+ env : {
1347
+ INSTANA_IGNORE_ENDPOINTS : '{"redis": ["get"]}'
1348
+ }
1349
+ } ) ;
1350
+ await controls . start ( ) ;
1351
+ } ) ;
1352
+
1353
+ beforeEach ( async ( ) => {
1354
+ await agentControls . clearReceivedTraceData ( ) ;
1355
+ } ) ;
1356
+
1357
+ after ( async ( ) => {
1358
+ await controls . stop ( ) ;
1359
+ } ) ;
1360
+
1361
+ afterEach ( async ( ) => {
1362
+ await controls . clearIpcMessages ( ) ;
1363
+ } ) ;
1364
+ it ( 'should ignore spans for ignored endpoint (get)' , async function ( ) {
1365
+ await controls
1366
+ . sendRequest ( {
1367
+ method : 'GET' ,
1368
+ path : '/values' ,
1369
+ qs : {
1370
+ key : 'discount' ,
1371
+ value : 50
1372
+ }
1373
+ } )
1374
+
1375
+ . then ( async ( ) => {
1376
+ return retry ( async ( ) => {
1377
+ const spans = await agentControls . getSpans ( ) ;
1378
+ // 1 x http entry span
1379
+ expect ( spans . length ) . to . equal ( 1 ) ;
1380
+ spans . forEach ( span => {
1381
+ expect ( span . n ) . not . to . equal ( 'redis' ) ;
1382
+ } ) ;
1383
+
1384
+ expectAtLeastOneMatching ( spans , [
1385
+ span => expect ( span . n ) . to . equal ( 'node.http.server' ) ,
1386
+ span => expect ( span . data . http . method ) . to . equal ( 'GET' )
1387
+ ] ) ;
1388
+ } ) ;
1389
+ } ) ;
1390
+ } ) ;
1391
+ it ( 'should not ignore spans for endpoints that are not in the ignore list' , async ( ) => {
1392
+ await controls
1393
+ . sendRequest ( {
1394
+ method : 'POST' ,
1395
+ path : '/values' ,
1396
+ qs : {
1397
+ key : 'discount' ,
1398
+ value : 50
1399
+ }
1400
+ } )
1401
+ . then ( async ( ) => {
1402
+ return retry ( async ( ) => {
1403
+ const spans = await agentControls . getSpans ( ) ;
1404
+ expect ( spans . length ) . to . equal ( 2 ) ;
1405
+
1406
+ const entrySpan = expectAtLeastOneMatching ( spans , [
1407
+ span => expect ( span . n ) . to . equal ( 'node.http.server' ) ,
1408
+ span => expect ( span . data . http . method ) . to . equal ( 'POST' )
1409
+ ] ) ;
1410
+
1411
+ expectExactlyOneMatching ( spans , [
1412
+ span => expect ( span . t ) . to . equal ( entrySpan . t ) ,
1413
+ span => expect ( span . p ) . to . equal ( entrySpan . s ) ,
1414
+ span => expect ( span . n ) . to . equal ( 'redis' ) ,
1415
+ span => expect ( span . data . redis . command ) . to . equal ( 'set' )
1416
+ ] ) ;
1417
+ } ) ;
1418
+ } ) ;
1419
+ } ) ;
1420
+ } ) ;
1421
+ } ) ;
1284
1422
} ) ;
0 commit comments