From 7cc6b8c270a67803f9387eeead0d3d7ac914303a Mon Sep 17 00:00:00 2001 From: Richie Foreman Date: Tue, 12 Aug 2025 14:31:59 -0400 Subject: chore(usage telemetry): Freshen up Clearcut logging (#6013) Co-authored-by: christine betts Co-authored-by: Jacob Richman Co-authored-by: matt korwel --- packages/core/src/config/config.test.ts | 42 ++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'packages/core/src/config/config.test.ts') diff --git a/packages/core/src/config/config.test.ts b/packages/core/src/config/config.test.ts index 8e6ca38f..6c57d058 100644 --- a/packages/core/src/config/config.test.ts +++ b/packages/core/src/config/config.test.ts @@ -4,7 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { describe, it, expect, vi, beforeEach, Mock } from 'vitest'; +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { Mock } from 'vitest'; import { Config, ConfigParameters, SandboxConfig } from './config.js'; import * as path from 'path'; import { setGeminiMdFilename as mockSetGeminiMdFilename } from '../tools/memoryTool.js'; @@ -18,6 +19,7 @@ import { } from '../core/contentGenerator.js'; import { GeminiClient } from '../core/client.js'; import { GitService } from '../services/gitService.js'; +import { ClearcutLogger } from '../telemetry/clearcut-logger/clearcut-logger.js'; vi.mock('fs', async (importOriginal) => { const actual = await importOriginal(); @@ -119,11 +121,16 @@ describe('Server Config (config.ts)', () => { telemetry: TELEMETRY_SETTINGS, sessionId: SESSION_ID, model: MODEL, + usageStatisticsEnabled: false, }; beforeEach(() => { // Reset mocks if necessary vi.clearAllMocks(); + vi.spyOn( + ClearcutLogger.prototype, + 'logStartSessionEvent', + ).mockImplementation(() => undefined); }); describe('initialize', () => { @@ -372,6 +379,39 @@ describe('Server Config (config.ts)', () => { expect(fileService).toBeDefined(); }); + describe('Usage Statistics', () => { + it('defaults usage statistics to enabled if not specified', () => { + const config = new Config({ + ...baseParams, + usageStatisticsEnabled: undefined, + }); + + expect(config.getUsageStatisticsEnabled()).toBe(true); + }); + + it.each([{ enabled: true }, { enabled: false }])( + 'sets usage statistics based on the provided value (enabled: $enabled)', + ({ enabled }) => { + const config = new Config({ + ...baseParams, + usageStatisticsEnabled: enabled, + }); + expect(config.getUsageStatisticsEnabled()).toBe(enabled); + }, + ); + + it('logs the session start event', () => { + new Config({ + ...baseParams, + usageStatisticsEnabled: true, + }); + + expect( + ClearcutLogger.prototype.logStartSessionEvent, + ).toHaveBeenCalledOnce(); + }); + }); + describe('Telemetry Settings', () => { it('should return default telemetry target if not provided', () => { const params: ConfigParameters = { -- cgit v1.2.3