fix(test): sample direct POSIX gateway process

This commit is contained in:
Vincent Koc
2026-06-19 19:50:02 +02:00
parent 330545f3e9
commit 20d3eccf00
2 changed files with 27 additions and 4 deletions
+8 -4
View File
@@ -1873,12 +1873,14 @@ async function samplePosixProcessTree(pid, run, commandLineNeedles) {
if (hasMalformedProcessTreeRows(malformedRows, rootTreeRows)) {
return null;
}
const rootRow = rootTreeRows.find((row) => row.processId === safePid) ?? null;
const descendants = rootTreeRows.filter((row) => row.processId !== safePid);
const commandMatches = descendants.filter((row) =>
const matchesCommandNeedles = (row) =>
commandLineNeedles.every((needle) =>
row.command.toLowerCase().includes(needle.toLowerCase()),
),
);
);
const commandMatches = descendants.filter(matchesCommandNeedles);
const rootCommandMatches = rootRow && matchesCommandNeedles(rootRow) ? [rootRow] : [];
const gatewayTitleMatches = descendants.filter((row) =>
row.command.toLowerCase().includes("openclaw-gateway"),
);
@@ -1887,7 +1889,9 @@ async function samplePosixProcessTree(pid, run, commandLineNeedles) {
? commandMatches
: gatewayTitleMatches.length > 0
? gatewayTitleMatches
: descendants,
: descendants.length > 0
? descendants
: rootCommandMatches,
);
if (!selected) {
return null;
@@ -1739,6 +1739,25 @@ describe("kitchen-sink RPC process sampling", () => {
});
});
it("samples the POSIX gateway root when command-line needles match", async () => {
const sample = await sampleProcess(4321, {
platform: "darwin",
posixCommandLineNeedles: ["gateway", "--port", "19080"],
runCommand: async () => ({
stdout:
" 4321 1 262144 12.5 node dist/index.js gateway --port 19080 --bind loopback\n",
stderr: "",
}),
});
expect(sample).toEqual({
aggregateRssMiB: 256,
cpuPercent: 12.5,
processId: 4321,
rssMiB: 256,
});
});
it("falls back to the POSIX gateway process title when the port arg is rewritten", async () => {
const sample = await sampleProcess(4321, {
platform: "darwin",