Files
bun.sh/test/js/web/request/request-clone-leak.test.ts
Jarred Sumner c0ba7e9e34 Unskip some tests (#22116)
### What does this PR do?

### How did you verify your code works?

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-27 06:39:11 -07:00

107 lines
2.3 KiB
TypeScript

import { expect, test } from "bun:test";
import { isASAN } from "harness";
const ASAN_MULTIPLIER = isASAN ? 1 / 10 : 1;
const constructorArgs = [
[
new Request("http://foo/", {
body: "ahoyhoy",
method: "POST",
}),
],
[
"http://foo/",
{
body: "ahoyhoy",
method: "POST",
},
],
[
new URL("http://foo/"),
{
body: "ahoyhoy",
method: "POST",
},
],
[
new Request("http://foo/", {
body: "ahoyhoy",
method: "POST",
headers: {
"test-header": "value",
},
}),
],
[
"http://foo/",
{
body: "ahoyhoy",
method: "POST",
headers: {
"test-header": "value",
},
},
],
[
new URL("http://foo/"),
{
body: "ahoyhoy",
method: "POST",
headers: {
"test-header": "value",
},
},
],
];
for (let i = 0; i < constructorArgs.length; i++) {
const args = constructorArgs[i];
test("new Request(test #" + i + ")", () => {
Bun.gc(true);
for (let i = 0; i < 1000 * ASAN_MULTIPLIER; i++) {
new Request(...args);
}
Bun.gc(true);
const baseline = (process.memoryUsage.rss() / 1024 / 1024) | 0;
for (let i = 0; i < 2000 * ASAN_MULTIPLIER; i++) {
for (let j = 0; j < 500; j++) {
new Request(...args);
}
Bun.gc();
}
Bun.gc(true);
const memory = (process.memoryUsage.rss() / 1024 / 1024) | 0;
const delta = Math.max(memory, baseline) - Math.min(baseline, memory);
console.log("RSS delta: ", delta, "MB");
expect(delta).toBeLessThan(30);
});
test("request.clone(test #" + i + ")", () => {
Bun.gc(true);
for (let i = 0; i < 1000 * ASAN_MULTIPLIER; i++) {
const request = new Request(...args);
request.clone();
}
Bun.gc(true);
const baseline = (process.memoryUsage.rss() / 1024 / 1024) | 0;
for (let i = 0; i < 2000 * ASAN_MULTIPLIER; i++) {
for (let j = 0; j < 500 * ASAN_MULTIPLIER; j++) {
const request = new Request(...args);
request.clone();
}
Bun.gc();
}
Bun.gc(true);
const memory = (process.memoryUsage.rss() / 1024 / 1024) | 0;
const delta = Math.max(memory, baseline) - Math.min(baseline, memory);
console.log("RSS delta: ", delta, "MB");
expect(delta).toBeLessThan(30);
});
}