mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 12:00:44 +00:00
ci: rebalance extension test shards
This commit is contained in:
@@ -31,26 +31,31 @@ const repoRoot = path.resolve(import.meta.dirname, "..", "..");
|
||||
export const DEFAULT_EXTENSION_TEST_SHARD_COUNT = 6;
|
||||
const EXTENSION_TEST_COST_MULTIPLIERS = {
|
||||
// CI shard planning uses measured wall time rather than raw file count.
|
||||
// Import-heavy channel suites vary widely: Slack/Mattermost are much more
|
||||
// expensive per file than Matrix/Discord/MSTeams.
|
||||
// These ratios come from Blacksmith extension batch timings; import-heavy
|
||||
// suites vary widely, and file count alone leaves long tail shards.
|
||||
"test/vitest/vitest.extension-acpx.config.ts": 0.75,
|
||||
"test/vitest/vitest.extension-bluebubbles.config.ts": 0.8,
|
||||
"test/vitest/vitest.extension-browser.config.ts": 0.55,
|
||||
"test/vitest/vitest.extension-discord.config.ts": 0.55,
|
||||
"test/vitest/vitest.extension-feishu.config.ts": 1.1,
|
||||
"test/vitest/vitest.extension-imessage.config.ts": 0.9,
|
||||
"test/vitest/vitest.extension-matrix.config.ts": 0.25,
|
||||
"test/vitest/vitest.extension-mattermost.config.ts": 1.05,
|
||||
"test/vitest/vitest.extension-browser.config.ts": 0.3,
|
||||
"test/vitest/vitest.extension-diffs.config.ts": 0.6,
|
||||
"test/vitest/vitest.extension-discord.config.ts": 0.18,
|
||||
"test/vitest/vitest.extension-feishu.config.ts": 0.18,
|
||||
"test/vitest/vitest.extension-imessage.config.ts": 1.7,
|
||||
"test/vitest/vitest.extension-irc.config.ts": 1.0,
|
||||
"test/vitest/vitest.extension-line.config.ts": 1.1,
|
||||
"test/vitest/vitest.extension-matrix.config.ts": 0.28,
|
||||
"test/vitest/vitest.extension-mattermost.config.ts": 0.75,
|
||||
"test/vitest/vitest.extension-media.config.ts": 0.7,
|
||||
"test/vitest/vitest.extension-memory.config.ts": 0.3,
|
||||
"test/vitest/vitest.extension-memory.config.ts": 0.25,
|
||||
"test/vitest/vitest.extension-messaging.config.ts": 0.4,
|
||||
"test/vitest/vitest.extension-misc.config.ts": 0.7,
|
||||
"test/vitest/vitest.extension-msteams.config.ts": 0.3,
|
||||
"test/vitest/vitest.extension-msteams.config.ts": 0.4,
|
||||
"test/vitest/vitest.extension-provider-openai.config.ts": 1.35,
|
||||
"test/vitest/vitest.extension-providers.config.ts": 0.5,
|
||||
"test/vitest/vitest.extension-qa.config.ts": 0.4,
|
||||
"test/vitest/vitest.extension-slack.config.ts": 0.7,
|
||||
"test/vitest/vitest.extension-telegram.config.ts": 0.4,
|
||||
"test/vitest/vitest.extension-voice-call.config.ts": 0.25,
|
||||
"test/vitest/vitest.extension-whatsapp.config.ts": 0.6,
|
||||
"test/vitest/vitest.extension-qa.config.ts": 0.6,
|
||||
"test/vitest/vitest.extension-slack.config.ts": 0.14,
|
||||
"test/vitest/vitest.extension-telegram.config.ts": 0.15,
|
||||
"test/vitest/vitest.extension-voice-call.config.ts": 0.27,
|
||||
"test/vitest/vitest.extension-whatsapp.config.ts": 0.5,
|
||||
"test/vitest/vitest.extension-zalo.config.ts": 0.7,
|
||||
// This shared config is comparatively cheap per file, so raw file count
|
||||
// overstates its real wall-clock cost during CI shard planning.
|
||||
|
||||
@@ -474,24 +474,24 @@ describe("scripts/test-extension.mjs", () => {
|
||||
const totals = shards.map((shard) => shard.estimatedCost);
|
||||
expect(Math.max(...totals) - Math.min(...totals)).toBeLessThanOrEqual(1);
|
||||
|
||||
const msTeamsShardIndex = shards.findIndex((shard) => shard.extensionIds.includes("msteams"));
|
||||
const feishuShardIndex = shards.findIndex((shard) => shard.extensionIds.includes("feishu"));
|
||||
const browserShardIndex = shards.findIndex((shard) => shard.extensionIds.includes("browser"));
|
||||
const slackShardIndex = shards.findIndex((shard) => shard.extensionIds.includes("slack"));
|
||||
const matrixShardIndex = shards.findIndex((shard) => shard.extensionIds.includes("matrix"));
|
||||
const imessageShardIndex = shards.findIndex((shard) => shard.extensionIds.includes("imessage"));
|
||||
const mattermostShardIndex = shards.findIndex((shard) =>
|
||||
shard.extensionIds.includes("mattermost"),
|
||||
);
|
||||
const openAiShardIndex = shards.findIndex((shard) => shard.extensionIds.includes("openai"));
|
||||
const qaLabShardIndex = shards.findIndex((shard) => shard.extensionIds.includes("qa-lab"));
|
||||
const whatsappShardIndex = shards.findIndex((shard) => shard.extensionIds.includes("whatsapp"));
|
||||
|
||||
expect(msTeamsShardIndex).toBeGreaterThanOrEqual(0);
|
||||
expect(feishuShardIndex).toBeGreaterThanOrEqual(0);
|
||||
expect(msTeamsShardIndex).not.toBe(feishuShardIndex);
|
||||
expect(browserShardIndex).toBeGreaterThanOrEqual(0);
|
||||
expect(slackShardIndex).toBeGreaterThanOrEqual(0);
|
||||
expect(browserShardIndex).not.toBe(slackShardIndex);
|
||||
expect(matrixShardIndex).toBeGreaterThanOrEqual(0);
|
||||
expect(imessageShardIndex).toBeGreaterThanOrEqual(0);
|
||||
expect(mattermostShardIndex).toBeGreaterThanOrEqual(0);
|
||||
expect(matrixShardIndex).not.toBe(mattermostShardIndex);
|
||||
expect(openAiShardIndex).toBeGreaterThanOrEqual(0);
|
||||
expect(qaLabShardIndex).toBeGreaterThanOrEqual(0);
|
||||
expect(whatsappShardIndex).toBeGreaterThanOrEqual(0);
|
||||
expect(browserShardIndex).not.toBe(qaLabShardIndex);
|
||||
expect(imessageShardIndex).not.toBe(openAiShardIndex);
|
||||
expect(mattermostShardIndex).not.toBe(whatsappShardIndex);
|
||||
});
|
||||
|
||||
it("runs extension batch config groups concurrently when requested", async () => {
|
||||
|
||||
Reference in New Issue
Block a user