mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-12 12:54:07 -07:00
Added active experiment ids to Clearcut log events (#12745)
This commit is contained in:
@@ -42,6 +42,7 @@ interface CustomMatchers<R = unknown> {
|
|||||||
toHaveMetadataValue: ([key, value]: [EventMetadataKey, string]) => R;
|
toHaveMetadataValue: ([key, value]: [EventMetadataKey, string]) => R;
|
||||||
toHaveEventName: (name: EventNames) => R;
|
toHaveEventName: (name: EventNames) => R;
|
||||||
toHaveMetadataKey: (key: EventMetadataKey) => R;
|
toHaveMetadataKey: (key: EventMetadataKey) => R;
|
||||||
|
toHaveGwsExperiments: (exps: number[]) => R;
|
||||||
}
|
}
|
||||||
|
|
||||||
declare module 'vitest' {
|
declare module 'vitest' {
|
||||||
@@ -92,6 +93,21 @@ expect.extend({
|
|||||||
`event ${received} ${isNot ? 'has' : 'does not have'} the metadata key ${key}`,
|
`event ${received} ${isNot ? 'has' : 'does not have'} the metadata key ${key}`,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
toHaveGwsExperiments(received: LogEventEntry[], expected_exps: number[]) {
|
||||||
|
const { isNot } = this;
|
||||||
|
const exps = received[0].gws_experiment;
|
||||||
|
|
||||||
|
const pass =
|
||||||
|
exps.length === expected_exps.length &&
|
||||||
|
exps.every((value, index) => value === expected_exps[index]);
|
||||||
|
|
||||||
|
return {
|
||||||
|
pass,
|
||||||
|
message: () =>
|
||||||
|
`event ${received} ${isNot ? 'has' : 'does not have'} expected exp ids: ${expected_exps.join(',')}`,
|
||||||
|
};
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
vi.mock('../../utils/userAccountManager.js');
|
vi.mock('../../utils/userAccountManager.js');
|
||||||
@@ -133,7 +149,11 @@ describe('ClearcutLogger', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
function setup({
|
function setup({
|
||||||
config = {} as Partial<ConfigParameters>,
|
config = {
|
||||||
|
experiments: {
|
||||||
|
experimentIds: [123, 456, 789],
|
||||||
|
},
|
||||||
|
} as unknown as Partial<ConfigParameters>,
|
||||||
lifetimeGoogleAccounts = 1,
|
lifetimeGoogleAccounts = 1,
|
||||||
cachedGoogleAccount = 'test@google.com',
|
cachedGoogleAccount = 'test@google.com',
|
||||||
} = {}) {
|
} = {}) {
|
||||||
@@ -564,6 +584,7 @@ describe('ClearcutLogger', () => {
|
|||||||
{
|
{
|
||||||
event_time_ms: Date.now(),
|
event_time_ms: Date.now(),
|
||||||
source_extension_json: JSON.stringify({ event_id: i }),
|
source_extension_json: JSON.stringify({ event_id: i }),
|
||||||
|
gws_experiment: [],
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@@ -597,6 +618,7 @@ describe('ClearcutLogger', () => {
|
|||||||
{
|
{
|
||||||
event_time_ms: Date.now(),
|
event_time_ms: Date.now(),
|
||||||
source_extension_json: JSON.stringify({ event_id: `failed_${i}` }),
|
source_extension_json: JSON.stringify({ event_id: `failed_${i}` }),
|
||||||
|
gws_experiment: [],
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@@ -713,6 +735,20 @@ describe('ClearcutLogger', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('logExperiments', () => {
|
||||||
|
it('logs an event with gws_experiment field containing exp ids', () => {
|
||||||
|
const { logger } = setup();
|
||||||
|
const event = new AgentStartEvent('agent-123', 'TestAgent');
|
||||||
|
|
||||||
|
logger?.logAgentStartEvent(event);
|
||||||
|
|
||||||
|
const events = getEvents(logger!);
|
||||||
|
expect(events.length).toBe(1);
|
||||||
|
expect(events[0]).toHaveEventName(EventNames.AGENT_START);
|
||||||
|
expect(events[0]).toHaveGwsExperiments([123, 456, 789]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('logAgentFinishEvent', () => {
|
describe('logAgentFinishEvent', () => {
|
||||||
it('logs an event with proper fields (success)', () => {
|
it('logs an event with proper fields (success)', () => {
|
||||||
const { logger } = setup();
|
const { logger } = setup();
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ export interface LogResponse {
|
|||||||
export interface LogEventEntry {
|
export interface LogEventEntry {
|
||||||
event_time_ms: number;
|
event_time_ms: number;
|
||||||
source_extension_json: string;
|
source_extension_json: string;
|
||||||
|
gws_experiment: number[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface EventValue {
|
export interface EventValue {
|
||||||
@@ -236,6 +237,7 @@ export class ClearcutLogger {
|
|||||||
{
|
{
|
||||||
event_time_ms: Date.now(),
|
event_time_ms: Date.now(),
|
||||||
source_extension_json: safeJsonStringify(event),
|
source_extension_json: safeJsonStringify(event),
|
||||||
|
gws_experiment: this.config?.getExperiments()?.experimentIds ?? [],
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user