summaryrefslogtreecommitdiff
path: root/packages/core/src/telemetry
diff options
context:
space:
mode:
authorN. Taylor Mullen <[email protected]>2025-06-15 22:41:32 -0700
committerGitHub <[email protected]>2025-06-15 22:41:32 -0700
commit197704c630cbf85aa4d113c7a62e305827043910 (patch)
treecf5db2e0894f6bbab5998fb93e2593fdb97b6699 /packages/core/src/telemetry
parentf00b9f27278f4cdfe7c863138212ec489db3e5d9 (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.ts72
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();
+ });
+});