Skip to content

Commit

Permalink
Merge pull request #4336 from dyladan/test-20
Browse files Browse the repository at this point in the history
Add node 20 to test matrix
  • Loading branch information
dyladan authored Dec 1, 2023
2 parents 593d220 + 1447ad5 commit 6dd075c
Show file tree
Hide file tree
Showing 14 changed files with 67 additions and 77 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/unit-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ jobs:
- "14"
- "16"
- "18"
- "20"
runs-on: ubuntu-latest
env:
NPM_CONFIG_UNSAFE_PERM: true
Expand Down Expand Up @@ -42,7 +43,7 @@ jobs:
- name: Unit tests
run: |
# TODO(legendecas): webpack https://stackoverflow.com/questions/69692842/error-message-error0308010cdigital-envelope-routinesunsupported
if [ "${{ matrix.node_version }}" = "18" ]; then
if [ "${{ matrix.node_version }}" = "18" ] || [ "${{ matrix.node_version }}" == "20" ]; then
export NODE_OPTIONS=--openssl-legacy-provider
fi
npm run test
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ For experimental package changes, see the [experimental CHANGELOG](experimental/

* chore: type reference on zone.js [#4257](https://github.com/open-telemetry/opentelemetry-js/pull/4257) @legendecas
* chore: no need for 'packages' in lerna.json [#4264](https://github.com/open-telemetry/opentelemetry-js/pull/4264) @trentm
* test: add node 20 to test matrix [#4336](https://github.com/open-telemetry/opentelemetry-js/pull/4336) @dyladan

### :bug: (Bug Fix)

Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ If you are a library author looking to build OpenTelemetry into your library, pl

| Platform Version | Supported |
|---------------------|-----------------------------------------------|
| Node.JS `v20` | :heavy_check_mark: |
| Node.JS `v18` | :heavy_check_mark: |
| Node.JS `v16` | :heavy_check_mark: |
| Node.JS `v14` | :heavy_check_mark: |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -360,8 +360,8 @@ describe('PrometheusExporter', () => {
.get('http://localhost:9464/metrics', res => {
errorHandler(done)(new Error('unreachable'));
})
.on('error', err => {
assert(`${err}`.match('ECONNREFUSED'));
.on('error', (err: any) => {
assert.equal(err.code, 'ECONNREFUSED');
done();
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@
*/

export * from './autoLoader';
export * from './platform/index';
export { InstrumentationBase } from './platform/index';
export { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition';
export { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile';
export * from './types';
export * from './types_internal';
export * from './utils';
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,19 @@ import {
TracerProvider,
} from '@opentelemetry/api';
import * as shimmer from 'shimmer';
import { InstrumentationModuleDefinition } from './platform/node';
import * as types from './types';
import {
InstrumentationModuleDefinition,
Instrumentation,
InstrumentationConfig,
} from './types';

/**
* Base abstract internal class for instrumenting node and web plugins
*/
export abstract class InstrumentationAbstract<T = any>
implements types.Instrumentation
implements Instrumentation
{
protected _config: types.InstrumentationConfig;
protected _config: InstrumentationConfig;

private _tracer: Tracer;
private _meter: Meter;
Expand All @@ -43,7 +46,7 @@ export abstract class InstrumentationAbstract<T = any>
constructor(
public readonly instrumentationName: string,
public readonly instrumentationVersion: string,
config: types.InstrumentationConfig = {}
config: InstrumentationConfig = {}
) {
this._config = {
enabled: true,
Expand Down Expand Up @@ -95,15 +98,15 @@ export abstract class InstrumentationAbstract<T = any>
}

/* Returns InstrumentationConfig */
public getConfig(): types.InstrumentationConfig {
public getConfig(): InstrumentationConfig {
return this._config;
}

/**
* Sets InstrumentationConfig to this plugin
* @param InstrumentationConfig
*/
public setConfig(config: types.InstrumentationConfig = {}): void {
public setConfig(config: InstrumentationConfig = {}): void {
this._config = Object.assign({}, config);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@
* limitations under the License.
*/

export * from './instrumentation';
export { InstrumentationBase } from './instrumentation';
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@
* limitations under the License.
*/

export * from './node';
export { InstrumentationBase } from './node';
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,4 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export * from './instrumentation';
export * from './instrumentationNodeModuleDefinition';
export * from './instrumentationNodeModuleFile';
export * from './types';
export { InstrumentationBase } from './instrumentation';
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import {
} from './RequireInTheMiddleSingleton';
import type { HookFn } from 'import-in-the-middle';
import * as ImportInTheMiddle from 'import-in-the-middle';
import { InstrumentationModuleDefinition } from './types';
import { InstrumentationModuleDefinition } from '../../types';
import { diag } from '@opentelemetry/api';
import type { OnRequireFn } from 'require-in-the-middle';
import { Hook } from 'require-in-the-middle';
Expand Down

This file was deleted.

44 changes: 44 additions & 0 deletions experimental/packages/opentelemetry-instrumentation/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,47 @@ export interface ShimWrapped extends Function {
// eslint-disable-next-line @typescript-eslint/ban-types
__original: Function;
}

export interface InstrumentationModuleFile<T> {
/** Name of file to be patched with relative path */
name: string;

moduleExports?: T;

/** Supported version this file */
supportedVersions: string[];

/** Method to patch the instrumentation */
patch(moduleExports: T, moduleVersion?: string): T;

/** Method to patch the instrumentation */

/** Method to unpatch the instrumentation */
unpatch(moduleExports?: T, moduleVersion?: string): void;
}

export interface InstrumentationModuleDefinition<T> {
/** Module name or path */
name: string;

moduleExports?: T;

/** Instrumented module version */
moduleVersion?: string;

/** Supported version of module */
supportedVersions: string[];

/** Module internal files to be patched */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
files: InstrumentationModuleFile<any>[];

/** If set to true, the includePrerelease check will be included when calling semver.satisfies */
includePrerelease?: boolean;

/** Method to patch the instrumentation */
patch?: (moduleExports: T, moduleVersion?: string) => T;

/** Method to unpatch the instrumentation */
unpatch?: (moduleExports: T, moduleVersion?: string) => void;
}

0 comments on commit 6dd075c

Please sign in to comment.