perf: expand base vitest thread lanes

This commit is contained in:
Peter Steinberger
2026-03-22 11:59:01 -07:00
parent 412a3eb1ac
commit 8e09568bc7
8 changed files with 183 additions and 10 deletions

View File

@@ -80,6 +80,7 @@ export function parseArgs(argv) {
export function getExistingThreadCandidateExclusions(behavior) {
return new Set([
...(behavior.base?.threadSingleton ?? []).map((entry) => entry.file),
...(behavior.unit?.isolated ?? []).map((entry) => entry.file),
...(behavior.unit?.singletonIsolated ?? []).map((entry) => entry.file),
...(behavior.unit?.threadSingleton ?? []).map((entry) => entry.file),

View File

@@ -49,6 +49,7 @@ const cleanupTempArtifacts = () => {
tempArtifactDir = null;
};
const existingUnitConfigFiles = (entries) => existingFiles(entries).filter(isUnitConfigTestFile);
const baseThreadSingletonFiles = existingFiles(behaviorManifest.base?.threadSingleton ?? []);
const unitBehaviorIsolatedFiles = existingUnitConfigFiles(behaviorManifest.unit.isolated);
const unitSingletonIsolatedFiles = existingUnitConfigFiles(behaviorManifest.unit.singletonIsolated);
const unitThreadSingletonFiles = existingUnitConfigFiles(behaviorManifest.unit.threadSingleton);
@@ -611,6 +612,7 @@ const resolveFilterMatches = (fileFilter) => {
};
const isVmForkSingletonUnitFile = (fileFilter) => unitVmForkSingletonFiles.includes(fileFilter);
const isThreadSingletonUnitFile = (fileFilter) => unitThreadSingletonFiles.includes(fileFilter);
const isBaseThreadSingletonFile = (fileFilter) => baseThreadSingletonFiles.includes(fileFilter);
const createTargetedEntry = (owner, isolated, filters) => {
const name = isolated ? `${owner}-isolated` : owner;
const forceForks = isolated;
@@ -648,6 +650,12 @@ const createTargetedEntry = (owner, isolated, filters) => {
args: ["vitest", "run", "--config", "vitest.unit.config.ts", "--pool=threads", ...filters],
};
}
if (owner === "base-threads") {
return {
name,
args: ["vitest", "run", "--config", "vitest.config.ts", "--pool=threads", ...filters],
};
}
if (owner === "extensions") {
return {
name,
@@ -718,7 +726,9 @@ const createPerFileTargetedEntry = (file) => {
? "unit-threads"
: isVmForkSingletonUnitFile(file)
? "unit-vmforks"
: target.owner;
: isBaseThreadSingletonFile(file)
? "base-threads"
: target.owner;
return {
...createTargetedEntry(owner, target.isolated, [file]),
name: formatPerFileEntryName(owner, file),
@@ -747,7 +757,9 @@ const targetedEntries = (() => {
? "unit-threads"
: isVmForkSingletonUnitFile(normalizedFile)
? "unit-vmforks"
: target.owner;
: isBaseThreadSingletonFile(normalizedFile)
? "base-threads"
: target.owner;
const key = `${owner}:${target.isolated ? "isolated" : "default"}`;
const files = acc.get(key) ?? [];
files.push(normalizedFile);
@@ -760,7 +772,9 @@ const targetedEntries = (() => {
? "unit-threads"
: isVmForkSingletonUnitFile(matchedFile)
? "unit-vmforks"
: target.owner;
: isBaseThreadSingletonFile(matchedFile)
? "base-threads"
: target.owner;
const key = `${owner}:${target.isolated ? "isolated" : "default"}`;
const files = acc.get(key) ?? [];
files.push(matchedFile);

View File

@@ -30,7 +30,11 @@ const normalizeManifestEntries = (entries) =>
export function loadTestRunnerBehavior() {
const raw = tryReadJsonFile(behaviorManifestPath, {});
const unit = raw.unit ?? {};
const base = raw.base ?? {};
return {
base: {
threadSingleton: normalizeManifestEntries(base.threadSingleton ?? []),
},
unit: {
isolated: normalizeManifestEntries(unit.isolated ?? []),
singletonIsolated: normalizeManifestEntries(unit.singletonIsolated ?? []),