diff options
| author | N. Taylor Mullen <[email protected]> | 2025-06-15 22:41:32 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-06-15 22:41:32 -0700 |
| commit | 197704c630cbf85aa4d113c7a62e305827043910 (patch) | |
| tree | cf5db2e0894f6bbab5998fb93e2593fdb97b6699 /packages/core/src/telemetry | |
| parent | f00b9f27278f4cdfe7c863138212ec489db3e5d9 (diff) | |
feat(test): Increase test coverage across CLI and Core packages (#1089)
Diffstat (limited to 'packages/core/src/telemetry')
| -rw-r--r-- | packages/core/src/telemetry/telemetry.test.ts | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/packages/core/src/telemetry/telemetry.test.ts b/packages/core/src/telemetry/telemetry.test.ts new file mode 100644 index 00000000..7cd6f95f --- /dev/null +++ b/packages/core/src/telemetry/telemetry.test.ts @@ -0,0 +1,72 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import { + initializeTelemetry, + shutdownTelemetry, + isTelemetrySdkInitialized, +} from './sdk.js'; +import { Config } from '../config/config.js'; +import { NodeSDK } from '@opentelemetry/sdk-node'; +import * as loggers from './loggers.js'; + +vi.mock('@opentelemetry/sdk-node'); +vi.mock('../config/config.js'); +vi.mock('./loggers.js'); + +describe('telemetry', () => { + let mockConfig: Config; + let mockNodeSdk: NodeSDK; + + beforeEach(() => { + vi.resetAllMocks(); + + mockConfig = new Config({ + sessionId: 'test-session-id', + contentGeneratorConfig: { + model: 'test-model', + }, + targetDir: '/test/dir', + debugMode: false, + cwd: '/test/dir', + }); + vi.spyOn(mockConfig, 'getTelemetryEnabled').mockReturnValue(true); + vi.spyOn(mockConfig, 'getTelemetryOtlpEndpoint').mockReturnValue( + 'http://localhost:4317', + ); + vi.spyOn(mockConfig, 'getSessionId').mockReturnValue('test-session-id'); + vi.spyOn(loggers, 'logCliConfiguration').mockImplementation(() => {}); + + mockNodeSdk = { + start: vi.fn(), + shutdown: vi.fn().mockResolvedValue(undefined), + } as unknown as NodeSDK; + vi.mocked(NodeSDK).mockImplementation(() => mockNodeSdk); + }); + + afterEach(async () => { + // Ensure we shut down telemetry even if a test fails. + if (isTelemetrySdkInitialized()) { + await shutdownTelemetry(); + } + }); + + it('should initialize the telemetry service', () => { + initializeTelemetry(mockConfig); + + expect(NodeSDK).toHaveBeenCalled(); + expect(mockNodeSdk.start).toHaveBeenCalled(); + expect(loggers.logCliConfiguration).toHaveBeenCalledWith(mockConfig); + }); + + it('should shutdown the telemetry service', async () => { + initializeTelemetry(mockConfig); + await shutdownTelemetry(); + + expect(mockNodeSdk.shutdown).toHaveBeenCalled(); + }); +}); |
