e115934061
Publish `@librechat/data-schemas` to NPM / pack (push) Failing after 8s
Publish `@librechat/client` to NPM / pack (push) Failing after 0s
GitNexus Index / index (push) Failing after 1s
Sync Locize Translations & Create Translation PR / Create Translation PR on Version Published (push) Has been skipped
Sync Helm Chart Tags / Sync chart tags (push) Failing after 2s
Publish `librechat-data-provider` to NPM / pack (push) Failing after 1s
Docker Dev Images Build / build (Dockerfile, librechat-dev, node) (push) Failing after 1s
Docker Dev Images Build / build (Dockerfile.multi, librechat-dev-api, api-build) (push) Failing after 0s
Sync Helm Chart Tags / Ignore non-main push (push) Has been skipped
Sync Locize Translations & Create Translation PR / Sync Translation Keys with Locize (push) Failing after 1s
Publish `@librechat/client` to NPM / publish-npm (push) Has been cancelled
Publish `librechat-data-provider` to NPM / publish-npm (push) Has been cancelled
GitNexus Index / post-index (push) Has been cancelled
Publish `@librechat/data-schemas` to NPM / publish-npm (push) Has been cancelled
92 lines
2.5 KiB
JavaScript
92 lines
2.5 KiB
JavaScript
describe('telemetry bootstrap', () => {
|
|
const originalEnv = process.env;
|
|
|
|
beforeEach(() => {
|
|
jest.resetModules();
|
|
process.env = { ...originalEnv };
|
|
delete process.env.OTEL_SDK_DISABLED;
|
|
delete process.env.OTEL_TRACING_ENABLED;
|
|
jest.doMock('dotenv', () => ({
|
|
config: jest.fn(),
|
|
}));
|
|
});
|
|
|
|
afterEach(() => {
|
|
process.env = originalEnv;
|
|
jest.dontMock('dotenv');
|
|
jest.dontMock('@librechat/api/telemetry');
|
|
jest.resetModules();
|
|
});
|
|
|
|
it('does not load OpenTelemetry packages by default', () => {
|
|
jest.doMock(
|
|
'@librechat/api/telemetry',
|
|
() => {
|
|
throw new Error('telemetry package should not load when tracing is disabled');
|
|
},
|
|
{ virtual: true },
|
|
);
|
|
|
|
const telemetry = require('./telemetry');
|
|
|
|
expect(telemetry.enabled).toBe(false);
|
|
expect(telemetry.status).toBe('disabled');
|
|
});
|
|
|
|
it('does not load OpenTelemetry packages when the SDK is disabled', () => {
|
|
process.env.OTEL_SDK_DISABLED = 'true';
|
|
process.env.OTEL_TRACING_ENABLED = 'true';
|
|
jest.doMock(
|
|
'@librechat/api/telemetry',
|
|
() => {
|
|
throw new Error('telemetry package should not load when the SDK is disabled');
|
|
},
|
|
{ virtual: true },
|
|
);
|
|
|
|
const telemetry = require('./telemetry');
|
|
|
|
expect(telemetry.enabled).toBe(false);
|
|
expect(telemetry.status).toBe('disabled');
|
|
});
|
|
|
|
it('loads and exposes telemetry middleware when tracing is enabled', () => {
|
|
process.env.OTEL_TRACING_ENABLED = 'true';
|
|
let enabled = true;
|
|
let status = 'starting';
|
|
const telemetryMiddleware = jest.fn();
|
|
const telemetryErrorMiddleware = jest.fn();
|
|
const initializeTelemetry = jest.fn(() => ({
|
|
get enabled() {
|
|
return enabled;
|
|
},
|
|
get status() {
|
|
return status;
|
|
},
|
|
shutdown: jest.fn(),
|
|
}));
|
|
jest.doMock(
|
|
'@librechat/api/telemetry',
|
|
() => ({
|
|
initializeTelemetry,
|
|
telemetryMiddleware,
|
|
telemetryErrorMiddleware,
|
|
}),
|
|
{ virtual: true },
|
|
);
|
|
|
|
const telemetry = require('./telemetry');
|
|
|
|
expect(initializeTelemetry).toHaveBeenCalledTimes(1);
|
|
expect(telemetry.enabled).toBe(true);
|
|
expect(telemetry.status).toBe('starting');
|
|
expect(telemetry.telemetryMiddleware).toBe(telemetryMiddleware);
|
|
expect(telemetry.telemetryErrorMiddleware).toBe(telemetryErrorMiddleware);
|
|
|
|
enabled = false;
|
|
status = 'failed';
|
|
expect(telemetry.enabled).toBe(false);
|
|
expect(telemetry.status).toBe('failed');
|
|
});
|
|
});
|