feat(telemetry): Ensure experiment IDs are included in OpenTelemetry logs (#18747)

This commit is contained in:
Kevin Ramdass
2026-02-10 13:01:35 -08:00
committed by GitHub
parent 8b762111a8
commit a2174751de
5 changed files with 90 additions and 14 deletions
+51 -2
View File
@@ -187,7 +187,7 @@ describe('loggers', () => {
});
describe('logCliConfiguration', () => {
it('should log the cli configuration', () => {
it('should log the cli configuration', async () => {
const mockConfig = {
getSessionId: () => 'test-session-id',
getModel: () => 'test-model',
@@ -226,11 +226,14 @@ describe('loggers', () => {
}),
}),
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as unknown as Config;
const startSessionEvent = new StartSessionEvent(mockConfig);
logCliConfiguration(mockConfig, startSessionEvent);
await new Promise(process.nextTick);
expect(mockLogger.emit).toHaveBeenCalledWith({
body: 'CLI configuration loaded.',
attributes: {
@@ -271,6 +274,8 @@ describe('loggers', () => {
getTelemetryLogPromptsEnabled: () => true,
getUsageStatisticsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as unknown as Config;
it('should log a user prompt', () => {
@@ -308,6 +313,8 @@ describe('loggers', () => {
getTargetDir: () => 'target-dir',
getUsageStatisticsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as unknown as Config;
const event = new UserPromptEvent(
11,
@@ -343,6 +350,8 @@ describe('loggers', () => {
getTelemetryEnabled: () => true,
getTelemetryLogPromptsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as Config;
const mockMetrics = {
@@ -519,6 +528,8 @@ describe('loggers', () => {
getTelemetryEnabled: () => true,
getTelemetryLogPromptsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as Config;
const mockMetrics = {
@@ -651,6 +662,8 @@ describe('loggers', () => {
getTelemetryEnabled: () => true,
getTelemetryLogPromptsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
getContentGeneratorConfig: () => ({
authType: AuthType.LOGIN_WITH_GOOGLE,
}),
@@ -727,6 +740,8 @@ describe('loggers', () => {
getTelemetryEnabled: () => true,
getTelemetryLogPromptsEnabled: () => true, // Enabled
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
getContentGeneratorConfig: () => ({
authType: AuthType.USE_GEMINI,
}),
@@ -814,6 +829,8 @@ describe('loggers', () => {
getTelemetryEnabled: () => true,
getTelemetryLogPromptsEnabled: () => false, // Disabled
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
getContentGeneratorConfig: () => ({
authType: AuthType.USE_VERTEX_AI,
}),
@@ -867,6 +884,8 @@ describe('loggers', () => {
getTelemetryEnabled: () => true,
getTelemetryLogPromptsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
getUsageStatisticsEnabled: () => true,
getContentGeneratorConfig: () => ({
authType: AuthType.USE_GEMINI,
@@ -903,6 +922,8 @@ describe('loggers', () => {
getSessionId: () => 'test-session-id',
getUsageStatisticsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as unknown as Config;
it('should log flash fallback event', () => {
@@ -930,6 +951,8 @@ describe('loggers', () => {
getSessionId: () => 'test-session-id',
getUsageStatisticsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as unknown as Config;
beforeEach(() => {
@@ -1024,6 +1047,8 @@ describe('loggers', () => {
getTelemetryEnabled: () => true,
getTelemetryLogPromptsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as Config;
const mockMetrics = {
@@ -1595,6 +1620,8 @@ describe('loggers', () => {
getTelemetryEnabled: () => true,
getTelemetryLogPromptsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as Config;
const mockMetrics = {
@@ -1655,6 +1682,8 @@ describe('loggers', () => {
getSessionId: () => 'test-session-id',
getUsageStatisticsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as unknown as Config;
it('should log a tool output truncated event', () => {
@@ -1692,6 +1721,8 @@ describe('loggers', () => {
getSessionId: () => 'test-session-id',
getUsageStatisticsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as unknown as Config;
beforeEach(() => {
@@ -1792,6 +1823,8 @@ describe('loggers', () => {
getUsageStatisticsEnabled: () => true,
getContentGeneratorConfig: () => null,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as unknown as Config;
beforeEach(() => {
@@ -1842,6 +1875,8 @@ describe('loggers', () => {
getUsageStatisticsEnabled: () => true,
getContentGeneratorConfig: () => null,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as unknown as Config;
beforeEach(() => {
@@ -1894,6 +1929,8 @@ describe('loggers', () => {
getUsageStatisticsEnabled: () => true,
getContentGeneratorConfig: () => null,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as unknown as Config;
beforeEach(() => {
@@ -1938,6 +1975,8 @@ describe('loggers', () => {
getSessionId: () => 'test-session-id',
getUsageStatisticsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as unknown as Config;
beforeEach(() => {
@@ -1983,6 +2022,8 @@ describe('loggers', () => {
getSessionId: () => 'test-session-id',
getUsageStatisticsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as unknown as Config;
beforeEach(() => {
@@ -2028,6 +2069,8 @@ describe('loggers', () => {
getSessionId: () => 'test-session-id',
getUsageStatisticsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as unknown as Config;
beforeEach(() => {
@@ -2064,6 +2107,8 @@ describe('loggers', () => {
getSessionId: () => 'test-session-id',
getUsageStatisticsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as unknown as Config;
beforeEach(() => {
@@ -2115,6 +2160,8 @@ describe('loggers', () => {
getSessionId: () => 'test-session-id',
getUsageStatisticsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
} as unknown as Config;
beforeEach(() => {
@@ -2150,6 +2197,8 @@ describe('loggers', () => {
getSessionId: () => 'test-session-id',
getUsageStatisticsEnabled: () => true,
isInteractive: () => false,
getExperiments: () => undefined,
getExperimentsAsync: async () => undefined,
getTelemetryLogPromptsEnabled: () => false,
} as unknown as Config;
@@ -2205,7 +2254,7 @@ describe('loggers', () => {
});
describe('Telemetry Buffering', () => {
it('should buffer events when SDK is not initialized', () => {
it('should buffer events when SDK is not initialized', async () => {
vi.spyOn(sdk, 'isTelemetrySdkInitialized').mockReturnValue(false);
const bufferSpy = vi
.spyOn(sdk, 'bufferTelemetryEvent')