@datadog/datadog-ci 1.9.0 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/commands/dsyms/__tests__/upload.test.js +31 -3
  2. package/dist/commands/dsyms/__tests__/upload.test.js.map +1 -1
  3. package/dist/commands/dsyms/upload.d.ts +1 -0
  4. package/dist/commands/dsyms/upload.js +9 -2
  5. package/dist/commands/dsyms/upload.js.map +1 -1
  6. package/dist/commands/dsyms/utils.d.ts +1 -1
  7. package/dist/commands/dsyms/utils.js +3 -3
  8. package/dist/commands/dsyms/utils.js.map +1 -1
  9. package/dist/commands/lambda/__tests__/functions/{instrument.test.d.ts → instrument.part1.test.d.ts} +0 -0
  10. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.js +350 -0
  11. package/dist/commands/lambda/__tests__/functions/instrument.part1.test.js.map +1 -0
  12. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.d.ts +1 -0
  13. package/dist/commands/lambda/__tests__/functions/{instrument.test.js → instrument.part2.test.js} +142 -319
  14. package/dist/commands/lambda/__tests__/functions/instrument.part2.test.js.map +1 -0
  15. package/dist/commands/lambda/__tests__/functions/versionChecker.test.d.ts +1 -0
  16. package/dist/commands/lambda/__tests__/functions/versionChecker.test.js +33 -0
  17. package/dist/commands/lambda/__tests__/functions/versionChecker.test.js.map +1 -0
  18. package/dist/commands/lambda/__tests__/instrument.test.js +1 -38
  19. package/dist/commands/lambda/__tests__/instrument.test.js.map +1 -1
  20. package/dist/commands/lambda/constants.d.ts +6 -0
  21. package/dist/commands/lambda/constants.js +9 -2
  22. package/dist/commands/lambda/constants.js.map +1 -1
  23. package/dist/commands/lambda/functions/commons.d.ts +2 -2
  24. package/dist/commands/lambda/functions/instrument.js +47 -30
  25. package/dist/commands/lambda/functions/instrument.js.map +1 -1
  26. package/dist/commands/lambda/functions/versionChecker.d.ts +3 -0
  27. package/dist/commands/lambda/functions/versionChecker.js +38 -0
  28. package/dist/commands/lambda/functions/versionChecker.js.map +1 -0
  29. package/dist/commands/lambda/instrument.js +1 -1
  30. package/dist/commands/lambda/instrument.js.map +1 -1
  31. package/dist/commands/lambda/uninstrument.js +1 -1
  32. package/dist/commands/lambda/uninstrument.js.map +1 -1
  33. package/dist/commands/react-native/__tests__/upload.test.js +27 -3
  34. package/dist/commands/react-native/__tests__/upload.test.js.map +1 -1
  35. package/dist/commands/react-native/__tests__/xcode.test.d.ts +1 -0
  36. package/dist/commands/react-native/__tests__/xcode.test.js +244 -0
  37. package/dist/commands/react-native/__tests__/xcode.test.js.map +1 -0
  38. package/dist/commands/react-native/cli.js +2 -1
  39. package/dist/commands/react-native/cli.js.map +1 -1
  40. package/dist/commands/react-native/upload.d.ts +1 -0
  41. package/dist/commands/react-native/upload.js +10 -3
  42. package/dist/commands/react-native/upload.js.map +1 -1
  43. package/dist/commands/react-native/validation.js +1 -1
  44. package/dist/commands/react-native/validation.js.map +1 -1
  45. package/dist/commands/react-native/xcode.d.ts +22 -0
  46. package/dist/commands/react-native/xcode.js +245 -0
  47. package/dist/commands/react-native/xcode.js.map +1 -0
  48. package/dist/commands/sourcemaps/upload.js +1 -1
  49. package/dist/commands/sourcemaps/upload.js.map +1 -1
  50. package/dist/commands/synthetics/__tests__/api.test.js +14 -0
  51. package/dist/commands/synthetics/__tests__/api.test.js.map +1 -1
  52. package/dist/commands/synthetics/__tests__/cli.test.js +15 -25
  53. package/dist/commands/synthetics/__tests__/cli.test.js.map +1 -1
  54. package/dist/commands/synthetics/__tests__/fixtures.d.ts +2 -0
  55. package/dist/commands/synthetics/__tests__/fixtures.js +5 -1
  56. package/dist/commands/synthetics/__tests__/fixtures.js.map +1 -1
  57. package/dist/commands/synthetics/__tests__/reporters/default.test.js +2 -2
  58. package/dist/commands/synthetics/__tests__/reporters/default.test.js.map +1 -1
  59. package/dist/commands/synthetics/__tests__/reporters/junit.test.js +11 -5
  60. package/dist/commands/synthetics/__tests__/reporters/junit.test.js.map +1 -1
  61. package/dist/commands/synthetics/__tests__/run-test.test.js +15 -4
  62. package/dist/commands/synthetics/__tests__/run-test.test.js.map +1 -1
  63. package/dist/commands/synthetics/__tests__/utils.test.js +31 -0
  64. package/dist/commands/synthetics/__tests__/utils.test.js.map +1 -1
  65. package/dist/commands/synthetics/__tests__/websocket.test.js +6 -16
  66. package/dist/commands/synthetics/__tests__/websocket.test.js.map +1 -1
  67. package/dist/commands/synthetics/api.js +3 -0
  68. package/dist/commands/synthetics/api.js.map +1 -1
  69. package/dist/commands/synthetics/command.d.ts +2 -1
  70. package/dist/commands/synthetics/command.js +15 -5
  71. package/dist/commands/synthetics/command.js.map +1 -1
  72. package/dist/commands/synthetics/errors.d.ts +1 -1
  73. package/dist/commands/synthetics/errors.js +1 -0
  74. package/dist/commands/synthetics/errors.js.map +1 -1
  75. package/dist/commands/synthetics/reporters/default.js +3 -11
  76. package/dist/commands/synthetics/reporters/default.js.map +1 -1
  77. package/dist/commands/synthetics/reporters/junit.d.ts +4 -2
  78. package/dist/commands/synthetics/reporters/junit.js +9 -3
  79. package/dist/commands/synthetics/reporters/junit.js.map +1 -1
  80. package/dist/commands/synthetics/run-test.js +6 -1
  81. package/dist/commands/synthetics/run-test.js.map +1 -1
  82. package/dist/commands/synthetics/utils.d.ts +3 -1
  83. package/dist/commands/synthetics/utils.js +26 -3
  84. package/dist/commands/synthetics/utils.js.map +1 -1
  85. package/dist/commands/tag/tag.js +2 -0
  86. package/dist/commands/tag/tag.js.map +1 -1
  87. package/dist/helpers/__tests__/utils.test.js +18 -13
  88. package/dist/helpers/__tests__/utils.test.js.map +1 -1
  89. package/dist/helpers/base-intake-url.d.ts +1 -1
  90. package/dist/helpers/base-intake-url.js +3 -3
  91. package/dist/helpers/base-intake-url.js.map +1 -1
  92. package/dist/helpers/metrics.d.ts +1 -0
  93. package/dist/helpers/metrics.js +1 -0
  94. package/dist/helpers/metrics.js.map +1 -1
  95. package/dist/helpers/utils.d.ts +7 -0
  96. package/dist/helpers/utils.js +54 -4
  97. package/dist/helpers/utils.js.map +1 -1
  98. package/package.json +3 -3
  99. package/dist/commands/lambda/__tests__/functions/instrument.test.js.map +0 -1
@@ -1,23 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -31,7 +12,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
31
12
  jest.mock('../../loggroup');
