From 90c8c315231ee5e665ca3f60ccf84fdb45a2c384 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Fri, 30 Aug 2024 15:19:29 +0200 Subject: [PATCH] chore: move xray and xray-lambda propagators to contrib --- .../propagator-aws-xray-lambda/.eslintignore | 1 - .../propagator-aws-xray-lambda/.eslintrc.js | 7 - .../propagator-aws-xray-lambda/.npmignore | 4 - .../propagator-aws-xray-lambda/LICENSE | 201 ----------- .../propagator-aws-xray-lambda/README.md | 35 -- .../propagator-aws-xray-lambda/package.json | 69 ---- .../src/AWSXRayLambdaPropagator.ts | 74 ---- .../propagator-aws-xray-lambda/src/index.ts | 17 - .../test/AWSXRayLambdaPropagator.test.ts | 207 ----------- .../test/index-webpack.ts | 20 -- .../tsconfig.esm.json | 19 - .../tsconfig.esnext.json | 19 - .../propagator-aws-xray-lambda/tsconfig.json | 19 - package-lock.json | 204 ----------- packages/propagator-aws-xray/.eslintignore | 1 - packages/propagator-aws-xray/.eslintrc.js | 9 - packages/propagator-aws-xray/LICENSE | 201 ----------- packages/propagator-aws-xray/README.md | 74 ---- packages/propagator-aws-xray/karma.conf.js | 24 -- packages/propagator-aws-xray/package.json | 85 ----- .../src/AWSXRayPropagator.ts | 200 ----------- packages/propagator-aws-xray/src/index.ts | 20 -- .../test/AWSXRayPropagator.test.ts | 328 ------------------ .../propagator-aws-xray/test/index-webpack.ts | 20 -- .../propagator-aws-xray/tsconfig.esm.json | 19 - .../propagator-aws-xray/tsconfig.esnext.json | 19 - packages/propagator-aws-xray/tsconfig.json | 19 - tsconfig.esm.json | 6 - tsconfig.esnext.json | 6 - tsconfig.json | 8 - 30 files changed, 1935 deletions(-) delete mode 100644 experimental/packages/propagator-aws-xray-lambda/.eslintignore delete mode 100644 experimental/packages/propagator-aws-xray-lambda/.eslintrc.js delete mode 100644 experimental/packages/propagator-aws-xray-lambda/.npmignore delete mode 100644 experimental/packages/propagator-aws-xray-lambda/LICENSE delete mode 100644 experimental/packages/propagator-aws-xray-lambda/README.md delete mode 100644 experimental/packages/propagator-aws-xray-lambda/package.json delete mode 100644 experimental/packages/propagator-aws-xray-lambda/src/AWSXRayLambdaPropagator.ts delete mode 100644 experimental/packages/propagator-aws-xray-lambda/src/index.ts delete mode 100644 experimental/packages/propagator-aws-xray-lambda/test/AWSXRayLambdaPropagator.test.ts delete mode 100644 experimental/packages/propagator-aws-xray-lambda/test/index-webpack.ts delete mode 100644 experimental/packages/propagator-aws-xray-lambda/tsconfig.esm.json delete mode 100644 experimental/packages/propagator-aws-xray-lambda/tsconfig.esnext.json delete mode 100644 experimental/packages/propagator-aws-xray-lambda/tsconfig.json delete mode 100644 packages/propagator-aws-xray/.eslintignore delete mode 100644 packages/propagator-aws-xray/.eslintrc.js delete mode 100644 packages/propagator-aws-xray/LICENSE delete mode 100644 packages/propagator-aws-xray/README.md delete mode 100644 packages/propagator-aws-xray/karma.conf.js delete mode 100644 packages/propagator-aws-xray/package.json delete mode 100644 packages/propagator-aws-xray/src/AWSXRayPropagator.ts delete mode 100644 packages/propagator-aws-xray/src/index.ts delete mode 100644 packages/propagator-aws-xray/test/AWSXRayPropagator.test.ts delete mode 100644 packages/propagator-aws-xray/test/index-webpack.ts delete mode 100644 packages/propagator-aws-xray/tsconfig.esm.json delete mode 100644 packages/propagator-aws-xray/tsconfig.esnext.json delete mode 100644 packages/propagator-aws-xray/tsconfig.json diff --git a/experimental/packages/propagator-aws-xray-lambda/.eslintignore b/experimental/packages/propagator-aws-xray-lambda/.eslintignore deleted file mode 100644 index 378eac25d31..00000000000 --- a/experimental/packages/propagator-aws-xray-lambda/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -build diff --git a/experimental/packages/propagator-aws-xray-lambda/.eslintrc.js b/experimental/packages/propagator-aws-xray-lambda/.eslintrc.js deleted file mode 100644 index 9baf1b49565..00000000000 --- a/experimental/packages/propagator-aws-xray-lambda/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../../eslint.base.js') -} diff --git a/experimental/packages/propagator-aws-xray-lambda/.npmignore b/experimental/packages/propagator-aws-xray-lambda/.npmignore deleted file mode 100644 index 9505ba9450f..00000000000 --- a/experimental/packages/propagator-aws-xray-lambda/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -/bin -/coverage -/doc -/test diff --git a/experimental/packages/propagator-aws-xray-lambda/LICENSE b/experimental/packages/propagator-aws-xray-lambda/LICENSE deleted file mode 100644 index 261eeb9e9f8..00000000000 --- a/experimental/packages/propagator-aws-xray-lambda/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/experimental/packages/propagator-aws-xray-lambda/README.md b/experimental/packages/propagator-aws-xray-lambda/README.md deleted file mode 100644 index 33c1885ed98..00000000000 --- a/experimental/packages/propagator-aws-xray-lambda/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# OpenTelemetry Propagator AWS X-Ray-Lambda - -[![NPM Published Version][npm-img]][npm-url] -[![Apache License][license-image]][license-image] - -**Note: This is an experimental package under active development. New releases may include breaking changes.** - -The OpenTelemetry Propagator for AWS X-Ray Lambda provides propagation based on the X-Ray `_X_AMZN_TRACE_ID` environment -variable in addition to the AWS X-Ray HTTP headers. This propagator should be used only for an AWS Lambda instrumentation. - -## Usage - -The preferred method for using this propagator is by using the `OTEL_PROPAGATORS` environment variable. For more details, -see the [semantic conventions specification for AWS Lambda](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/faas/aws-lambda.md). - -## Propagator Details - -The propagator extracts context from the `_X_AMZN_TRACE_ID` environment variable, except when there is already another -context active. It also automatically uses the [AWS X-Ray propagator](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/propagators/opentelemetry-propagator-aws-xray). - -## Useful links - -- For more information on OpenTelemetry, visit: -- For more about OpenTelemetry JavaScript: -- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] - -## License - -Apache 2.0 - See [LICENSE][license-url] for more information. - -[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions -[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE -[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat -[npm-url]: https://www.npmjs.com/package/@opentelemetry/propagator-aws-xray -[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fpropagator-aws-xray.svg diff --git a/experimental/packages/propagator-aws-xray-lambda/package.json b/experimental/packages/propagator-aws-xray-lambda/package.json deleted file mode 100644 index 6c0062012f4..00000000000 --- a/experimental/packages/propagator-aws-xray-lambda/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "@opentelemetry/propagator-aws-xray-lambda", - "version": "0.53.0", - "description": "OpenTelemetry AWS Xray propagator provides context propagation for systems that are using AWS X-Ray format.", - "main": "build/src/index.js", - "module": "build/esm/index.js", - "types": "build/src/index.d.ts", - "repository": "open-telemetry/opentelemetry-js", - "scripts": { - "precompile": "tsc --version && lerna run version:update --scope @opentelemetry/propagator-aws-xray-lambda --include-dependencies", - "prewatch": "npm run precompile", - "compile": "tsc --build tsconfig.json tsconfig.esm.json", - "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", - "test": "nyc mocha test/**/*.test.ts", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json", - "prepublishOnly": "npm run compile", - "peer-api-check": "node ../../../scripts/peer-api-check.js", - "align-api-deps": "node ../../../scripts/align-api-deps.js" - }, - "keywords": [ - "opentelemetry", - "nodejs", - "tracing", - "awsxray" - ], - "author": "OpenTelemetry Authors", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - }, - "files": [ - "build/esm/**/*.js", - "build/esm/**/*.js.map", - "build/esm/**/*.d.ts", - "build/src/**/*.js", - "build/src/**/*.js.map", - "build/src/**/*.d.ts" - ], - "publishConfig": { - "access": "public" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - }, - "devDependencies": { - "@babel/core": "7.25.2", - "@babel/preset-env": "7.25.3", - "@opentelemetry/api": "1.9.0", - "@types/mocha": "10.0.7", - "@types/node": "18.6.5", - "@types/sinon": "17.0.3", - "babel-loader": "8.3.0", - "babel-plugin-istanbul": "7.0.0", - "codecov": "3.8.3", - "cross-var": "1.1.0", - "lerna": "6.6.2", - "mocha": "10.7.3", - "nyc": "15.1.0", - "sinon": "15.1.2", - "ts-loader": "9.5.1", - "typescript": "4.4.4" - }, - "dependencies": { - "@opentelemetry/propagator-aws-xray": "1.26.0" - }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/propagator-aws-xray-lambda#readme" -} diff --git a/experimental/packages/propagator-aws-xray-lambda/src/AWSXRayLambdaPropagator.ts b/experimental/packages/propagator-aws-xray-lambda/src/AWSXRayLambdaPropagator.ts deleted file mode 100644 index 51d7ca48891..00000000000 --- a/experimental/packages/propagator-aws-xray-lambda/src/AWSXRayLambdaPropagator.ts +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - Context, - TextMapPropagator, - TextMapSetter, - TextMapGetter, - isSpanContextValid, - defaultTextMapGetter, - trace, -} from '@opentelemetry/api'; -import { - AWSXRayPropagator, - AWSXRAY_TRACE_ID_HEADER, -} from '@opentelemetry/propagator-aws-xray'; - -export const AWSXRAY_TRACE_ID_ENV_VAR = '_X_AMZN_TRACE_ID'; - -/** - * Implementation of the AWS X-Ray Trace Header propagation protocol with special - * logic for handling Lambda X-ray environment variable. - * - * An example AWS Xray Tracing Header is shown below: - * X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1 - */ -export class AWSXRayLambdaPropagator implements TextMapPropagator { - private _awsXrayPropagator = new AWSXRayPropagator(); - - inject(context: Context, carrier: unknown, setter: TextMapSetter) { - this._awsXrayPropagator.inject(context, carrier, setter); - } - - extract(context: Context, carrier: unknown, getter: TextMapGetter): Context { - const xrayContext = this._awsXrayPropagator.extract( - context, - carrier, - getter - ); - - const spanContext = trace.getSpanContext(context); - if (spanContext && isSpanContextValid(spanContext)) { - return xrayContext; - } - - const xrayEnvVar = process.env[AWSXRAY_TRACE_ID_ENV_VAR]; - if (!xrayEnvVar) { - return xrayContext; - } - - return this._awsXrayPropagator.extract( - xrayContext, - { [AWSXRAY_TRACE_ID_HEADER]: xrayEnvVar }, - defaultTextMapGetter - ); - } - - fields(): string[] { - return this._awsXrayPropagator.fields(); - } -} diff --git a/experimental/packages/propagator-aws-xray-lambda/src/index.ts b/experimental/packages/propagator-aws-xray-lambda/src/index.ts deleted file mode 100644 index 0841580d074..00000000000 --- a/experimental/packages/propagator-aws-xray-lambda/src/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { AWSXRayLambdaPropagator } from './AWSXRayLambdaPropagator'; diff --git a/experimental/packages/propagator-aws-xray-lambda/test/AWSXRayLambdaPropagator.test.ts b/experimental/packages/propagator-aws-xray-lambda/test/AWSXRayLambdaPropagator.test.ts deleted file mode 100644 index 23f01482c70..00000000000 --- a/experimental/packages/propagator-aws-xray-lambda/test/AWSXRayLambdaPropagator.test.ts +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import * as assert from 'assert'; - -import { - defaultTextMapGetter, - defaultTextMapSetter, - ROOT_CONTEXT, - SpanContext, - TraceFlags, - trace, - context, -} from '@opentelemetry/api'; -import * as sinon from 'sinon'; - -import { AWSXRayLambdaPropagator } from '../src'; -import { AWSXRAY_TRACE_ID_ENV_VAR } from '../src/AWSXRayLambdaPropagator'; -import { - AWSXRAY_TRACE_ID_HEADER, - AWSXRayPropagator, -} from '@opentelemetry/propagator-aws-xray'; - -describe('AWSXRayPropagator', () => { - const xrayLambdaPropagator = new AWSXRayLambdaPropagator(); - - let carrier: { [key: string]: unknown }; - - beforeEach(() => { - carrier = {}; - }); - - describe('.inject()', () => { - it('should use AWSXRayPropagator inject()', () => { - const spy = sinon.spy(AWSXRayPropagator.prototype, 'inject'); - assert.equal(spy.callCount, 0); - xrayLambdaPropagator.inject( - context.active(), - carrier, - defaultTextMapSetter - ); - sinon.assert.calledOnceWithExactly( - spy, - context.active(), - carrier, - defaultTextMapSetter - ); - }); - }); - - describe('.extract()', () => { - it('should extract context from the _X_AMZN_TRACE_ID env variable', () => { - const xrayEnvSpanId = '53995c3f42cd8ad8'; - const xrayEnvTraceId = '8a3c60f7d188f8fa79d48a391a778fa6'; - process.env[AWSXRAY_TRACE_ID_ENV_VAR] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1'; - const extractedSpanContext = trace - .getSpan( - xrayLambdaPropagator.extract( - ROOT_CONTEXT, - carrier, - defaultTextMapGetter - ) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, { - traceId: xrayEnvTraceId, - spanId: xrayEnvSpanId, - isRemote: true, - traceFlags: TraceFlags.SAMPLED, - }); - }); - - it('should return current context if one exists', () => { - const traceId = 'fd14414f1e61351035c43863714b4aa8'; - const spanId = '81e77faacf9f61f3'; - const existingContext: SpanContext = { - traceId: traceId, - spanId: spanId, - traceFlags: TraceFlags.SAMPLED, - isRemote: true, - }; - const ctx = trace.setSpanContext(context.active(), existingContext); - - process.env[AWSXRAY_TRACE_ID_ENV_VAR] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1'; - - const extractedSpanContext = trace - .getSpan( - xrayLambdaPropagator.extract(ctx, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, { - traceId: traceId, - spanId: spanId, - isRemote: true, - traceFlags: TraceFlags.SAMPLED, - }); - }); - - it('should return X-ray context from carrier when there is an existing context', () => { - const traceId = 'fd14414f1e61351035c43863714b4aa8'; - const spanId = '81e77faacf9f61f3'; - const existingContext: SpanContext = { - traceId: traceId, - spanId: spanId, - traceFlags: TraceFlags.SAMPLED, - isRemote: true, - }; - const ctx = trace.setSpanContext(context.active(), existingContext); - - process.env[AWSXRAY_TRACE_ID_ENV_VAR] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1'; - - const xrayHeaderSpanId = '4635c8688f46eb5d'; - const xrayHeaderTraceId = '48165d1ad6255f4cb1ddf9999ef6d536'; - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-48165d1a-d6255f4cb1ddf9999ef6d536;Parent=4635c8688f46eb5d;Sampled=1'; - - const extractedSpanContext = trace - .getSpan( - xrayLambdaPropagator.extract(ctx, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, { - traceId: xrayHeaderTraceId, - spanId: xrayHeaderSpanId, - isRemote: true, - traceFlags: TraceFlags.SAMPLED, - }); - }); - - it('should return env variable context if there is no active context but carrier also has xray headers', () => { - const xrayEnvSpanId = '53995c3f42cd8ad8'; - const xrayEnvTraceId = '8a3c60f7d188f8fa79d48a391a778fa6'; - process.env[AWSXRAY_TRACE_ID_ENV_VAR] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1'; - - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-48165d1a-d6255f4cb1ddf9999ef6d536;Parent=4635c8688f46eb5d;Sampled=1'; - - const extractedSpanContext = trace - .getSpan( - xrayLambdaPropagator.extract( - context.active(), - carrier, - defaultTextMapGetter - ) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, { - traceId: xrayEnvTraceId, - spanId: xrayEnvSpanId, - isRemote: true, - traceFlags: TraceFlags.SAMPLED, - }); - }); - - it('should return current context if one exists', () => { - delete process.env[AWSXRAY_TRACE_ID_ENV_VAR]; - - const xrayHeaderSpanId = '53995c3f42cd8ad8'; - const xrayHeaderTraceId = '8a3c60f7d188f8fa79d48a391a778fa6'; - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1'; - const extractedSpanContext = trace - .getSpan( - xrayLambdaPropagator.extract( - ROOT_CONTEXT, - carrier, - defaultTextMapGetter - ) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, { - traceId: xrayHeaderTraceId, - spanId: xrayHeaderSpanId, - isRemote: true, - traceFlags: TraceFlags.SAMPLED, - }); - }); - }); - - describe('.fields()', () => { - it('should return a field with AWS X-Ray Trace ID header', () => { - const actualFields = xrayLambdaPropagator.fields(); - assert.deepStrictEqual([AWSXRAY_TRACE_ID_HEADER], actualFields); - }); - }); -}); diff --git a/experimental/packages/propagator-aws-xray-lambda/test/index-webpack.ts b/experimental/packages/propagator-aws-xray-lambda/test/index-webpack.ts deleted file mode 100644 index 061a48ccfa7..00000000000 --- a/experimental/packages/propagator-aws-xray-lambda/test/index-webpack.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -const testsContext = require.context('.', true, /test$/); -testsContext.keys().forEach(testsContext); - -const srcContext = require.context('.', true, /src$/); -srcContext.keys().forEach(srcContext); diff --git a/experimental/packages/propagator-aws-xray-lambda/tsconfig.esm.json b/experimental/packages/propagator-aws-xray-lambda/tsconfig.esm.json deleted file mode 100644 index ed538d42992..00000000000 --- a/experimental/packages/propagator-aws-xray-lambda/tsconfig.esm.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../tsconfig.base.esm.json", - "compilerOptions": { - "outDir": "build/esm", - "rootDir": "src", - "tsBuildInfoFile": "build/esm/tsconfig.esm.tsbuildinfo" - }, - "include": [ - "src/**/*.ts" - ], - "references": [ - { - "path": "../../../api" - }, - { - "path": "../../../packages/propagator-aws-xray" - } - ] -} diff --git a/experimental/packages/propagator-aws-xray-lambda/tsconfig.esnext.json b/experimental/packages/propagator-aws-xray-lambda/tsconfig.esnext.json deleted file mode 100644 index 2eb63c9fd9d..00000000000 --- a/experimental/packages/propagator-aws-xray-lambda/tsconfig.esnext.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../tsconfig.base.esnext.json", - "compilerOptions": { - "outDir": "build/esnext", - "rootDir": "src", - "tsBuildInfoFile": "build/esnext/tsconfig.esnext.tsbuildinfo" - }, - "include": [ - "src/**/*.ts" - ], - "references": [ - { - "path": "../../../api" - }, - { - "path": "../../../packages/propagator-aws-xray" - } - ] -} diff --git a/experimental/packages/propagator-aws-xray-lambda/tsconfig.json b/experimental/packages/propagator-aws-xray-lambda/tsconfig.json deleted file mode 100644 index 48c9ac9c8ab..00000000000 --- a/experimental/packages/propagator-aws-xray-lambda/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "build", - "rootDir": "." - }, - "include": [ - "src/**/*.ts", - "test/**/*.ts" - ], - "references": [ - { - "path": "../../../api" - }, - { - "path": "../../../packages/propagator-aws-xray" - } - ] -} diff --git a/package-lock.json b/package-lock.json index b2bb520a68e..9afa4493226 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1905,38 +1905,6 @@ } } }, - "experimental/packages/propagator-aws-xray-lambda": { - "name": "@opentelemetry/propagator-aws-xray-lambda", - "version": "0.53.0", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/propagator-aws-xray": "1.26.0" - }, - "devDependencies": { - "@babel/core": "7.25.2", - "@babel/preset-env": "7.25.3", - "@opentelemetry/api": "1.9.0", - "@types/mocha": "10.0.7", - "@types/node": "18.6.5", - "@types/sinon": "17.0.3", - "babel-loader": "8.3.0", - "babel-plugin-istanbul": "7.0.0", - "codecov": "3.8.3", - "cross-var": "1.1.0", - "lerna": "6.6.2", - "mocha": "10.7.3", - "nyc": "15.1.0", - "sinon": "15.1.2", - "ts-loader": "9.5.1", - "typescript": "4.4.4" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, "experimental/packages/sampler-jaeger-remote": { "name": "@opentelemetry/sampler-jaeger-remote", "version": "0.53.0", @@ -7216,14 +7184,6 @@ "resolved": "experimental/packages/otlp-transformer", "link": true }, - "node_modules/@opentelemetry/propagator-aws-xray": { - "resolved": "packages/propagator-aws-xray", - "link": true - }, - "node_modules/@opentelemetry/propagator-aws-xray-lambda": { - "resolved": "experimental/packages/propagator-aws-xray-lambda", - "link": true - }, "node_modules/@opentelemetry/propagator-b3": { "resolved": "packages/opentelemetry-propagator-b3", "link": true @@ -31084,89 +31044,6 @@ "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "packages/propagator-aws-xray": { - "name": "@opentelemetry/propagator-aws-xray", - "version": "1.26.0", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "1.26.0" - }, - "devDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0", - "@types/mocha": "10.0.7", - "@types/node": "18.6.5", - "@types/webpack-env": "1.16.3", - "babel-plugin-istanbul": "7.0.0", - "codecov": "3.8.3", - "cross-var": "1.1.0", - "karma": "6.4.4", - "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.1", - "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.36", - "karma-webpack": "5.0.1", - "lerna": "6.6.2", - "mocha": "10.7.3", - "nyc": "15.1.0", - "ts-loader": "9.5.1", - "typescript": "4.4.4", - "webpack": "5.89.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "packages/propagator-aws-xray/node_modules/webpack": { - "version": "5.89.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", - "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, "packages/sdk-metrics": { "name": "@opentelemetry/sdk-metrics", "version": "1.26.0", @@ -36257,87 +36134,6 @@ } } }, - "@opentelemetry/propagator-aws-xray": { - "version": "file:packages/propagator-aws-xray", - "requires": { - "@opentelemetry/api": ">=1.0.0 <1.10.0", - "@opentelemetry/core": "1.26.0", - "@types/mocha": "10.0.7", - "@types/node": "18.6.5", - "@types/webpack-env": "1.16.3", - "babel-plugin-istanbul": "7.0.0", - "codecov": "3.8.3", - "cross-var": "1.1.0", - "karma": "6.4.4", - "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.1", - "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.36", - "karma-webpack": "5.0.1", - "lerna": "6.6.2", - "mocha": "10.7.3", - "nyc": "15.1.0", - "ts-loader": "9.5.1", - "typescript": "4.4.4", - "webpack": "5.89.0" - }, - "dependencies": { - "webpack": { - "version": "5.89.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", - "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - } - } - } - }, - "@opentelemetry/propagator-aws-xray-lambda": { - "version": "file:experimental/packages/propagator-aws-xray-lambda", - "requires": { - "@babel/core": "7.25.2", - "@babel/preset-env": "7.25.3", - "@opentelemetry/api": "1.9.0", - "@opentelemetry/propagator-aws-xray": "1.26.0", - "@types/mocha": "10.0.7", - "@types/node": "18.6.5", - "@types/sinon": "17.0.3", - "babel-loader": "8.3.0", - "babel-plugin-istanbul": "7.0.0", - "codecov": "3.8.3", - "cross-var": "1.1.0", - "lerna": "6.6.2", - "mocha": "10.7.3", - "nyc": "15.1.0", - "sinon": "15.1.2", - "ts-loader": "9.5.1", - "typescript": "4.4.4" - } - }, "@opentelemetry/propagator-b3": { "version": "file:packages/opentelemetry-propagator-b3", "requires": { diff --git a/packages/propagator-aws-xray/.eslintignore b/packages/propagator-aws-xray/.eslintignore deleted file mode 100644 index 378eac25d31..00000000000 --- a/packages/propagator-aws-xray/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -build diff --git a/packages/propagator-aws-xray/.eslintrc.js b/packages/propagator-aws-xray/.eslintrc.js deleted file mode 100644 index 36847df9fb1..00000000000 --- a/packages/propagator-aws-xray/.eslintrc.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - "env": { - "mocha": true, - "commonjs": true, - "node": true, - "browser": true - }, - ...require('../../eslint.base.js') -} diff --git a/packages/propagator-aws-xray/LICENSE b/packages/propagator-aws-xray/LICENSE deleted file mode 100644 index 261eeb9e9f8..00000000000 --- a/packages/propagator-aws-xray/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/propagator-aws-xray/README.md b/packages/propagator-aws-xray/README.md deleted file mode 100644 index cf9c0528ff5..00000000000 --- a/packages/propagator-aws-xray/README.md +++ /dev/null @@ -1,74 +0,0 @@ -# OpenTelemetry Propagator AWS X-Ray - -[![NPM Published Version][npm-img]][npm-url] -[![Apache License][license-image]][license-image] - -The OpenTelemetry Propagator for AWS X-Ray provides HTTP header propagation for systems that are using AWS `X-Amzn-Trace-Id` format. -This propagator translates the OpenTelemetry SpanContext into the equivalent AWS header format, for use with the OpenTelemetry JS SDK. -`TraceState` is currently not propagated. - -This package was originally located in [opentelemetry-js-contrib](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/propagators/opentelemetry-propagator-aws-xray). It has been moved in order to make it a direct dependency of the Node SDK. As a result, versions from 1.4.0 to 1.22.0 have been skipped. - -## Installation - -```sh -npm install --save @opentelemetry/propagator-aws-xray -``` - -## Usage - -In the [global tracer configuration file](https://opentelemetry.io/docs/instrumentation/js/getting-started/nodejs/#setup), configure the following: - -```js -const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); -const { AWSXRayPropagator } = require('@opentelemetry/propagator-aws-xray'); -// ... - -const provider = new NodeTracerProvider(); - -// Set the global trace context propagator to use X-Ray formatted trace header -provider.register({ - propagator: new AWSXRayPropagator() -}); -``` - -## Propagator Details - -Example header:`X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1` - -The header consists of three parts: the root trace ID, the parent ID and the sampling decision. - -### Root - The AWS X-Ray format trace ID - -- Format: (spec-version)-(timestamp)-(UUID) - - spec_version - The version of the AWS X-Ray header format. Currently, only "1" is valid. - - timestamp - 32-bit number in base16 format, corresponds to the first 8 characters of the OpenTelemetry trace ID. Note, while X-Ray calls this timestamp, for the purpose of propagation it is opaque and any value will work. - - UUID - 96-bit random number in base16 format, corresponds to the last 10 characters of the OpenTelemetry trace ID. - -Root is analogous to the [OpenTelemetry Trace ID](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/overview.md#spancontext), with some small format changes. -For additional reading, see the [AWS X-Ray Trace ID](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-sendingdata.html#xray-api-traceids) public documentation. - -### Parent - The ID of the AWS X-Ray Segment - -- 64-bit random number in base16 format. Populated from the [OpenTelemetry Span ID](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/overview.md#spancontext). - -### Sampled - The sampling decision - -- Defined in the AWS X-Ray specification as a tri-state field, with "0", "1" and "?" as valid values. Only "0" and "1" are used in this propagator. If "?", a new trace will be started. -- Populated from the [OpenTelemetry trace flags](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/overview.md#spancontext). - -## Useful links - -- For more information on OpenTelemetry, visit: -- For more about OpenTelemetry JavaScript: -- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] - -## License - -Apache 2.0 - See [LICENSE][license-url] for more information. - -[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions -[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE -[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat -[npm-url]: https://www.npmjs.com/package/@opentelemetry/propagator-aws-xray -[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fpropagator-aws-xray.svg diff --git a/packages/propagator-aws-xray/karma.conf.js b/packages/propagator-aws-xray/karma.conf.js deleted file mode 100644 index edcd9f055fd..00000000000 --- a/packages/propagator-aws-xray/karma.conf.js +++ /dev/null @@ -1,24 +0,0 @@ -/*! - * Copyright 2020, OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -const karmaWebpackConfig = require('../../karma.webpack'); -const karmaBaseConfig = require('../../karma.base'); - -module.exports = (config) => { - config.set(Object.assign({}, karmaBaseConfig, { - webpack: karmaWebpackConfig - })) -}; diff --git a/packages/propagator-aws-xray/package.json b/packages/propagator-aws-xray/package.json deleted file mode 100644 index c645ccf6971..00000000000 --- a/packages/propagator-aws-xray/package.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "name": "@opentelemetry/propagator-aws-xray", - "version": "1.26.0", - "description": "OpenTelemetry AWS Xray propagator provides context propagation for systems that are using AWS X-Ray format.", - "main": "build/src/index.js", - "module": "build/esm/index.js", - "types": "build/src/index.d.ts", - "repository": "open-telemetry/opentelemetry-js", - "scripts": { - "prepublishOnly": "npm run compile", - "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "test": "nyc mocha 'test/**/*.test.ts' --exclude 'test/index-webpack.ts'", - "test:browser": "karma start --single-run", - "tdd": "npm run tdd:node", - "tdd:node": "npm run test -- --watch-extensions ts --watch", - "tdd:browser": "karma start", - "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../", - "codecov:browser": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../", - "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "version": "node ../../scripts/version-update.js", - "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", - "prewatch": "npm run precompile", - "peer-api-check": "node ../../scripts/peer-api-check.js", - "align-api-deps": "node ../../scripts/align-api-deps.js" - }, - "keywords": [ - "opentelemetry", - "nodejs", - "tracing", - "profiling", - "awsxray" - ], - "author": "OpenTelemetry Authors", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - }, - "files": [ - "build/esm/**/*.js", - "build/esm/**/*.js.map", - "build/esm/**/*.d.ts", - "build/esnext/**/*.js", - "build/esnext/**/*.js.map", - "build/esnext/**/*.d.ts", - "build/src/**/*.js", - "build/src/**/*.js.map", - "build/src/**/*.d.ts", - "LICENSE", - "README.md" - ], - "publishConfig": { - "access": "public" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - }, - "devDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0", - "@types/mocha": "10.0.7", - "@types/node": "18.6.5", - "@types/webpack-env": "1.16.3", - "babel-plugin-istanbul": "7.0.0", - "codecov": "3.8.3", - "cross-var": "1.1.0", - "karma": "6.4.4", - "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.1", - "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.36", - "karma-webpack": "5.0.1", - "lerna": "6.6.2", - "mocha": "10.7.3", - "nyc": "15.1.0", - "ts-loader": "9.5.1", - "typescript": "4.4.4", - "webpack": "5.89.0" - }, - "dependencies": { - "@opentelemetry/core": "1.26.0" - }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/propagator-aws-xray#readme" -} diff --git a/packages/propagator-aws-xray/src/AWSXRayPropagator.ts b/packages/propagator-aws-xray/src/AWSXRayPropagator.ts deleted file mode 100644 index e06568d9ee0..00000000000 --- a/packages/propagator-aws-xray/src/AWSXRayPropagator.ts +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - trace, - Context, - TextMapPropagator, - SpanContext, - TraceFlags, - TextMapSetter, - TextMapGetter, - isSpanContextValid, - isValidSpanId, - isValidTraceId, - INVALID_TRACEID, - INVALID_SPANID, - INVALID_SPAN_CONTEXT, -} from '@opentelemetry/api'; - -export const AWSXRAY_TRACE_ID_HEADER = 'x-amzn-trace-id'; - -const TRACE_HEADER_DELIMITER = ';'; -const KV_DELIMITER = '='; - -const TRACE_ID_KEY = 'Root'; -const TRACE_ID_LENGTH = 35; -const TRACE_ID_VERSION = '1'; -const TRACE_ID_DELIMITER = '-'; -const TRACE_ID_DELIMITER_INDEX_1 = 1; -const TRACE_ID_DELIMITER_INDEX_2 = 10; -const TRACE_ID_FIRST_PART_LENGTH = 8; - -const PARENT_ID_KEY = 'Parent'; - -const SAMPLED_FLAG_KEY = 'Sampled'; -const IS_SAMPLED = '1'; -const NOT_SAMPLED = '0'; - -/** - * Implementation of the AWS X-Ray Trace Header propagation protocol. See AWS - * Tracing header spec - * - * An example AWS Xray Tracing Header is shown below: - * X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1 - */ -export class AWSXRayPropagator implements TextMapPropagator { - inject(context: Context, carrier: unknown, setter: TextMapSetter) { - const spanContext = trace.getSpan(context)?.spanContext(); - if (!spanContext || !isSpanContextValid(spanContext)) return; - - const otTraceId = spanContext.traceId; - const timestamp = otTraceId.substring(0, TRACE_ID_FIRST_PART_LENGTH); - const randomNumber = otTraceId.substring(TRACE_ID_FIRST_PART_LENGTH); - - const parentId = spanContext.spanId; - const samplingFlag = - (TraceFlags.SAMPLED & spanContext.traceFlags) === TraceFlags.SAMPLED - ? IS_SAMPLED - : NOT_SAMPLED; - // TODO: Add OT trace state to the X-Ray trace header - - const traceHeader = `Root=1-${timestamp}-${randomNumber};Parent=${parentId};Sampled=${samplingFlag}`; - setter.set(carrier, AWSXRAY_TRACE_ID_HEADER, traceHeader); - } - - extract(context: Context, carrier: unknown, getter: TextMapGetter): Context { - const spanContext = this.getSpanContextFromHeader(carrier, getter); - if (!isSpanContextValid(spanContext)) return context; - - return trace.setSpan(context, trace.wrapSpanContext(spanContext)); - } - - fields(): string[] { - return [AWSXRAY_TRACE_ID_HEADER]; - } - - private getSpanContextFromHeader( - carrier: unknown, - getter: TextMapGetter - ): SpanContext { - const headerKeys = getter.keys(carrier); - const relevantHeaderKey = headerKeys.find(e => { - return e.toLowerCase() === AWSXRAY_TRACE_ID_HEADER; - }); - if (!relevantHeaderKey) { - return INVALID_SPAN_CONTEXT; - } - const traceHeader = getter.get(carrier, relevantHeaderKey); - - if (!traceHeader || typeof traceHeader !== 'string') { - return INVALID_SPAN_CONTEXT; - } - - let pos = 0; - let trimmedPart: string; - let parsedTraceId = INVALID_TRACEID; - let parsedSpanId = INVALID_SPANID; - let parsedTraceFlags = null; - while (pos < traceHeader.length) { - const delimiterIndex = traceHeader.indexOf(TRACE_HEADER_DELIMITER, pos); - if (delimiterIndex >= 0) { - trimmedPart = traceHeader.substring(pos, delimiterIndex).trim(); - pos = delimiterIndex + 1; - } else { - //last part - trimmedPart = traceHeader.substring(pos).trim(); - pos = traceHeader.length; - } - const equalsIndex = trimmedPart.indexOf(KV_DELIMITER); - - const value = trimmedPart.substring(equalsIndex + 1); - - if (trimmedPart.startsWith(TRACE_ID_KEY)) { - parsedTraceId = AWSXRayPropagator._parseTraceId(value); - } else if (trimmedPart.startsWith(PARENT_ID_KEY)) { - parsedSpanId = AWSXRayPropagator._parseSpanId(value); - } else if (trimmedPart.startsWith(SAMPLED_FLAG_KEY)) { - parsedTraceFlags = AWSXRayPropagator._parseTraceFlag(value); - } - } - if (parsedTraceFlags === null) { - return INVALID_SPAN_CONTEXT; - } - const resultSpanContext: SpanContext = { - traceId: parsedTraceId, - spanId: parsedSpanId, - traceFlags: parsedTraceFlags, - isRemote: true, - }; - if (!isSpanContextValid(resultSpanContext)) { - return INVALID_SPAN_CONTEXT; - } - return resultSpanContext; - } - - private static _parseTraceId(xrayTraceId: string): string { - // Check length of trace id - if (xrayTraceId.length !== TRACE_ID_LENGTH) { - return INVALID_TRACEID; - } - - // Check version trace id version - if (!xrayTraceId.startsWith(TRACE_ID_VERSION)) { - return INVALID_TRACEID; - } - - // Check delimiters - if ( - xrayTraceId.charAt(TRACE_ID_DELIMITER_INDEX_1) !== TRACE_ID_DELIMITER || - xrayTraceId.charAt(TRACE_ID_DELIMITER_INDEX_2) !== TRACE_ID_DELIMITER - ) { - return INVALID_TRACEID; - } - - const epochPart = xrayTraceId.substring( - TRACE_ID_DELIMITER_INDEX_1 + 1, - TRACE_ID_DELIMITER_INDEX_2 - ); - const uniquePart = xrayTraceId.substring( - TRACE_ID_DELIMITER_INDEX_2 + 1, - TRACE_ID_LENGTH - ); - const resTraceId = epochPart + uniquePart; - - // Check the content of trace id - if (!isValidTraceId(resTraceId)) { - return INVALID_TRACEID; - } - - return resTraceId; - } - - private static _parseSpanId(xrayParentId: string): string { - return isValidSpanId(xrayParentId) ? xrayParentId : INVALID_SPANID; - } - - private static _parseTraceFlag(xraySampledFlag: string): TraceFlags | null { - if (xraySampledFlag === NOT_SAMPLED) { - return TraceFlags.NONE; - } - if (xraySampledFlag === IS_SAMPLED) { - return TraceFlags.SAMPLED; - } - return null; - } -} diff --git a/packages/propagator-aws-xray/src/index.ts b/packages/propagator-aws-xray/src/index.ts deleted file mode 100644 index ff6d1ed17e4..00000000000 --- a/packages/propagator-aws-xray/src/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { - AWSXRAY_TRACE_ID_HEADER, - AWSXRayPropagator, -} from './AWSXRayPropagator'; diff --git a/packages/propagator-aws-xray/test/AWSXRayPropagator.test.ts b/packages/propagator-aws-xray/test/AWSXRayPropagator.test.ts deleted file mode 100644 index 5cf47916d58..00000000000 --- a/packages/propagator-aws-xray/test/AWSXRayPropagator.test.ts +++ /dev/null @@ -1,328 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import * as assert from 'assert'; - -import { - defaultTextMapGetter, - defaultTextMapSetter, - INVALID_SPAN_CONTEXT, - ROOT_CONTEXT, - SpanContext, - TraceFlags, - trace, -} from '@opentelemetry/api'; -import { TraceState } from '@opentelemetry/core'; - -import { AWSXRAY_TRACE_ID_HEADER, AWSXRayPropagator } from '../src'; - -describe('AWSXRayPropagator', () => { - const xrayPropagator = new AWSXRayPropagator(); - const TRACE_ID = '8a3c60f7d188f8fa79d48a391a778fa6'; - const SPAN_ID = '53995c3f42cd8ad8'; - const SAMPLED_TRACE_FLAG = TraceFlags.SAMPLED; - const NOT_SAMPLED_TRACE_FLAG = TraceFlags.NONE; - - let carrier: { [key: string]: unknown }; - - beforeEach(() => { - carrier = {}; - }); - - describe('.inject()', () => { - it('should inject sampled context', () => { - const spanContext: SpanContext = { - traceId: TRACE_ID, - spanId: SPAN_ID, - traceFlags: SAMPLED_TRACE_FLAG, - }; - xrayPropagator.inject( - trace.setSpan(ROOT_CONTEXT, trace.wrapSpanContext(spanContext)), - carrier, - defaultTextMapSetter - ); - - assert.deepStrictEqual( - carrier[AWSXRAY_TRACE_ID_HEADER], - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1' - ); - }); - - it('should inject not sampled context', () => { - const spanContext: SpanContext = { - traceId: TRACE_ID, - spanId: SPAN_ID, - traceFlags: NOT_SAMPLED_TRACE_FLAG, - }; - xrayPropagator.inject( - trace.setSpan(ROOT_CONTEXT, trace.wrapSpanContext(spanContext)), - carrier, - defaultTextMapSetter - ); - - assert.deepStrictEqual( - carrier[AWSXRAY_TRACE_ID_HEADER], - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=0' - ); - }); - - it('should inject with TraceState', () => { - const traceState = new TraceState(); - traceState.set('foo', 'bar'); - const spanContext: SpanContext = { - traceId: TRACE_ID, - spanId: SPAN_ID, - traceFlags: SAMPLED_TRACE_FLAG, - traceState: traceState, - }; - xrayPropagator.inject( - trace.setSpan(ROOT_CONTEXT, trace.wrapSpanContext(spanContext)), - carrier, - defaultTextMapSetter - ); - - // TODO: assert trace state when the propagator supports it - assert.deepStrictEqual( - carrier[AWSXRAY_TRACE_ID_HEADER], - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1' - ); - }); - - it('inject without spanContext - should inject nothing', () => { - xrayPropagator.inject(ROOT_CONTEXT, carrier, defaultTextMapSetter); - - assert.deepStrictEqual(carrier, {}); - }); - - it('inject default invalid spanContext - should inject nothing', () => { - xrayPropagator.inject( - trace.setSpan( - ROOT_CONTEXT, - trace.wrapSpanContext(INVALID_SPAN_CONTEXT) - ), - carrier, - defaultTextMapSetter - ); - - assert.deepStrictEqual(carrier, {}); - }); - }); - - describe('.extract()', () => { - it('extract nothing from context', () => { - // context remains untouched - assert.strictEqual( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter), - ROOT_CONTEXT - ); - }); - - it('should extract sampled context', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, { - traceId: TRACE_ID, - spanId: SPAN_ID, - isRemote: true, - traceFlags: TraceFlags.SAMPLED, - }); - }); - - it('should extract sampled context with arbitrary order', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Parent=53995c3f42cd8ad8;Sampled=1;Root=1-8a3c60f7-d188f8fa79d48a391a778fa6'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, { - traceId: TRACE_ID, - spanId: SPAN_ID, - isRemote: true, - traceFlags: TraceFlags.SAMPLED, - }); - }); - - it('should extract context with additional fields', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1;Foo=Bar'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - // TODO: assert additional fields when the propagator supports it - assert.deepStrictEqual(extractedSpanContext, { - traceId: TRACE_ID, - spanId: SPAN_ID, - isRemote: true, - traceFlags: TraceFlags.SAMPLED, - }); - }); - - it('extract empty header value - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = ''; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid traceId - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-abcdefgh-ijklmnopabcdefghijklmnop;Parent=53995c3f42cd8ad8;Sampled=0'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid traceId size - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa600;Parent=53995c3f42cd8ad8;Sampled=0'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid traceId delimiter - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1*8a3c60f7+d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1;Foo=Bar'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid spanId - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=abcdefghijklmnop;Sampled=0'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid spanId size - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad800;Sampled=0'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid traceFlags - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled='; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid traceFlags length - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=10220'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract nonnumeric invalid traceFlags - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=a'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid aws xray version - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=2-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extracts context in a case-insensitive fashion', () => { - carrier[AWSXRAY_TRACE_ID_HEADER.toUpperCase()] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1;Foo=Bar'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, { - traceId: TRACE_ID, - spanId: SPAN_ID, - isRemote: true, - traceFlags: TraceFlags.SAMPLED, - }); - }); - - describe('.fields()', () => { - it('should return a field with AWS X-Ray Trace ID header', () => { - const expectedField = xrayPropagator.fields(); - - assert.deepStrictEqual([AWSXRAY_TRACE_ID_HEADER], expectedField); - }); - }); - }); -}); diff --git a/packages/propagator-aws-xray/test/index-webpack.ts b/packages/propagator-aws-xray/test/index-webpack.ts deleted file mode 100644 index 061a48ccfa7..00000000000 --- a/packages/propagator-aws-xray/test/index-webpack.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -const testsContext = require.context('.', true, /test$/); -testsContext.keys().forEach(testsContext); - -const srcContext = require.context('.', true, /src$/); -srcContext.keys().forEach(srcContext); diff --git a/packages/propagator-aws-xray/tsconfig.esm.json b/packages/propagator-aws-xray/tsconfig.esm.json deleted file mode 100644 index 76f5aed507c..00000000000 --- a/packages/propagator-aws-xray/tsconfig.esm.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.esm.json", - "compilerOptions": { - "outDir": "build/esm", - "rootDir": "src", - "tsBuildInfoFile": "build/esm/tsconfig.esm.tsbuildinfo" - }, - "include": [ - "src/**/*.ts" - ], - "references": [ - { - "path": "../../api" - }, - { - "path": "../opentelemetry-core" - } - ] -} diff --git a/packages/propagator-aws-xray/tsconfig.esnext.json b/packages/propagator-aws-xray/tsconfig.esnext.json deleted file mode 100644 index 4b926c1c870..00000000000 --- a/packages/propagator-aws-xray/tsconfig.esnext.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.esnext.json", - "compilerOptions": { - "outDir": "build/esnext", - "rootDir": "src", - "tsBuildInfoFile": "build/esnext/tsconfig.esnext.tsbuildinfo" - }, - "include": [ - "src/**/*.ts" - ], - "references": [ - { - "path": "../../api" - }, - { - "path": "../opentelemetry-core" - } - ] -} diff --git a/packages/propagator-aws-xray/tsconfig.json b/packages/propagator-aws-xray/tsconfig.json deleted file mode 100644 index b9bcaf0434c..00000000000 --- a/packages/propagator-aws-xray/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "build", - "rootDir": "." - }, - "include": [ - "src/**/*.ts", - "test/**/*.ts" - ], - "references": [ - { - "path": "../../api" - }, - { - "path": "../opentelemetry-core" - } - ] -} diff --git a/tsconfig.esm.json b/tsconfig.esm.json index 07de4a68c5a..542b921755d 100644 --- a/tsconfig.esm.json +++ b/tsconfig.esm.json @@ -47,9 +47,6 @@ { "path": "experimental/packages/otlp-transformer/tsconfig.esm.json" }, - { - "path": "experimental/packages/propagator-aws-xray-lambda/tsconfig.esm.json" - }, { "path": "experimental/packages/sdk-events/tsconfig.esm.json" }, @@ -83,9 +80,6 @@ { "path": "packages/opentelemetry-sdk-trace-web/tsconfig.esm.json" }, - { - "path": "packages/propagator-aws-xray/tsconfig.esm.json" - }, { "path": "packages/sdk-metrics/tsconfig.esm.json" }, diff --git a/tsconfig.esnext.json b/tsconfig.esnext.json index 2a5c7584bf9..c82c8e5831a 100644 --- a/tsconfig.esnext.json +++ b/tsconfig.esnext.json @@ -47,9 +47,6 @@ { "path": "experimental/packages/otlp-transformer/tsconfig.esnext.json" }, - { - "path": "experimental/packages/propagator-aws-xray-lambda/tsconfig.esnext.json" - }, { "path": "experimental/packages/sdk-events/tsconfig.esnext.json" }, @@ -83,9 +80,6 @@ { "path": "packages/opentelemetry-sdk-trace-web/tsconfig.esnext.json" }, - { - "path": "packages/propagator-aws-xray/tsconfig.esnext.json" - }, { "path": "packages/sdk-metrics/tsconfig.esnext.json" }, diff --git a/tsconfig.json b/tsconfig.json index eaada3447e9..113cfd1a148 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -27,7 +27,6 @@ "experimental/packages/otlp-exporter-base", "experimental/packages/otlp-grpc-exporter-base", "experimental/packages/otlp-transformer", - "experimental/packages/propagator-aws-xray-lambda", "experimental/packages/sampler-jaeger-remote", "experimental/packages/sdk-events", "experimental/packages/sdk-logs", @@ -45,7 +44,6 @@ "packages/opentelemetry-sdk-trace-node", "packages/opentelemetry-sdk-trace-web", "packages/opentelemetry-shim-opentracing", - "packages/propagator-aws-xray", "packages/sdk-metrics", "semantic-conventions" ], @@ -129,9 +127,6 @@ { "path": "experimental/packages/otlp-transformer" }, - { - "path": "experimental/packages/propagator-aws-xray-lambda" - }, { "path": "experimental/packages/sampler-jaeger-remote" }, @@ -183,9 +178,6 @@ { "path": "packages/opentelemetry-shim-opentracing" }, - { - "path": "packages/propagator-aws-xray" - }, { "path": "packages/sdk-metrics" },