Added active experiment ids to Clearcut log events (#12745)

This commit is contained in:
owenofbrien
2025-11-10 11:21:49 -06:00
committed by GitHub
parent 4ef4bd6f09
commit 3f90001f83
2 changed files with 39 additions and 1 deletions

View File

@@ -42,6 +42,7 @@ interface CustomMatchers<R = unknown> {
toHaveMetadataValue: ([key, value]: [EventMetadataKey, string]) => R;
toHaveEventName: (name: EventNames) => R;
toHaveMetadataKey: (key: EventMetadataKey) => R;
toHaveGwsExperiments: (exps: number[]) => R;
}
declare module 'vitest' {
@@ -92,6 +93,21 @@ expect.extend({
`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');
@@ -133,7 +149,11 @@ describe('ClearcutLogger', () => {
});
function setup({
config = {} as Partial<ConfigParameters>,
config = {
experiments: {
experimentIds: [123, 456, 789],
},
} as unknown as Partial<ConfigParameters>,
lifetimeGoogleAccounts = 1,
cachedGoogleAccount = 'test@google.com',
} = {}) {
@@ -564,6 +584,7 @@ describe('ClearcutLogger', () => {
{
event_time_ms: Date.now(),
source_extension_json: JSON.stringify({ event_id: i }),
gws_experiment: [],
},
]);
}
@@ -597,6 +618,7 @@ describe('ClearcutLogger', () => {
{
event_time_ms: Date.now(),
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', () => {
it('logs an event with proper fields (success)', () => {
const { logger } = setup();

View File

@@ -101,6 +101,7 @@ export interface LogResponse {
export interface LogEventEntry {
event_time_ms: number;
source_extension_json: string;
gws_experiment: number[];
}
export interface EventValue {
@@ -236,6 +237,7 @@ export class ClearcutLogger {
{
event_time_ms: Date.now(),
source_extension_json: safeJsonStringify(event),
gws_experiment: this.config?.getExperiments()?.experimentIds ?? [],
},
]);