Skip to content

Commit f2facec

Browse files
authored
Polish perf event names (#659)
1 parent e246a65 commit f2facec

File tree

7 files changed

+170
-123
lines changed

7 files changed

+170
-123
lines changed

src/analytics.test.ts

Lines changed: 112 additions & 84 deletions
Large diffs are not rendered by default.

src/analytics.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -178,18 +178,21 @@ export async function featureFlagClientInitializedEvent(
178178

179179
// Perf events
180180

181+
// perf events name are constructed in the format:
182+
// <ui|core|api> . <product> . <action> . <subAction> . <perf-marker>
183+
181184
type RovoDevPerfEvents =
182-
| 'rovodev.response.timeToFirstByte'
183-
| 'rovodev.response.timeToFirstMessage'
184-
| 'rovodev.response.timeToTechPlan'
185-
| 'rovodev.response.timeToLastMessage';
185+
| 'api.rovodev.chat.response.timeToFirstByte'
186+
| 'api.rovodev.chat.response.timeToFirstMessage'
187+
| 'api.rovodev.chat.response.timeToTechPlan'
188+
| 'api.rovodev.chat.response.timeToLastMessage';
186189

187190
type JiraPerfEvents =
188-
| 'ui.cumulativeJqlFetch.render.lcp'
189-
| 'ui.cumulativeJqlFetch.update.lcp'
190-
| 'ui.createJiraIssue.render.lcp'
191-
| 'ui.editJiraIssue.render.lcp'
192-
| 'ui.editJiraIssue.update.lcp';
191+
| 'ui.jira.jqlFetch.render.lcp'
192+
| 'ui.jira.jqlFetch.update.lcp'
193+
| 'ui.jira.createJiraIssue.render.lcp'
194+
| 'ui.jira.editJiraIssue.render.lcp'
195+
| 'ui.jira.editJiraIssue.update.lcp';
193196

194197
interface RovoDevCommonParams {
195198
rovoDevSessionId: string;

src/rovo-dev/performanceLogger.test.ts

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,14 @@ describe('PerformanceLogger', () => {
9292
await performanceLogger.promptFirstByteReceived(rovoDevPromptId);
9393

9494
expect(mockPerf.measure).toHaveBeenCalledWith(rovoDevPromptId);
95-
expect(mockPerformanceEvent).toHaveBeenCalledWith('rovodev.response.timeToFirstByte', measureValue, {
96-
rovoDevSessionId: 'test-session-123',
97-
rovoDevPromptId,
98-
});
95+
expect(mockPerformanceEvent).toHaveBeenCalledWith(
96+
'api.rovodev.chat.response.timeToFirstByte',
97+
measureValue,
98+
{
99+
rovoDevSessionId: 'test-session-123',
100+
rovoDevPromptId,
101+
},
102+
);
99103
expect(mockLogger.debug).toHaveBeenCalledWith(
100104
`Event fired: rovodev.response.timeToFirstByte ${measureValue} ms`,
101105
);
@@ -126,10 +130,14 @@ describe('PerformanceLogger', () => {
126130
await performanceLogger.promptFirstMessageReceived(rovoDevPromptId);
127131

128132
expect(mockPerf.measure).toHaveBeenCalledWith(rovoDevPromptId);
129-
expect(mockPerformanceEvent).toHaveBeenCalledWith('rovodev.response.timeToFirstMessage', measureValue, {
130-
rovoDevSessionId: 'test-session-123',
131-
rovoDevPromptId,
132-
});
133+
expect(mockPerformanceEvent).toHaveBeenCalledWith(
134+
'api.rovodev.chat.response.timeToFirstMessage',
135+
measureValue,
136+
{
137+
rovoDevSessionId: 'test-session-123',
138+
rovoDevPromptId,
139+
},
140+
);
133141
expect(mockLogger.debug).toHaveBeenCalledWith(
134142
`Event fired: rovodev.response.timeToFirstMessage ${measureValue} ms`,
135143
);
@@ -153,10 +161,14 @@ describe('PerformanceLogger', () => {
153161
await performanceLogger.promptTechnicalPlanReceived(rovoDevPromptId);
154162

155163
expect(mockPerf.measure).toHaveBeenCalledWith(rovoDevPromptId);
156-
expect(mockPerformanceEvent).toHaveBeenCalledWith('rovodev.response.timeToTechPlan', measureValue, {
157-
rovoDevSessionId: 'test-session-123',
158-
rovoDevPromptId,
159-
});
164+
expect(mockPerformanceEvent).toHaveBeenCalledWith(
165+
'api.rovodev.chat.response.timeToTechPlan',
166+
measureValue,
167+
{
168+
rovoDevSessionId: 'test-session-123',
169+
rovoDevPromptId,
170+
},
171+
);
160172
expect(mockLogger.debug).toHaveBeenCalledWith(
161173
`Event fired: rovodev.response.timeToTechPlan ${measureValue} ms`,
162174
);
@@ -181,10 +193,14 @@ describe('PerformanceLogger', () => {
181193

182194
expect(mockPerf.measure).toHaveBeenCalledWith(rovoDevPromptId);
183195
expect(mockPerf.clear).toHaveBeenCalledWith(rovoDevPromptId);
184-
expect(mockPerformanceEvent).toHaveBeenCalledWith('rovodev.response.timeToLastMessage', measureValue, {
185-
rovoDevSessionId: 'test-session-123',
186-
rovoDevPromptId,
187-
});
196+
expect(mockPerformanceEvent).toHaveBeenCalledWith(
197+
'api.rovodev.chat.response.timeToLastMessage',
198+
measureValue,
199+
{
200+
rovoDevSessionId: 'test-session-123',
201+
rovoDevPromptId,
202+
},
203+
);
188204
expect(mockLogger.debug).toHaveBeenCalledWith(
189205
`Event fired: rovodev.response.timeToLastMessage ${measureValue} ms`,
190206
);
@@ -266,12 +282,12 @@ describe('PerformanceLogger', () => {
266282

267283
// Verify rovoDevSessionId was used in both calls
268284
expect(mockPerformanceEvent).toHaveBeenCalledWith(
269-
'rovodev.response.timeToFirstByte',
285+
'api.rovodev.chat.response.timeToFirstByte',
270286
expect.any(Number),
271287
expect.objectContaining({ rovoDevSessionId }),
272288
);
273289
expect(mockPerformanceEvent).toHaveBeenCalledWith(
274-
'rovodev.response.timeToFirstMessage',
290+
'api.rovodev.chat.response.timeToFirstMessage',
275291
expect.any(Number),
276292
expect.objectContaining({ rovoDevSessionId }),
277293
);
@@ -286,7 +302,7 @@ describe('PerformanceLogger', () => {
286302
await performanceLogger.promptFirstByteReceived('test-prompt');
287303

288304
expect(mockPerformanceEvent).toHaveBeenCalledWith(
289-
'rovodev.response.timeToFirstByte',
305+
'api.rovodev.chat.response.timeToFirstByte',
290306
NaN,
291307
expect.any(Object),
292308
);
@@ -299,7 +315,7 @@ describe('PerformanceLogger', () => {
299315
await performanceLogger.promptFirstMessageReceived('test-prompt');
300316

301317
expect(mockPerformanceEvent).toHaveBeenCalledWith(
302-
'rovodev.response.timeToFirstMessage',
318+
'api.rovodev.chat.response.timeToFirstMessage',
303319
0,
304320
expect.any(Object),
305321
);
@@ -313,7 +329,7 @@ describe('PerformanceLogger', () => {
313329

314330
await performanceLogger.promptFirstByteReceived('');
315331
expect(mockPerformanceEvent).toHaveBeenCalledWith(
316-
'rovodev.response.timeToFirstByte',
332+
'api.rovodev.chat.response.timeToFirstByte',
317333
expect.any(Number),
318334
expect.objectContaining({ rovoDevSessionId: 'non-empty-session', rovoDevPromptId: '' }),
319335
);

src/rovo-dev/performanceLogger.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export class PerformanceLogger {
2020

2121
public async promptFirstByteReceived(promptId: string) {
2222
const measure = Perf.measure(promptId);
23-
const evt = await performanceEvent('rovodev.response.timeToFirstByte', measure, {
23+
const evt = await performanceEvent('api.rovodev.chat.response.timeToFirstByte', measure, {
2424
rovoDevSessionId: this.currentSessionId,
2525
rovoDevPromptId: promptId,
2626
});
@@ -31,7 +31,7 @@ export class PerformanceLogger {
3131

3232
public async promptFirstMessageReceived(promptId: string) {
3333
const measure = Perf.measure(promptId);
34-
const evt = await performanceEvent('rovodev.response.timeToFirstMessage', measure, {
34+
const evt = await performanceEvent('api.rovodev.chat.response.timeToFirstMessage', measure, {
3535
rovoDevSessionId: this.currentSessionId,
3636
rovoDevPromptId: promptId,
3737
});
@@ -42,7 +42,7 @@ export class PerformanceLogger {
4242

4343
public async promptTechnicalPlanReceived(promptId: string) {
4444
const measure = Perf.measure(promptId);
45-
const evt = await performanceEvent('rovodev.response.timeToTechPlan', measure, {
45+
const evt = await performanceEvent('api.rovodev.chat.response.timeToTechPlan', measure, {
4646
rovoDevSessionId: this.currentSessionId,
4747
rovoDevPromptId: promptId,
4848
});
@@ -53,7 +53,7 @@ export class PerformanceLogger {
5353

5454
public async promptLastMessageReceived(promptId: string) {
5555
const measure = Perf.measure(promptId);
56-
const evt = await performanceEvent('rovodev.response.timeToLastMessage', measure, {
56+
const evt = await performanceEvent('api.rovodev.chat.response.timeToLastMessage', measure, {
5757
rovoDevSessionId: this.currentSessionId,
5858
rovoDevPromptId: promptId,
5959
});

src/views/jira/treeViews/jiraAssignedWorkItemsViewProvider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ import { executeJqlQuery, JiraIssueNode, loginToJiraMessageNode, TreeViewIssue }
2727

2828
const AssignedWorkItemsViewProviderId = AssignedJiraItemsViewId;
2929

30-
const InitialCumulativeJqlFetchEventName = 'ui.cumulativeJqlFetch.render.lcp';
31-
const RefreshCumulativeJqlFetchEventName = 'ui.cumulativeJqlFetch.update.lcp';
30+
const InitialCumulativeJqlFetchEventName = 'ui.jira.jqlFetch.render.lcp';
31+
const RefreshCumulativeJqlFetchEventName = 'ui.jira.jqlFetch.update.lcp';
3232

3333
export class AssignedWorkItemsViewProvider extends Disposable implements TreeDataProvider<TreeItem> {
3434
private static readonly _treeItemConfigureJiraMessage = loginToJiraMessageNode;

src/webviews/createIssueWebview.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ const emptyCreateMetaResult: CreateMetaTransformerResult<DetailedSiteInfo> = {
5757
issueTypes: [],
5858
};
5959

60-
const CreateJiraIssueRenderEventName = 'ui.createJiraIssue.render.lcp';
60+
const CreateJiraIssueRenderEventName = 'ui.jira.createJiraIssue.render.lcp';
6161

6262
export class CreateIssueWebview
6363
extends AbstractIssueEditorWebview

src/webviews/jiraIssueWebview.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ import { NotificationManagerImpl } from '../views/notifications/notificationMana
5555
import { AbstractIssueEditorWebview } from './abstractIssueEditorWebview';
5656
import { InitializingWebview } from './abstractWebview';
5757

58-
const EditJiraIssueUIRenderEventName = 'ui.editJiraIssue.render.lcp';
59-
const EditJiraIssueUpdatesEventName = 'ui.editJiraIssue.update.lcp';
58+
const EditJiraIssueUIRenderEventName = 'ui.jira.editJiraIssue.render.lcp';
59+
const EditJiraIssueUpdatesEventName = 'ui.jira.editJiraIssue.update.lcp';
6060

6161
export class JiraIssueWebview
6262
extends AbstractIssueEditorWebview

0 commit comments

Comments
 (0)