From 99f03bf364c0db7d3b76adcbb2fad6416239992b Mon Sep 17 00:00:00 2001 From: Lee James <40045512+leehagoodjames@users.noreply.github.com> Date: Wed, 20 Aug 2025 10:33:25 -0400 Subject: [PATCH] test(logging): Add tests for default log fields (#6583) --- .../clearcut-logger/clearcut-logger.test.ts | 66 ++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.test.ts b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.test.ts index df855418..b2636408 100644 --- a/packages/core/src/telemetry/clearcut-logger/clearcut-logger.test.ts +++ b/packages/core/src/telemetry/clearcut-logger/clearcut-logger.test.ts @@ -21,12 +21,17 @@ import { EventNames, TEST_ONLY, } from './clearcut-logger.js'; +import { + AuthType, + ContentGeneratorConfig, +} from '../../core/contentGenerator.js'; import { ConfigParameters } from '../../config/config.js'; import { EventMetadataKey } from './event-metadata-key.js'; import { makeFakeConfig } from '../../test-utils/config.js'; import { http, HttpResponse } from 'msw'; import { server } from '../../mocks/msw.js'; -import { makeChatCompressionEvent } from '../types.js'; +import { UserPromptEvent, makeChatCompressionEvent } from '../types.js'; +import { GIT_COMMIT_INFO, CLI_VERSION } from '../../generated/git-commit.js'; import { UserAccountManager } from '../../utils/userAccountManager.js'; import { InstallationManager } from '../../utils/installationManager.js'; @@ -201,6 +206,65 @@ describe('ClearcutLogger', () => { }); }); + it('logs default metadata', () => { + // Define expected values + const session_id = 'my-session-id'; + const auth_type = AuthType.USE_GEMINI; + const google_accounts = 123; + const surface = 'ide-1234'; + const cli_version = CLI_VERSION; + const git_commit_hash = GIT_COMMIT_INFO; + const prompt_id = 'my-prompt-123'; + + // Setup logger with expected values + const { logger, loggerConfig } = setup({ + lifetimeGoogleAccounts: google_accounts, + config: { sessionId: session_id }, + }); + vi.spyOn(loggerConfig, 'getContentGeneratorConfig').mockReturnValue({ + authType: auth_type, + } as ContentGeneratorConfig); + logger?.logNewPromptEvent(new UserPromptEvent(1, prompt_id)); // prompt_id == session_id before this + vi.stubEnv('SURFACE', surface); + + // Create log event + const event = logger?.createLogEvent(EventNames.API_ERROR, []); + + // Ensure expected values exist + expect(event?.event_metadata[0]).toEqual( + expect.arrayContaining([ + { + gemini_cli_key: EventMetadataKey.GEMINI_CLI_SESSION_ID, + value: session_id, + }, + { + gemini_cli_key: EventMetadataKey.GEMINI_CLI_AUTH_TYPE, + value: JSON.stringify(auth_type), + }, + { + gemini_cli_key: EventMetadataKey.GEMINI_CLI_GOOGLE_ACCOUNTS_COUNT, + value: `${google_accounts}`, + }, + { + gemini_cli_key: EventMetadataKey.GEMINI_CLI_SURFACE, + value: surface, + }, + { + gemini_cli_key: EventMetadataKey.GEMINI_CLI_VERSION, + value: cli_version, + }, + { + gemini_cli_key: EventMetadataKey.GEMINI_CLI_GIT_COMMIT_HASH, + value: git_commit_hash, + }, + { + gemini_cli_key: EventMetadataKey.GEMINI_CLI_PROMPT_ID, + value: prompt_id, + }, + ]), + ); + }); + it('logs the current surface', () => { const { logger } = setup({});