Skip to content
This repository has been archived by the owner on Mar 31, 2024. It is now read-only.

Commit

Permalink
[ci-stats-reporter] use v2 test group APIs (elastic#131001)
Browse files Browse the repository at this point in the history
* [ci-stats-reporter] use v2 test group APIs

* fix bazel deps

* [CI] Auto-commit changed files from 'yarn kbn run build -i @kbn/pm'

* avoid importing kbn/std in kbn-pm

* removed kbn/std dependency

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
(cherry picked from commit 7fd1661)

# Conflicts:
#	packages/kbn-pm/dist/index.js
  • Loading branch information
Spencer committed May 3, 2022
1 parent 9f72160 commit 7dcda21
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 18 deletions.
51 changes: 41 additions & 10 deletions packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,8 @@ export interface CiStatsReportTestsOptions {
}

/* @internal */
interface ReportTestsResponse {
buildId: string;
interface ReportTestGroupResponse {
groupId: string;
testRunCount: number;
}

/* @internal */
Expand Down Expand Up @@ -239,18 +237,51 @@ export class CiStatsReporter {
);
}

return await this.req<ReportTestsResponse>({
const groupResp = await this.req<ReportTestGroupResponse>({
auth: true,
path: '/v1/test_group',
path: '/v2/test_group',
query: {
buildId: this.config?.buildId,
},
bodyDesc: `[${group.name}/${group.type}] test groups with ${testRuns.length} tests`,
body: [
JSON.stringify({ group }),
...testRuns.map((testRun) => JSON.stringify({ testRun })),
].join('\n'),
bodyDesc: `[${group.name}/${group.type}] test group`,
body: group,
});

if (!groupResp) {
return;
}

let bufferBytes = 0;
const buffer: string[] = [];
const flushBuffer = async () => {
await this.req<{ testRunCount: number }>({
auth: true,
path: '/v2/test_runs',
query: {
buildId: this.config?.buildId,
groupId: groupResp.groupId,
groupType: group.type,
},
bodyDesc: `[${group.name}/${group.type}] Chunk of ${bufferBytes} bytes`,
body: buffer.join('\n'),
});
buffer.length = 0;
bufferBytes = 0;
};

// send test runs in chunks of ~500kb
for (const testRun of testRuns) {
const json = JSON.stringify(testRun);
bufferBytes += json.length;
buffer.push(json);
if (bufferBytes >= 450000) {
await flushBuffer();
}
}

if (bufferBytes) {
await flushBuffer();
}
}

/**
Expand Down
52 changes: 44 additions & 8 deletions packages/kbn-pm/dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9217,19 +9217,55 @@ class CiStatsReporter {
throw new Error('unable to report tests unless buildId is configured and auth config available');
}

return await this.req({
const groupResp = await this.req({
auth: true,
path: '/v1/test_group',
path: '/v2/test_group',
query: {
buildId: (_this$config7 = this.config) === null || _this$config7 === void 0 ? void 0 : _this$config7.buildId
},
bodyDesc: `[${group.name}/${group.type}] test groups with ${testRuns.length} tests`,
body: [JSON.stringify({
group
}), ...testRuns.map(testRun => JSON.stringify({
testRun
}))].join('\n')
bodyDesc: `[${group.name}/${group.type}] test group`,
body: group
});

if (!groupResp) {
return;
}

let bufferBytes = 0;
const buffer = [];

const flushBuffer = async () => {
var _this$config8;

await this.req({
auth: true,
path: '/v2/test_runs',
query: {
buildId: (_this$config8 = this.config) === null || _this$config8 === void 0 ? void 0 : _this$config8.buildId,
groupId: groupResp.groupId,
groupType: group.type
},
bodyDesc: `[${group.name}/${group.type}] Chunk of ${bufferBytes} bytes`,
body: buffer.join('\n')
});
buffer.length = 0;
bufferBytes = 0;
}; // send test runs in chunks of ~500kb


for (const testRun of testRuns) {
const json = JSON.stringify(testRun);
bufferBytes += json.length;
buffer.push(json);

if (bufferBytes >= 450000) {
await flushBuffer();
}
}

if (bufferBytes) {
await flushBuffer();
}
}
/**
* In order to allow this code to run before @kbn/utils is built, @kbn/pm will pass
Expand Down

0 comments on commit 7dcda21

Please sign in to comment.