32
13
  const constants_1 = require("../../constants");
33
14
  const instrument_1 = require("../../functions/instrument");
34
- const loggroup = __importStar(require("../../loggroup"));
35
15
  const fixtures_1 = require("../fixtures");
36
16
  describe('instrument', () => {
37
17
  describe('calculateUpdateRequest', () => {
@@ -443,318 +423,161 @@ describe('instrument', () => {
443
423
  }
444
424
  expect(error === null || error === void 0 ? void 0 : error.message).toBe('`apiKeySecretArn` is not supported for Node runtimes when using Synchronous Metrics. Use either `apiKey` or `apiKmsKey`.');
445
425
  }));
446
- });
447
- describe('getInstrumentedFunctionConfig', () => {
448
- const OLD_ENV = process.env;
449
- beforeEach(() => {
450
- jest.resetModules();
451
- process.env = {};
452
- });
453
- afterAll(() => {
454
- process.env = OLD_ENV;
455
- });
456
- test('throws an error when it encounters an unsupported runtime', () => __awaiter(void 0, void 0, void 0, function* () {
457
- const lambda = fixtures_1.makeMockLambda({
458
- 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument': {
459
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
460
- Runtime: 'go',
461
- },
462
- });
463
- const cloudWatch = fixtures_1.makeMockCloudWatchLogs({});
426
+ describe('test universal instrumentation workflow for Java and .Net', () => {
427
+ const region = 'us-east-1';
428
+ const config = {
429
+ FunctionArn: 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
430
+ Handler: 'index.handler',
431
+ Layers: [],
432
+ Runtime: 'runtime',
433
+ };
464
434
  const settings = {
465
435
  flushMetricsToLogs: false,
466
- layerVersion: 23,
436
+ layerAWSAccount: fixtures_1.mockAwsAccount,
437
+ layerVersion: 13,
467
438
  mergeXrayTraces: false,
468
439
  tracingEnabled: false,
469
440
  };
470
- const config = (yield lambda
471
- .getFunction({ FunctionName: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument' })
472
- .promise()).Configuration;
473
- yield expect(instrument_1.getInstrumentedFunctionConfig(lambda, cloudWatch, config, 'us-east-1', settings)).rejects.toThrow();
474
- }));
475
- test('replaces the layer arn when the version has changed', () => __awaiter(void 0, void 0, void 0, function* () {
476
- var _a;
477
- const lambda = fixtures_1.makeMockLambda({
478
- 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument': {
479
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
441
+ const dotnetRuntime = 'dotnet6';
442
+ const javaRuntime = 'java11';
443
+ describe(`test for runtime ${dotnetRuntime}`, () => {
444
+ const dotNetConfig = Object.assign(Object.assign({}, config), { Runtime: dotnetRuntime });
445
+ const dotNetConfigOnArm86 = Object.assign(Object.assign({}, config), { Runtime: dotnetRuntime, Architectures: ['arm64'] });
446
+ test('should throw error when the extension version and trace version are not compatible', () => __awaiter(void 0, void 0, void 0, function* () {
447
+ process.env[constants_1.CI_KMS_API_KEY_ENV_VAR] = '5678';
448
+ const badSettings = Object.assign(Object.assign({}, settings), { extensionVersion: 24, layerVersion: 3 });
449
+ let error;
450
+ try {
451
+ yield instrument_1.calculateUpdateRequest(dotNetConfig, badSettings, region, dotnetRuntime);
452
+ }
453
+ catch (e) {
454
+ if (e instanceof Error) {
455
+ error = e;
456
+ }
457
+ }
458
+ expect(error === null || error === void 0 ? void 0 : error.message).toBe(`For the ${dotnetRuntime} runtime, the dd-trace version 3 is not compatible with the dd-extension version 24`);
459
+ }));
460
+ test('should throw error if it is running on arm64 with an old dd-extension version', () => __awaiter(void 0, void 0, void 0, function* () {
461
+ process.env[constants_1.CI_KMS_API_KEY_ENV_VAR] = '5678';
462
+ const curSettings = Object.assign(Object.assign({}, settings), { extensionVersion: 23 });
463
+ let error;
464
+ try {
465
+ yield instrument_1.calculateUpdateRequest(dotNetConfigOnArm86, curSettings, region, dotnetRuntime);
466
+ }
467
+ catch (e) {
468
+ if (e instanceof Error) {
469
+ error = e;
470
+ }
471
+ }
472
+ expect(error === null || error === void 0 ? void 0 : error.message).toBe('Instrumenting arm64 architecture is not supported for the given dd-extension version. Please choose the latest dd-extension version or use x86_64 architecture.');
473
+ }));
474
+ const baseVariables = {
475
+ DD_KMS_API_KEY: '5678',
476
+ DD_MERGE_XRAY_TRACES: 'false',
477
+ DD_SITE: 'datadoghq.com',
478
+ DD_TRACE_ENABLED: 'false',
479
+ };
480
+ const compatibleTracerAndExtension = {
481
+ Environment: {
482
+ Variables: Object.assign(Object.assign({}, baseVariables), { AWS_LAMBDA_EXEC_WRAPPER: '/opt/datadog_wrapper' }),
483
+ },
484
+ FunctionName: 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
480
485
  Layers: [
481
- { Arn: 'arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node12-x:22' },
482
- { Arn: 'arn:aws:lambda:us-east-1:464622532012:layer:AnotherLayer:10' },
486
+ 'arn:aws:lambda:us-east-1:123456789012:layer:Datadog-Extension:25',
487
+ 'arn:aws:lambda:us-east-1:123456789012:layer:dd-trace-dotnet:4',
483
488
  ],
484
- Runtime: 'nodejs12.x',
485
- },
486
- });
487
- const cloudWatch = fixtures_1.makeMockCloudWatchLogs({});
488
- const settings = {
489
- flushMetricsToLogs: false,
490
- layerVersion: 23,
491
- mergeXrayTraces: false,
492
- tracingEnabled: false,
493
- };
494
- const config = (yield lambda
495
- .getFunction({ FunctionName: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument' })
496
- .promise()).Configuration;
497
- const result = yield instrument_1.getInstrumentedFunctionConfig(lambda, cloudWatch, config, 'us-east-1', settings);
498
- expect((_a = result.updateRequest) === null || _a === void 0 ? void 0 : _a.Layers).toMatchInlineSnapshot(`
499
- Array [
500
- "arn:aws:lambda:us-east-1:464622532012:layer:AnotherLayer:10",
501
- "arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node12-x:23",
502
- ]
503
- `);
504
- }));
505
- test('returns configurations without updateRequest when no changes need to be made', () => __awaiter(void 0, void 0, void 0, function* () {
506
- const lambda = fixtures_1.makeMockLambda({
507
- 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument': {
489
+ };
490
+ const oldExtensionVersion = {
508
491
  Environment: {
509
- Variables: {
510
- [constants_1.FLUSH_TO_LOG_ENV_VAR]: 'false',
511
- [constants_1.LAMBDA_HANDLER_ENV_VAR]: 'index.handler',
512
- [constants_1.LOG_LEVEL_ENV_VAR]: 'debug',
513
- [constants_1.MERGE_XRAY_TRACES_ENV_VAR]: 'false',
514
- [constants_1.SITE_ENV_VAR]: 'datadoghq.com',
515
- [constants_1.TRACE_ENABLED_ENV_VAR]: 'false',
516
- },
492
+ Variables: Object.assign(Object.assign({}, baseVariables), { CORECLR_ENABLE_PROFILING: '1', CORECLR_PROFILER: '{846F5F1C-F9AE-4B07-969E-05C26BC060D8}', CORECLR_PROFILER_PATH: '/opt/datadog/Datadog.Trace.ClrProfiler.Native.so', DD_DOTNET_TRACER_HOME: '/opt/datadog' }),
517
493
  },
518
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
519
- Handler: '/opt/nodejs/node_modules/datadog-lambda-js/handler.handler',
520
- Layers: [{ Arn: 'arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node12-x:22' }],
521
- Runtime: 'nodejs12.x',
522
- },
523
- });
524
- const cloudWatch = fixtures_1.makeMockCloudWatchLogs({});
525
- const settings = {
526
- flushMetricsToLogs: false,
527
- layerVersion: 22,
528
- logLevel: 'debug',
529
- mergeXrayTraces: false,
530
- tracingEnabled: false,
531
- };
532
- const config = (yield lambda
533
- .getFunction({ FunctionName: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument' })
534
- .promise()).Configuration;
535
- expect((yield instrument_1.getInstrumentedFunctionConfig(lambda, cloudWatch, config, 'us-east-1', settings))
536
- .updateRequest).toBeUndefined();
537
- }));
538
- test('uses the GovCloud lambda layer when a GovCloud region is detected', () => __awaiter(void 0, void 0, void 0, function* () {
539
- var _b;
540
- const lambda = fixtures_1.makeMockLambda({
541
- 'arn:aws-us-gov:lambda:us-gov-east-1:000000000000:function:autoinstrument': {
542
- FunctionArn: 'arn:aws-us-gov:lambda:us-gov-east-1:000000000000:function:autoinstrument',
543
- Runtime: 'nodejs12.x',
544
- },
545
- });
546
- const cloudWatch = fixtures_1.makeMockCloudWatchLogs({});
547
- const settings = {
548
- flushMetricsToLogs: false,
549
- layerVersion: 30,
550
- mergeXrayTraces: false,
551
- tracingEnabled: false,
552
- };
553
- const config = (yield lambda
554
- .getFunction({ FunctionName: 'arn:aws-us-gov:lambda:us-gov-east-1:000000000000:function:autoinstrument' })
555
- .promise()).Configuration;
556
- const result = yield instrument_1.getInstrumentedFunctionConfig(lambda, cloudWatch, config, 'us-gov-east-1', settings);
557
- expect((_b = result.updateRequest) === null || _b === void 0 ? void 0 : _b.Layers).toMatchInlineSnapshot(`
558
- Array [
559
- "arn:aws-us-gov:lambda:us-gov-east-1:002406178527:layer:Datadog-Node12-x:30",
560
- ]
561
- `);
562
- }));
563
- test('requests log group configuration when forwarderARN is set', () => __awaiter(void 0, void 0, void 0, function* () {
564
- ;
565
- loggroup.calculateLogGroupUpdateRequest.mockImplementation(() => ({ logGroupName: '/aws/lambda/group' }));
566
- const lambda = fixtures_1.makeMockLambda({
567
- 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument': {
568
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
569
- Handler: 'index.handler',
570
- Runtime: 'nodejs12.x',
571
- },
572
- });
573
- const cloudWatch = fixtures_1.makeMockCloudWatchLogs({});
574
- const settings = {
575
- flushMetricsToLogs: false,
576
- forwarderARN: 'my-forwarder',
577
- layerVersion: 22,
578
- mergeXrayTraces: false,
579
- tracingEnabled: false,
580
- };
581
- const config = (yield lambda
582
- .getFunction({ FunctionName: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument' })
583
- .promise()).Configuration;
584
- const result = yield instrument_1.getInstrumentedFunctionConfig(lambda, cloudWatch, config, 'us-east-1', settings);
585
- expect(result).toBeDefined();
586
- expect(result.logGroupConfiguration).toMatchInlineSnapshot(`
587
- Object {
588
- "logGroupName": "/aws/lambda/group",
589
- }
590
- `);
591
- }));
592
- });
593
- describe('getInstrumentedFunctionConfigs', () => {
594
- const OLD_ENV = process.env;
595
- beforeEach(() => {
596
- jest.resetModules();
597
- process.env = {};
598
- });
599
- afterAll(() => {
600
- process.env = OLD_ENV;
601
- });
602
- test('returns the update request for each function', () => __awaiter(void 0, void 0, void 0, function* () {
603
- const lambda = fixtures_1.makeMockLambda({
604
- 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument': {
605
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
606
- Handler: 'index.handler',
607
- Runtime: 'nodejs12.x',
608
- },
494
+ FunctionName: 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
495
+ Layers: [
496
+ 'arn:aws:lambda:us-east-1:123456789012:layer:Datadog-Extension:23',
497
+ 'arn:aws:lambda:us-east-1:123456789012:layer:dd-trace-dotnet:2',
498
+ ],
499
+ };
500
+ const traceUndefined = {
501
+ Environment: {
502
+ Variables: Object.assign(Object.assign({}, baseVariables), { CORECLR_ENABLE_PROFILING: '1', CORECLR_PROFILER: '{846F5F1C-F9AE-4B07-969E-05C26BC060D8}', CORECLR_PROFILER_PATH: '/opt/datadog/Datadog.Trace.ClrProfiler.Native.so', DD_DOTNET_TRACER_HOME: '/opt/datadog' }),
503
+ },
504
+ FunctionName: 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
505
+ Layers: ['arn:aws:lambda:us-east-1:123456789012:layer:Datadog-Extension:15'],
506
+ };
507
+ test.each `
508
+ extensionVersion | traceVersion | outputResult
509
+ ${25} | ${4} | ${compatibleTracerAndExtension}
510
+ ${23} | ${2} | ${oldExtensionVersion}
511
+ ${15} | ${undefined} | ${traceUndefined}
512
+ `('should the output match the expected if extensionVersion=$extensionVersion and traceVersion=$traceVersion', ({ extensionVersion, traceVersion, outputResult }) => __awaiter(void 0, void 0, void 0, function* () {
513
+ const curSettings = Object.assign(Object.assign({}, settings), { extensionVersion, layerVersion: traceVersion });
514
+ process.env[constants_1.CI_KMS_API_KEY_ENV_VAR] = '5678';
515
+ const updateRequest = yield instrument_1.calculateUpdateRequest(dotNetConfig, curSettings, region, dotnetRuntime);
516
+ expect(updateRequest).toEqual(outputResult);
517
+ }));
609
518
  });
610
- const cloudWatch = fixtures_1.makeMockCloudWatchLogs({});
611
- const settings = {
612
- environment: 'staging',
613
- flushMetricsToLogs: false,
614
- layerVersion: 22,
615
- logLevel: 'debug',
616
- mergeXrayTraces: false,
617
- service: 'middletier',
618
- tracingEnabled: false,
619
- version: '0.2',
620
- };
621
- const result = yield instrument_1.getInstrumentedFunctionConfigs(lambda, cloudWatch, 'us-east-1', ['arn:aws:lambda:us-east-1:000000000000:function:autoinstrument'], settings);
622
- expect(result.length).toEqual(1);
623
- expect(result[0].updateRequest).toMatchInlineSnapshot(`
624
- Object {
625
- "Environment": Object {
626
- "Variables": Object {
627
- "DD_ENV": "staging",
628
- "DD_FLUSH_TO_LOG": "false",
629
- "DD_LAMBDA_HANDLER": "index.handler",
630
- "DD_LOG_LEVEL": "debug",
631
- "DD_MERGE_XRAY_TRACES": "false",
632
- "DD_SERVICE": "middletier",
633
- "DD_SITE": "datadoghq.com",
634
- "DD_TRACE_ENABLED": "false",
635
- "DD_VERSION": "0.2",
636
- },
637
- },
638
- "FunctionName": "arn:aws:lambda:us-east-1:000000000000:function:autoinstrument",
639
- "Handler": "/opt/nodejs/node_modules/datadog-lambda-js/handler.handler",
640
- "Layers": Array [
641
- "arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node12-x:22",
642
- ],
643
- }
644
- `);
645
- }));
646
- test('returns results for multiple functions', () => __awaiter(void 0, void 0, void 0, function* () {
647
- const lambda = fixtures_1.makeMockLambda({
648
- 'arn:aws:lambda:us-east-1:000000000000:function:another-func': {
649
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:another-func',
650
- Runtime: 'nodejs12.x',
651
- },
652
- 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument': {
519
+ describe(`test for runtime ${javaRuntime}`, () => {
520
+ const javaConfig = Object.assign(Object.assign({}, config), { Runtime: javaRuntime });
521
+ test('should throw error when the extension version and trace version are not compatible', () => __awaiter(void 0, void 0, void 0, function* () {
522
+ process.env[constants_1.CI_KMS_API_KEY_ENV_VAR] = '5678';
523
+ const badSettings = Object.assign(Object.assign({}, settings), { extensionVersion: 24, layerVersion: 4 });
524
+ let error;
525
+ try {
526
+ yield instrument_1.calculateUpdateRequest(javaConfig, badSettings, region, javaRuntime);
527
+ }
528
+ catch (e) {
529
+ if (e instanceof Error) {
530
+ error = e;
531
+ }
532
+ }
533
+ expect(error === null || error === void 0 ? void 0 : error.message).toBe(`For the ${javaRuntime} runtime, the dd-trace version 4 is not compatible with the dd-extension version 24`);
534
+ }));
535
+ const baseVariables = {
536
+ DD_KMS_API_KEY: '5678',
537
+ DD_MERGE_XRAY_TRACES: 'false',
538
+ DD_SITE: 'datadoghq.com',
539
+ DD_TRACE_ENABLED: 'false',
540
+ };
541
+ const compatibleTracerAndExtension = {
653
542
  Environment: {
654
- Variables: {
655
- [constants_1.FLUSH_TO_LOG_ENV_VAR]: 'false',
656
- [constants_1.LAMBDA_HANDLER_ENV_VAR]: 'index.handler',
657
- [constants_1.LOG_LEVEL_ENV_VAR]: 'debug',
658
- [constants_1.MERGE_XRAY_TRACES_ENV_VAR]: 'false',
659
- [constants_1.SITE_ENV_VAR]: 'datadoghq.com',
660
- [constants_1.TRACE_ENABLED_ENV_VAR]: 'false',
661
- [constants_1.SERVICE_ENV_VAR]: 'middletier',
662
- [constants_1.ENVIRONMENT_ENV_VAR]: 'staging',
663
- [constants_1.VERSION_ENV_VAR]: '0.2',
664
- },
543
+ Variables: Object.assign(Object.assign({}, baseVariables), { AWS_LAMBDA_EXEC_WRAPPER: '/opt/datadog_wrapper' }),
665
544
  },
666
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
667
- Runtime: 'nodejs12.x',
668
- },
545
+ FunctionName: 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
546
+ Layers: [
547
+ 'arn:aws:lambda:us-east-1:123456789012:layer:Datadog-Extension:25',
548
+ 'arn:aws:lambda:us-east-1:123456789012:layer:dd-trace-java:5',
549
+ ],
550
+ };
551
+ const oldExtensionVersion = {
552
+ Environment: {
553
+ Variables: Object.assign({}, baseVariables),
554
+ },
555
+ FunctionName: 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
556
+ Layers: [
557
+ 'arn:aws:lambda:us-east-1:123456789012:layer:Datadog-Extension:23',
558
+ 'arn:aws:lambda:us-east-1:123456789012:layer:dd-trace-java:2',
559
+ ],
560
+ };
561
+ const traceUndefined = {
562
+ Environment: {
563
+ Variables: Object.assign({}, baseVariables),
564
+ },
565
+ FunctionName: 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
566
+ Layers: ['arn:aws:lambda:us-east-1:123456789012:layer:Datadog-Extension:15'],
567
+ };
568
+ test.each `
569
+ extensionVersion | traceVersion | outputResult
570
+ ${25} | ${5} | ${compatibleTracerAndExtension}
571
+ ${23} | ${2} | ${oldExtensionVersion}
572
+ ${15} | ${undefined} | ${traceUndefined}
573
+ `('should the output match the expected if extensionVersion=$extensionVersion and traceVersion=$traceVersion', ({ extensionVersion, traceVersion, outputResult }) => __awaiter(void 0, void 0, void 0, function* () {
574
+ const curSettings = Object.assign(Object.assign({}, settings), { extensionVersion, layerVersion: traceVersion });
575
+ process.env[constants_1.CI_KMS_API_KEY_ENV_VAR] = '5678';
576
+ const updateRequest = yield instrument_1.calculateUpdateRequest(javaConfig, curSettings, region, javaRuntime);
577
+ expect(updateRequest).toEqual(outputResult);
578
+ }));
669
579
  });
670
- const cloudWatch = fixtures_1.makeMockCloudWatchLogs({});
671
- const settings = {
672
- environment: 'staging',
673
- flushMetricsToLogs: false,
674
- layerVersion: 23,
675
- mergeXrayTraces: false,
676
- service: 'middletier',
677
- tracingEnabled: false,
678
- version: '0.2',
679
- };
680
- const result = yield instrument_1.getInstrumentedFunctionConfigs(lambda, cloudWatch, 'us-east-1', [
681
- 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument',
682
- 'arn:aws:lambda:us-east-1:000000000000:function:another-func',
683
- ], settings);
684
- expect(result.length).toEqual(2);
685
- }));
686
- });
687
- describe('getInstrumentedFunctionConfigsFromRegEx', () => {
688
- const OLD_ENV = process.env;
689
- beforeEach(() => {
690
- jest.resetModules();
691
- process.env = {};
692
- });
693
- afterAll(() => {
694
- process.env = OLD_ENV;
695
580
  });
696
- test('returns the update request for each function that matches the pattern', () => __awaiter(void 0, void 0, void 0, function* () {
697
- const lambda = fixtures_1.makeMockLambda({
698
- 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument-scooby': {
699
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument-scooby',
700
- FunctionName: 'autoinstrument-scooby',
701
- Handler: 'index.handler',
702
- Runtime: 'nodejs12.x',
703
- },
704
- 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument-scr.': {
705
- FunctionArn: 'arn:aws:lambda:us-east-1:000000000000:function:autoinstrument-scr.',
706
- FunctionName: 'autoinstrument-scr.',
707
- Handler: 'index.handler',
708
- Runtime: 'nodejs12.x',
709
- },
710
- });
711
- const cloudWatch = fixtures_1.makeMockCloudWatchLogs({});
712
- const settings = {
713
- flushMetricsToLogs: false,
714
- layerVersion: 22,
715
- logLevel: 'debug',
716
- mergeXrayTraces: false,
717
- tracingEnabled: false,
718
- };
719
- const result = yield instrument_1.getInstrumentedFunctionConfigsFromRegEx(lambda, cloudWatch, 'us-east-1', 'autoinstrument-scr.', settings);
720
- expect(result.length).toEqual(1);
721
- expect(result[0].updateRequest).toMatchInlineSnapshot(`
722
- Object {
723
- "Environment": Object {
724
- "Variables": Object {
725
- "DD_FLUSH_TO_LOG": "false",
726
- "DD_LAMBDA_HANDLER": "index.handler",
727
- "DD_LOG_LEVEL": "debug",
728
- "DD_MERGE_XRAY_TRACES": "false",
729
- "DD_SITE": "datadoghq.com",
730
- "DD_TRACE_ENABLED": "false",
731
- },
732
- },
733
- "FunctionName": "arn:aws:lambda:us-east-1:000000000000:function:autoinstrument-scr.",
734
- "Handler": "/opt/nodejs/node_modules/datadog-lambda-js/handler.handler",
735
- "Layers": Array [
736
- "arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node12-x:22",
737
- ],
738
- }
739
- `);
740
- }));
741
- test('fails when retry count is exceeded', () => __awaiter(void 0, void 0, void 0, function* () {
742
- const makeMockLambdaListFunctionsError = () => ({
743
- listFunctions: jest.fn().mockImplementation((args) => ({
744
- promise: () => Promise.reject('ListFunctionsError'),
745
- })),
746
- });
747
- const lambda = makeMockLambdaListFunctionsError();
748
- const cloudWatch = fixtures_1.makeMockCloudWatchLogs({});
749
- const settings = {
750
- flushMetricsToLogs: false,
751
- layerVersion: 22,
752
- logLevel: 'debug',
753
- mergeXrayTraces: false,
754
- tracingEnabled: false,
755
- };
756
- yield expect(instrument_1.getInstrumentedFunctionConfigsFromRegEx(lambda, cloudWatch, 'us-east-1', 'fake-pattern', settings)).rejects.toStrictEqual(new Error('Max retry count exceeded. ListFunctionsError'));
757
- }));
758
581
  });
759
582
  });
760
- //# sourceMappingURL=instrument.test.js.map
583
+ //# sourceMappingURL=instrument.part2.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrument.part2.test.js","sourceRoot":"","sources":["../../../../../src/commands/lambda/__tests__/functions/instrument.part2.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;AAE3B,+CAAyG;AACzG,2DAAiE;AAGjE,0CAA0C;AAE1C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAA;QAC3B,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,YAAY,EAAE,CAAA;YACnB,OAAO,CAAC,GAAG,GAAG,EAAE,CAAA;QAClB,CAAC,CAAC,CAAA;QACF,QAAQ,CAAC,GAAG,EAAE;YACZ,OAAO,CAAC,GAAG,GAAG,OAAO,CAAA;QACvB,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,8DAA8D,EAAE,GAAS,EAAE;YAC9E,MAAM,OAAO,GAAG,YAAY,CAAA;YAC5B,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,mEAAmE;gBAChF,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,OAAO;aACjB,CAAA;YACD,MAAM,QAAQ,GAAG;gBACf,kBAAkB,EAAE,KAAK;gBACzB,eAAe,EAAE,yBAAc;gBAC/B,YAAY,EAAE,CAAC;gBACf,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,KAAK;aACtB,CAAA;YACD,MAAM,MAAM,GAAG,WAAW,CAAA;YAE1B,MAAM,aAAa,GAAG,MAAM,mCAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACrF,MAAM,CAAC,aAAa,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;OAiB3C,CAAC,CAAA;QACJ,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,kFAAkF,EAAE,GAAS,EAAE;YAClG,MAAM,OAAO,GAAG,WAAW,CAAA;YAC3B,MAAM,MAAM,GAAG;gBACb,aAAa,EAAE,CAAC,OAAO,CAAC;gBACxB,WAAW,EAAE,mEAAmE;gBAChF,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,OAAO;aACjB,CAAA;YACD,MAAM,QAAQ,GAAG;gBACf,kBAAkB,EAAE,KAAK;gBACzB,eAAe,EAAE,yBAAc;gBAC/B,YAAY,EAAE,EAAE;gBAChB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,KAAK;aACtB,CAAA;YACD,MAAM,MAAM,GAAG,WAAW,CAAA;YAE1B,MAAM,aAAa,GAAG,MAAM,mCAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACrF,MAAM,CAAC,aAAa,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;OAiB3C,CAAC,CAAA;QACJ,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,oFAAoF,EAAE,GAAS,EAAE;YACpG,OAAO,CAAC,GAAG,CAAC,8BAAkB,CAAC,GAAG,MAAM,CAAA;YACxC,MAAM,OAAO,GAAG,YAAY,CAAA;YAC5B,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,mEAAmE;gBAChF,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,OAAO;aACjB,CAAA;YACD,MAAM,QAAQ,GAAG;gBACf,gBAAgB,EAAE,CAAC;gBACnB,kBAAkB,EAAE,KAAK;gBACzB,eAAe,EAAE,yBAAc;gBAC/B,YAAY,EAAE,CAAC;gBACf,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,KAAK;aACtB,CAAA;YACD,MAAM,MAAM,GAAG,WAAW,CAAA;YAE1B,MAAM,aAAa,GAAG,MAAM,mCAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACrF,MAAM,CAAC,aAAa,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;OAkB3C,CAAC,CAAA;QACJ,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,+FAA+F,EAAE,GAAS,EAAE;YAC/G,OAAO,CAAC,GAAG,CAAC,yCAA6B,CAAC,GAAG,0BAA0B,CAAA;YACvE,MAAM,OAAO,GAAG,WAAW,CAAA;YAC3B,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,mEAAmE;gBAChF,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,OAAO;aACjB,CAAA;YACD,MAAM,QAAQ,GAAG;gBACf,gBAAgB,EAAE,EAAE;gBACpB,kBAAkB,EAAE,KAAK;gBACzB,eAAe,EAAE,yBAAc;gBAC/B,YAAY,EAAE,EAAE;gBAChB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,KAAK;aACtB,CAAA;YACD,MAAM,MAAM,GAAG,WAAW,CAAA;YAC1B,MAAM,aAAa,GAAG,MAAM,mCAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACrF,MAAM,CAAC,aAAa,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;OAkB3C,CAAC,CAAA;QACJ,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,wFAAwF,EAAE,GAAS,EAAE;YACxG,OAAO,CAAC,GAAG,CAAC,kCAAsB,CAAC,GAAG,MAAM,CAAA;YAC5C,MAAM,OAAO,GAAG,WAAW,CAAA;YAC3B,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,mEAAmE;gBAChF,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,OAAO;aACjB,CAAA;YACD,MAAM,QAAQ,GAAG;gBACf,gBAAgB,EAAE,CAAC;gBACnB,kBAAkB,EAAE,KAAK;gBACzB,eAAe,EAAE,yBAAc;gBAC/B,YAAY,EAAE,CAAC;gBACf,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,KAAK;aACtB,CAAA;YACD,MAAM,MAAM,GAAG,WAAW,CAAA;YAE1B,MAAM,aAAa,GAAG,MAAM,mCAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACrF,MAAM,CAAC,aAAa,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;OAkB3C,CAAC,CAAA;QACJ,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,2DAA2D,EAAE,GAAS,EAAE;YAC3E,OAAO,CAAC,GAAG,GAAG;gBACZ,CAAC,8BAAkB,CAAC,EAAE,MAAM;gBAC5B,CAAC,yCAA6B,CAAC,EAAE,MAAM;gBACvC,CAAC,kCAAsB,CAAC,EAAE,oBAAoB;aAC/C,CAAA;YAED,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,mEAAmE;gBAChF,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,EAAE;aACX,CAAA;YACD,MAAM,OAAO,GAAG,WAAW,CAAA;YAC3B,MAAM,MAAM,GAAG,WAAW,CAAA;YAC1B,MAAM,aAAa,GAAG,MAAM,mCAAsB,CAAC,MAAM,EAAE,EAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACtF,MAAM,CAAC,aAAa,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;OAY3C,CAAC,CAAA;QACJ,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,2DAA2D,EAAE,GAAS,EAAE;YAC3E,OAAO,CAAC,GAAG,CAAC,8BAAkB,CAAC,GAAG,MAAM,CAAA;YAExC,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,mEAAmE;gBAChF,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,EAAE;aACX,CAAA;YACD,MAAM,OAAO,GAAG,WAAW,CAAA;YAC3B,MAAM,MAAM,GAAG,WAAW,CAAA;YAC1B,MAAM,QAAQ,GAA4B;gBACxC,gBAAgB,EAAE,EAAE;gBACpB,kBAAkB,EAAE,IAAI;gBACxB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,KAAK;aACtB,CAAA;YACD,MAAM,aAAa,GAAG,MAAM,mCAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACrF,MAAM,CAAC,aAAa,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;OAiB3C,CAAC,CAAA;QACJ,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,sFAAsF,EAAE,GAAS,EAAE;YACtG,MAAM,OAAO,GAAG,WAAW,CAAA;YAC3B,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,mEAAmE;gBAChF,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,OAAO;aACjB,CAAA;YACD,MAAM,QAAQ,GAAG;gBACf,kBAAkB,EAAE,KAAK;gBACzB,eAAe,EAAE,yBAAc;gBAC/B,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,KAAK;aACtB,CAAA;YACD,MAAM,MAAM,GAAG,WAAW,CAAA;YAE1B,MAAM,aAAa,GAAG,MAAM,mCAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACrF,MAAM,CAAC,aAAa,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;OAc3C,CAAC,CAAA;QACJ,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,0EAA0E,EAAE,GAAS,EAAE;YAC1F,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,cAAc,CAAA;YACzC,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,mEAAmE;gBAChF,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,EAAE;aACX,CAAA;YACD,MAAM,QAAQ,GAAG;gBACf,kBAAkB,EAAE,KAAK;gBACzB,eAAe,EAAE,yBAAc;gBAC/B,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,KAAK;aACtB,CAAA;YACD,MAAM,MAAM,GAAG,WAAW,CAAA;YAC1B,MAAM,OAAO,GAAG,WAAW,CAAA;YAE3B,MAAM,aAAa,GAAG,MAAM,mCAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACrF,MAAM,CAAC,aAAa,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;OAc3C,CAAC,CAAA;QACJ,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,2DAA2D,EAAE,GAAS,EAAE;YAC3E,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,cAAc,CAAA;YACzC,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,mEAAmE;gBAChF,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,EAAE;aACX,CAAA;YACD,MAAM,QAAQ,GAAG;gBACf,kBAAkB,EAAE,KAAK;gBACzB,WAAW,EAAE,KAAK;gBAClB,eAAe,EAAE,yBAAc;gBAC/B,YAAY,EAAE,CAAC;gBACf,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,KAAK;aACtB,CAAA;YACD,MAAM,MAAM,GAAG,WAAW,CAAA;YAC1B,MAAM,OAAO,GAAG,WAAW,CAAA;YAC3B,IAAI,KAAK,CAAA;YACT,IAAI;gBACF,MAAM,mCAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;aAChE;YAAC,OAAO,CAAC,EAAE;gBACV,IAAI,CAAC,YAAY,KAAK,EAAE;oBACtB,KAAK,GAAG,CAAC,CAAA;iBACV;aACF;YACD,MAAM,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAC,IAAI,CACzB,+HAA+H,CAChI,CAAA;QACH,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,qIAAqI,EAAE,GAAS,EAAE;YACrJ,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,mEAAmE;gBAChF,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,EAAE;aACX,CAAA;YACD,MAAM,QAAQ,GAAG;gBACf,gBAAgB,EAAE,CAAC;gBACnB,kBAAkB,EAAE,KAAK;gBACzB,eAAe,EAAE,yBAAc;gBAC/B,YAAY,EAAE,CAAC;gBACf,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,KAAK;aACtB,CAAA;YACD,MAAM,MAAM,GAAG,WAAW,CAAA;YAC1B,MAAM,OAAO,GAAG,WAAW,CAAA;YAC3B,IAAI,KAAK,CAAA;YACT,IAAI;gBACF,MAAM,mCAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;aAChE;YAAC,OAAO,CAAC,EAAE;gBACV,IAAI,CAAC,YAAY,KAAK,EAAE;oBACtB,KAAK,GAAG,CAAC,CAAA;iBACV;aACF;YACD,MAAM,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAC,IAAI,CACzB,oHAAoH,CACrH,CAAA;QACH,CAAC,CAAA,CAAC,CAAA;QAEF,IAAI,CAAC,oGAAoG,EAAE,GAAS,EAAE;YACpH,OAAO,CAAC,GAAG,CAAC,yCAA6B,CAAC,GAAG,0BAA0B,CAAA;YACvE,MAAM,OAAO,GAAG,YAAY,CAAA;YAC5B,MAAM,MAAM,GAAG,WAAW,CAAA;YAC1B,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,mEAAmE;gBAChF,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,OAAO;aACjB,CAAA;YACD,MAAM,QAAQ,GAAG;gBACf,kBAAkB,EAAE,KAAK;gBACzB,eAAe,EAAE,yBAAc;gBAC/B,YAAY,EAAE,EAAE;gBAChB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,KAAK;aACtB,CAAA;YACD,IAAI,KAAK,CAAA;YACT,IAAI;gBACF,MAAM,mCAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;aAChE;YAAC,OAAO,CAAC,EAAE;gBACV,IAAI,CAAC,YAAY,KAAK,EAAE;oBACtB,KAAK,GAAG,CAAC,CAAA;iBACV;aACF;YACD,MAAM,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAC,IAAI,CACzB,0HAA0H,CAC3H,CAAA;QACH,CAAC,CAAA,CAAC,CAAA;QAEF,QAAQ,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACzE,MAAM,MAAM,GAAG,WAAW,CAAA;YAC1B,MAAM,MAAM,GAAG;gBACb,WAAW,EAAE,mEAAmE;gBAChF,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,SAAS;aACnB,CAAA;YACD,MAAM,QAAQ,GAAG;gBACf,kBAAkB,EAAE,KAAK;gBACzB,eAAe,EAAE,yBAAc;gBAC/B,YAAY,EAAE,EAAE;gBAChB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,KAAK;aACtB,CAAA;YACD,MAAM,aAAa,GAAG,SAAS,CAAA;YAC/B,MAAM,WAAW,GAAG,QAAQ,CAAA;YAE5B,QAAQ,CAAC,oBAAoB,aAAa,EAAE,EAAE,GAAG,EAAE;gBACjD,MAAM,YAAY,mCAAO,MAAM,KAAE,OAAO,EAAE,aAAa,GAAC,CAAA;gBACxD,MAAM,mBAAmB,mCAAO,MAAM,KAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,OAAO,CAAC,GAAC,CAAA;gBACzF,IAAI,CAAC,oFAAoF,EAAE,GAAS,EAAE;oBACpG,OAAO,CAAC,GAAG,CAAC,kCAAsB,CAAC,GAAG,MAAM,CAAA;oBAC5C,MAAM,WAAW,mCAAO,QAAQ,KAAE,gBAAgB,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,GAAC,CAAA;oBACxE,IAAI,KAAK,CAAA;oBACT,IAAI;wBACF,MAAM,mCAAsB,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,CAAA;qBAC/E;oBAAC,OAAO,CAAC,EAAE;wBACV,IAAI,CAAC,YAAY,KAAK,EAAE;4BACtB,KAAK,GAAG,CAAC,CAAA;yBACV;qBACF;oBACD,MAAM,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAC,IAAI,CACzB,WAAW,aAAa,qFAAqF,CAC9G,CAAA;gBACH,CAAC,CAAA,CAAC,CAAA;gBAEF,IAAI,CAAC,+EAA+E,EAAE,GAAS,EAAE;oBAC/F,OAAO,CAAC,GAAG,CAAC,kCAAsB,CAAC,GAAG,MAAM,CAAA;oBAC5C,MAAM,WAAW,mCAAO,QAAQ,KAAE,gBAAgB,EAAE,EAAE,GAAC,CAAA;oBACvD,IAAI,KAAK,CAAA;oBACT,IAAI;wBACF,MAAM,mCAAsB,CAAC,mBAAmB,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,CAAA;qBACtF;oBAAC,OAAO,CAAC,EAAE;wBACV,IAAI,CAAC,YAAY,KAAK,EAAE;4BACtB,KAAK,GAAG,CAAC,CAAA;yBACV;qBACF;oBACD,MAAM,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAC,IAAI,CACzB,iKAAiK,CAClK,CAAA;gBACH,CAAC,CAAA,CAAC,CAAA;gBAEF,MAAM,aAAa,GAAG;oBACpB,cAAc,EAAE,MAAM;oBACtB,oBAAoB,EAAE,OAAO;oBAC7B,OAAO,EAAE,eAAe;oBACxB,gBAAgB,EAAE,OAAO;iBAC1B,CAAA;gBACD,MAAM,4BAA4B,GAAG;oBACnC,WAAW,EAAE;wBACX,SAAS,kCAAM,aAAa,KAAE,uBAAuB,EAAE,sBAAsB,GAAC;qBAC/E;oBACD,YAAY,EAAE,mEAAmE;oBACjF,MAAM,EAAE;wBACN,kEAAkE;wBAClE,+DAA+D;qBAChE;iBACF,CAAA;gBACD,MAAM,mBAAmB,GAAG;oBAC1B,WAAW,EAAE;wBACX,SAAS,kCACJ,aAAa,KAChB,wBAAwB,EAAE,GAAG,EAC7B,gBAAgB,EAAE,wCAAwC,EAC1D,qBAAqB,EAAE,kDAAkD,EACzE,qBAAqB,EAAE,cAAc,GACtC;qBACF;oBACD,YAAY,EAAE,mEAAmE;oBACjF,MAAM,EAAE;wBACN,kEAAkE;wBAClE,+DAA+D;qBAChE;iBACF,CAAA;gBACD,MAAM,cAAc,GAAG;oBACrB,WAAW,EAAE;wBACX,SAAS,kCACJ,aAAa,KAChB,wBAAwB,EAAE,GAAG,EAC7B,gBAAgB,EAAE,wCAAwC,EAC1D,qBAAqB,EAAE,kDAAkD,EACzE,qBAAqB,EAAE,cAAc,GACtC;qBACF;oBACD,YAAY,EAAE,mEAAmE;oBACjF,MAAM,EAAE,CAAC,kEAAkE,CAAC;iBAC7E,CAAA;gBAED,IAAI,CAAC,IAAI,CAAA;;YAEL,EAAE,iBAAiB,CAAC,cAAc,4BAA4B;YAC9D,EAAE,iBAAiB,CAAC,cAAc,mBAAmB;YACrD,EAAE,iBAAiB,SAAS,MAAM,cAAc;SACnD,CACC,2GAA2G,EAC3G,CAAO,EAAC,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAC,EAAE,EAAE;oBACvD,MAAM,WAAW,mCAAO,QAAQ,KAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,GAAC,CAAA;oBAC/E,OAAO,CAAC,GAAG,CAAC,kCAAsB,CAAC,GAAG,MAAM,CAAA;oBAC5C,MAAM,aAAa,GAAG,MAAM,mCAAsB,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,CAAA;oBACpG,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;gBAC7C,CAAC,CAAA,CACF,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,QAAQ,CAAC,oBAAoB,WAAW,EAAE,EAAE,GAAG,EAAE;gBAC/C,MAAM,UAAU,mCAAO,MAAM,KAAE,OAAO,EAAE,WAAW,GAAC,CAAA;gBAEpD,IAAI,CAAC,oFAAoF,EAAE,GAAS,EAAE;oBACpG,OAAO,CAAC,GAAG,CAAC,kCAAsB,CAAC,GAAG,MAAM,CAAA;oBAC5C,MAAM,WAAW,mCAAO,QAAQ,KAAE,gBAAgB,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,GAAC,CAAA;oBACxE,IAAI,KAAK,CAAA;oBACT,IAAI;wBACF,MAAM,mCAAsB,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;qBAC3E;oBAAC,OAAO,CAAC,EAAE;wBACV,IAAI,CAAC,YAAY,KAAK,EAAE;4BACtB,KAAK,GAAG,CAAC,CAAA;yBACV;qBACF;oBACD,MAAM,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAC,IAAI,CACzB,WAAW,WAAW,qFAAqF,CAC5G,CAAA;gBACH,CAAC,CAAA,CAAC,CAAA;gBAEF,MAAM,aAAa,GAAG;oBACpB,cAAc,EAAE,MAAM;oBACtB,oBAAoB,EAAE,OAAO;oBAC7B,OAAO,EAAE,eAAe;oBACxB,gBAAgB,EAAE,OAAO;iBAC1B,CAAA;gBACD,MAAM,4BAA4B,GAAG;oBACnC,WAAW,EAAE;wBACX,SAAS,kCAAM,aAAa,KAAE,uBAAuB,EAAE,sBAAsB,GAAC;qBAC/E;oBACD,YAAY,EAAE,mEAAmE;oBACjF,MAAM,EAAE;wBACN,kEAAkE;wBAClE,6DAA6D;qBAC9D;iBACF,CAAA;gBACD,MAAM,mBAAmB,GAAG;oBAC1B,WAAW,EAAE;wBACX,SAAS,oBACJ,aAAa,CACjB;qBACF;oBACD,YAAY,EAAE,mEAAmE;oBACjF,MAAM,EAAE;wBACN,kEAAkE;wBAClE,6DAA6D;qBAC9D;iBACF,CAAA;gBACD,MAAM,cAAc,GAAG;oBACrB,WAAW,EAAE;wBACX,SAAS,oBACJ,aAAa,CACjB;qBACF;oBACD,YAAY,EAAE,mEAAmE;oBACjF,MAAM,EAAE,CAAC,kEAAkE,CAAC;iBAC7E,CAAA;gBAED,IAAI,CAAC,IAAI,CAAA;;YAEL,EAAE,iBAAiB,CAAC,cAAc,4BAA4B;YAC9D,EAAE,iBAAiB,CAAC,cAAc,mBAAmB;YACrD,EAAE,iBAAiB,SAAS,MAAM,cAAc;SACnD,CACC,2GAA2G,EAC3G,CAAO,EAAC,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAC,EAAE,EAAE;oBACvD,MAAM,WAAW,mCAAO,QAAQ,KAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,GAAC,CAAA;oBAC/E,OAAO,CAAC,GAAG,CAAC,kCAAsB,CAAC,GAAG,MAAM,CAAA;oBAC5C,MAAM,aAAa,GAAG,MAAM,mCAAsB,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;oBAChG,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;gBAC7C,CAAC,CAAA,CACF,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const constants_1 = require("../../constants");
4
+ const versionChecker_1 = require("../../functions/versionChecker");
5
+ describe('Test extension and trace version checker', () => {
6
+ test.each `
7
+ runtimeType | extensionVersion | result
8
+ ${constants_1.RuntimeType.JAVA} | ${27} | ${true}
9
+ ${constants_1.RuntimeType.JAVA} | ${23} | ${false}
10
+ ${constants_1.RuntimeType.JAVA} | ${undefined} | ${false}
11
+ ${constants_1.RuntimeType.DOTNET} | ${27} | ${true}
12
+ ${constants_1.RuntimeType.DOTNET} | ${23} | ${false}
13
+ ${constants_1.RuntimeType.DOTNET} | ${undefined} | ${false}
14
+ ${constants_1.RuntimeType.NODE} | ${27} | ${true}
15
+ ${constants_1.RuntimeType.PYTHON} | ${23} | ${true}
16
+ `('should function isExtensionSupportUniversalInstrumentation() return $result if runtimeType=$runtimeType and extensionVersion=$extensionVersion', ({ runtimeType, extensionVersion, result }) => {
17
+ expect(versionChecker_1.isExtensionCompatibleWithUniversalInstrumentation(runtimeType, extensionVersion)).toEqual(result);
18
+ });
19
+ test.each `
20
+ runtimeType | traceVersion | result
21
+ ${constants_1.RuntimeType.JAVA} | ${5} | ${true}
22
+ ${constants_1.RuntimeType.JAVA} | ${4} | ${false}
23
+ ${constants_1.RuntimeType.JAVA} | ${undefined} | ${true}
24
+ ${constants_1.RuntimeType.DOTNET} | ${3} | ${false}
25
+ ${constants_1.RuntimeType.DOTNET} | ${4} | ${true}
26
+ ${constants_1.RuntimeType.DOTNET} | ${undefined} | ${true}
27
+ ${constants_1.RuntimeType.NODE} | ${8} | ${true}
28
+ ${constants_1.RuntimeType.PYTHON} | ${2} | ${true}
29
+ `('should function isExtensionCompatibleWithTrace() return $result if runtimeType=$runtimeType and traceVersion=$traceVersion', ({ runtimeType, traceVersion, result }) => {
30
+ expect(versionChecker_1.isTracerCompatibleWithExtension(runtimeType, traceVersion)).toEqual(result);
31
+ });
32
+ });
33
+ //# sourceMappingURL=versionChecker.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionChecker.test.js","sourceRoot":"","sources":["../../../../../src/commands/lambda/__tests__/functions/versionChecker.test.ts"],"names":[],"mappings":";;AAAA,+CAA2C;AAC3C,mEAGuC;AAEvC,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,IAAI,CAAC,IAAI,CAAA;;MAEL,uBAAW,CAAC,IAAI,QAAQ,EAAE,iBAAiB,IAAI;MAC/C,uBAAW,CAAC,IAAI,QAAQ,EAAE,iBAAiB,KAAK;MAChD,uBAAW,CAAC,IAAI,QAAQ,SAAS,UAAU,KAAK;MAChD,uBAAW,CAAC,MAAM,MAAM,EAAE,iBAAiB,IAAI;MAC/C,uBAAW,CAAC,MAAM,MAAM,EAAE,iBAAiB,KAAK;MAChD,uBAAW,CAAC,MAAM,MAAM,SAAS,UAAU,KAAK;MAChD,uBAAW,CAAC,IAAI,QAAQ,EAAE,iBAAiB,IAAI;MAC/C,uBAAW,CAAC,MAAM,MAAM,EAAE,iBAAiB,IAAI;GAClD,CACC,gJAAgJ,EAChJ,CAAC,EAAC,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAC,EAAE,EAAE;QAC1C,MAAM,CAAC,kEAAiD,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1G,CAAC,CACF,CAAA;IAED,IAAI,CAAC,IAAI,CAAA;;MAEL,uBAAW,CAAC,IAAI,QAAQ,CAAC,cAAc,IAAI;MAC3C,uBAAW,CAAC,IAAI,QAAQ,CAAC,cAAc,KAAK;MAC5C,uBAAW,CAAC,IAAI,QAAQ,SAAS,MAAM,IAAI;MAC3C,uBAAW,CAAC,MAAM,MAAM,CAAC,cAAc,KAAK;MAC5C,uBAAW,CAAC,MAAM,MAAM,CAAC,cAAc,IAAI;MAC3C,uBAAW,CAAC,MAAM,MAAM,SAAS,MAAM,IAAI;MAC3C,uBAAW,CAAC,IAAI,QAAQ,CAAC,cAAc,IAAI;MAC3C,uBAAW,CAAC,MAAM,MAAM,CAAC,cAAc,IAAI;GAC9C,CACC,4HAA4H,EAC5H,CAAC,EAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAC,EAAE,EAAE;QACtC,MAAM,CAAC,gDAA+B,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACpF,CAAC,CACF,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -1314,43 +1314,6 @@ ${chalk_1.red('[Error]')} Couldn't find any Lambda functions in the specified re
1314
1314
  Fetching Lambda functions, this might take a while.
1315
1315
  ${chalk_1.red('[Error]')} Couldn't fetch Lambda functions. Error: Max retry count exceeded. ListFunctionsError
1316
1316
  "
1317
- `);
1318
- }));
1319
- test('aborts early when a layer version is set for Java', () => __awaiter(void 0, void 0, void 0, function* () {
1320
- ;
1321
- fs.readFile.mockImplementation((a, b, callback) => callback({ code: 'ENOENT' }));
1322
- aws_sdk_1.Lambda.mockImplementation(() => fixtures_1.makeMockLambda({
1323
- 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world': {
1324
- FunctionArn: 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world',
1325
- Runtime: 'java8.al2',
1326
- },
1327
- }));
1328
- const cli = fixtures_1.makeCli();
1329
- const context = fixtures_1.createMockContext();
1330
- const functionARN = 'arn:aws:lambda:us-east-1:123456789012:function:lambda-hello-world';
1331
- process.env.DATADOG_API_KEY = '1234';
1332
- const code = yield cli.run([
1333
- 'lambda',
1334
- 'instrument',
1335
- '-f',
1336
- functionARN,
1337
- '--dry',
1338
- '-v',
1339
- '6',
1340
- '--extra-tags',
1341
- 'layer:api,team:intake',
1342
- '--service',
1343
- 'middletier',
1344
- '--env',
1345
- 'staging',
1346
- '--version',
1347
- '0.2',
1348
- ], context);
1349
- const output = context.stdout.toString();
1350
- expect(code).toBe(1);
1351
- expect(output).toMatchInlineSnapshot(`
1352
- "${chalk_1.red('[Error]')} Couldn't fetch Lambda functions. Error: Only the --extension-version argument should be set for the java8.al2 runtime. Please remove the --layer-version argument from the instrument command.
1353
- "
1354
1317
  `);
1355
1318
  }));
1356
1319
  test('aborts early when a layer version is set for Ruby', () => __awaiter(void 0, void 0, void 0, function* () {
@@ -1461,7 +1424,7 @@ ${chalk_1.red('[Error]')} Couldn't fetch Lambda functions. Error: Max retry coun
1461
1424
  const output = context.stdout.toString();
1462
1425
  expect(code).toBe(1);
1463
1426
  expect(output).toMatchInlineSnapshot(`
1464
- "${chalk_1.red('[Error]')} Couldn't fetch Lambda functions. Error: Instrumenting arm64 architecture is not currently supported for .NET. Please only instrument .NET functions using x86_64 architecture.
1427
+ "${chalk_1.red('[Error]')} Couldn't fetch Lambda functions. Error: Instrumenting arm64 architecture is not supported for the given dd-extension version. Please choose the latest dd-extension version or use x86_64 architecture.
1465
1428
  "
1466
1429
  `);
1467
1430
  }));