Skip to content

Commit c56b967

Browse files
committed
clean up implementation to factor out duplicate code across two cases
1 parent 57dab4b commit c56b967

File tree

2 files changed

+82
-56
lines changed

2 files changed

+82
-56
lines changed

packages/core/src/shared/performance/performance.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,3 +211,36 @@ function assertPerformanceMetrics(
211211
`Expected total duration for ${name} to be less than ${expectedDuration}. Actual duration was ${foundDuration}`
212212
)
213213
}
214+
215+
/**
216+
* Utility function to supply options that are the same for all OS.
217+
* @param userCpuUsage desired userCpuUsage
218+
* @param heapTotal desired heapTotal
219+
* @param duration desired duration
220+
* @returns options for all OS
221+
*/
222+
export function getEqualOptions(
223+
numRuns: number,
224+
userCpuUsage: number,
225+
heapTotal: number,
226+
duration: number
227+
): TestOptions {
228+
return {
229+
testRuns: numRuns,
230+
linux: {
231+
userCpuUsage: userCpuUsage,
232+
heapTotal: heapTotal,
233+
duration: duration,
234+
},
235+
darwin: {
236+
userCpuUsage: userCpuUsage,
237+
heapTotal: heapTotal,
238+
duration: duration,
239+
},
240+
win32: {
241+
userCpuUsage: userCpuUsage,
242+
heapTotal: heapTotal,
243+
duration: duration,
244+
},
245+
}
246+
}

packages/core/src/test/amazonqFeatureDev/prepareRepoData.test.ts

Lines changed: 49 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -4,70 +4,63 @@
44
*/
55
import assert from 'assert'
66
import { WorkspaceFolder } from 'vscode'
7-
import { performanceTest } from '../../shared/performance/performance'
7+
import { getEqualOptions, performanceTest } from '../../shared/performance/performance'
88
import { createTestWorkspace } from '../testUtil'
99
import { prepareRepoData, TelemetryHelper } from '../../amazonqFeatureDev'
10-
import { AmazonqCreateUpload, Metric } from '../../shared'
10+
import { AmazonqCreateUpload, getRandomString, Metric } from '../../shared'
1111

12-
describe('prepareRepoDataPerformanceTest', function () {
13-
let fileAmount: number
14-
let fileNamePrefix: string
15-
let fileNameSuffix: string
16-
let fileContent: string
17-
let workspace: WorkspaceFolder
18-
19-
beforeEach(async function () {})
20-
21-
afterEach(async function () {})
12+
type resultType = {
13+
zipFileBuffer: Buffer
14+
zipFileChecksum: string
15+
}
2216

23-
after(async function () {})
24-
25-
before(async function () {
26-
fileAmount = 1000
27-
fileNamePrefix = 'file'
28-
fileNameSuffix = '.md'
29-
fileContent = 'test content'
17+
describe('prepareRepoDataPerformanceTest', function () {
18+
function verifyResult(result: resultType, telemetry: TelemetryHelper, expectedSize: number): void {
19+
assert.ok(result)
20+
assert.strictEqual(Buffer.isBuffer(result.zipFileBuffer), true)
21+
assert.strictEqual(telemetry.repositorySize, expectedSize)
22+
assert.strictEqual(result.zipFileChecksum.length, 44)
23+
}
3024

31-
workspace = await createTestWorkspace(fileAmount, { fileNamePrefix, fileContent, fileNameSuffix })
25+
performanceTest(getEqualOptions(10, 80, 8, 0.7), 'handles many files', function () {
26+
const telemetry = new TelemetryHelper()
27+
let workspace: WorkspaceFolder
28+
let result: resultType
29+
return {
30+
setup: async () => {
31+
workspace = await createTestWorkspace(1000, {
32+
fileNamePrefix: 'file',
33+
fileContent: '0123456789',
34+
fileNameSuffix: '.md',
35+
})
36+
},
37+
execute: async () => {
38+
result = await prepareRepoData([workspace.uri.fsPath], [workspace], telemetry, {
39+
record: () => {},
40+
} as unknown as Metric<AmazonqCreateUpload>)
41+
},
42+
verify: async () => verifyResult(result, telemetry, 10000),
43+
}
3244
})
3345

34-
performanceTest(
35-
{
36-
testRuns: 10,
37-
linux: {
38-
userCpuUsage: 80,
39-
heapTotal: 8,
40-
duration: 0.7,
46+
performanceTest(getEqualOptions(10, 30, 1, 0.1), 'handles large files', function () {
47+
const telemetry = new TelemetryHelper()
48+
let result: resultType
49+
let workspace: WorkspaceFolder
50+
return {
51+
setup: async () => {
52+
workspace = await createTestWorkspace(10, {
53+
fileNamePrefix: 'file',
54+
fileContent: getRandomString(1000),
55+
fileNameSuffix: '.md',
56+
})
4157
},
42-
darwin: {
43-
userCpuUsage: 80,
44-
heapTotal: 8,
45-
duration: 0.7,
58+
execute: async () => {
59+
result = await prepareRepoData([workspace.uri.fsPath], [workspace], telemetry, {
60+
record: () => {},
61+
} as unknown as Metric<AmazonqCreateUpload>)
4662
},
47-
win32: {
48-
userCpuUsage: 80,
49-
heapTotal: 8,
50-
duration: 0.7,
51-
},
52-
},
53-
'handles many files',
54-
function () {
55-
const telemetry = new TelemetryHelper()
56-
let result: any
57-
return {
58-
setup: async () => {},
59-
execute: async () => {
60-
result = await prepareRepoData([workspace.uri.fsPath], [workspace], telemetry, {
61-
record: () => {},
62-
} as unknown as Metric<AmazonqCreateUpload>)
63-
},
64-
verify: async () => {
65-
assert.ok(result)
66-
assert.strictEqual(Buffer.isBuffer(result.zipFileBuffer), true)
67-
assert.strictEqual(telemetry.repositorySize, 12000)
68-
assert.strictEqual(result.zipFileChecksum.length, 44)
69-
},
70-
}
63+
verify: async () => verifyResult(result, telemetry, 10000),
7164
}
72-
)
65+
})
7366
})

0 commit comments

Comments
 (0)