mirror of
https://github.com/denoland/deno.git
synced 2024-12-12 02:27:46 -05:00
fmt
This commit is contained in:
parent
2c60a4352d
commit
7c43c3c988
1 changed files with 97 additions and 89 deletions
|
@ -1030,26 +1030,28 @@ Deno.test(
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
Deno.test("[node/http] destroyed requests should not be sent", {
|
Deno.test(
|
||||||
ignore: true,
|
"[node/http] destroyed requests should not be sent",
|
||||||
}, async () => {
|
{ ignore: true },
|
||||||
let receivedRequest = false;
|
async () => {
|
||||||
const server = Deno.serve(() => {
|
let receivedRequest = false;
|
||||||
receivedRequest = true;
|
const server = Deno.serve(() => {
|
||||||
return new Response(null);
|
receivedRequest = true;
|
||||||
});
|
return new Response(null);
|
||||||
let receivedError = null
|
});
|
||||||
const request = http.request(`http://localhost:${server.addr.port}/`);
|
let receivedError = null;
|
||||||
request.destroy();
|
const request = http.request(`http://localhost:${server.addr.port}/`);
|
||||||
request.end("hello");
|
request.destroy();
|
||||||
request.on("error", (err) => {
|
request.end("hello");
|
||||||
receivedError = err;
|
request.on("error", (err) => {
|
||||||
});
|
receivedError = err;
|
||||||
await new Promise((r) => setTimeout(r, 500));
|
});
|
||||||
assert(receivedError!.toString().contains("socket hung up"));
|
await new Promise((r) => setTimeout(r, 500));
|
||||||
assertEquals(receivedRequest, false);
|
assert(receivedError!.toString().contains("socket hung up"));
|
||||||
await server.shutdown();
|
assertEquals(receivedRequest, false);
|
||||||
});
|
await server.shutdown();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
Deno.test("[node/http] node:http exports globalAgent", async () => {
|
Deno.test("[node/http] node:http exports globalAgent", async () => {
|
||||||
const http = await import("node:http");
|
const http = await import("node:http");
|
||||||
|
@ -1358,85 +1360,91 @@ Deno.test("[node/http] client closing a streaming response doesn't terminate ser
|
||||||
clearInterval(interval!);
|
clearInterval(interval!);
|
||||||
});
|
});
|
||||||
|
|
||||||
Deno.test("[node/http] client closing a streaming request doesn't terminate server", { ignore: true }, async () => {
|
Deno.test(
|
||||||
let interval: number;
|
"[node/http] client closing a streaming request doesn't terminate server",
|
||||||
let uploadedData = "";
|
{
|
||||||
let requestError: Error | null = null;
|
ignore: true,
|
||||||
const server = http.createServer((req, res) => {
|
},
|
||||||
res.writeHead(200, { "Content-Type": "text/plain" });
|
async () => {
|
||||||
interval = setInterval(() => {
|
let interval: number;
|
||||||
res.write("Hello, world!\n");
|
let uploadedData = "";
|
||||||
}, 100);
|
let requestError: Error | null = null;
|
||||||
req.on("data", (chunk) => {
|
const server = http.createServer((req, res) => {
|
||||||
uploadedData += chunk.toString();
|
res.writeHead(200, { "Content-Type": "text/plain" });
|
||||||
|
interval = setInterval(() => {
|
||||||
|
res.write("Hello, world!\n");
|
||||||
|
}, 100);
|
||||||
|
req.on("data", (chunk) => {
|
||||||
|
uploadedData += chunk.toString();
|
||||||
|
});
|
||||||
|
req.on("end", () => {
|
||||||
|
clearInterval(interval);
|
||||||
|
});
|
||||||
|
req.on("error", (err) => {
|
||||||
|
requestError = err;
|
||||||
|
clearInterval(interval);
|
||||||
|
res.end();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
req.on("end", () => {
|
|
||||||
clearInterval(interval);
|
|
||||||
});
|
|
||||||
req.on("error", (err) => {
|
|
||||||
requestError = err;
|
|
||||||
clearInterval(interval);
|
|
||||||
res.end();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
const deferred1 = Promise.withResolvers<void>();
|
const deferred1 = Promise.withResolvers<void>();
|
||||||
server.listen(0, () => {
|
server.listen(0, () => {
|
||||||
// deno-lint-ignore no-explicit-any
|
// deno-lint-ignore no-explicit-any
|
||||||
const port = (server.address() as any).port;
|
const port = (server.address() as any).port;
|
||||||
|
|
||||||
// Create a client connection to the server
|
// Create a client connection to the server
|
||||||
const client = net.createConnection({ port }, () => {
|
const client = net.createConnection({ port }, () => {
|
||||||
const headers = [
|
const headers = [
|
||||||
"POST /upload HTTP/1.1",
|
"POST /upload HTTP/1.1",
|
||||||
"Host: localhost",
|
"Host: localhost",
|
||||||
"Content-Type: text/plain",
|
"Content-Type: text/plain",
|
||||||
"Transfer-Encoding: chunked",
|
"Transfer-Encoding: chunked",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
].join("\r\n");
|
].join("\r\n");
|
||||||
|
|
||||||
client.write(headers);
|
client.write(headers);
|
||||||
|
|
||||||
const chunk = "A".repeat(100);
|
const chunk = "A".repeat(100);
|
||||||
let sentChunks = 0;
|
let sentChunks = 0;
|
||||||
|
|
||||||
function writeChunk() {
|
function writeChunk() {
|
||||||
const chunkHeader = `${chunk.length.toString(16)}\r\n`;
|
const chunkHeader = `${chunk.length.toString(16)}\r\n`;
|
||||||
client.write(chunkHeader);
|
client.write(chunkHeader);
|
||||||
client.write(chunk);
|
client.write(chunk);
|
||||||
client.write("\r\n");
|
client.write("\r\n");
|
||||||
sentChunks++;
|
sentChunks++;
|
||||||
|
|
||||||
if (sentChunks >= 3) {
|
if (sentChunks >= 3) {
|
||||||
client.destroy();
|
client.destroy();
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
deferred1.resolve();
|
deferred1.resolve();
|
||||||
}, 40);
|
}, 40);
|
||||||
} else {
|
} else {
|
||||||
setTimeout(writeChunk, 10);
|
setTimeout(writeChunk, 10);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
writeChunk();
|
||||||
writeChunk();
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
await deferred1.promise;
|
await deferred1.promise;
|
||||||
assert(requestError !== null, "Server should have received an error");
|
assert(requestError !== null, "Server should have received an error");
|
||||||
assert(
|
assert(
|
||||||
(requestError! as Error)?.name === "Http",
|
(requestError! as Error)?.name === "Http",
|
||||||
`Expected Http error, got ${(requestError! as Error)?.name}`,
|
`Expected Http error, got ${(requestError! as Error)?.name}`,
|
||||||
);
|
);
|
||||||
assert(
|
assert(
|
||||||
(requestError! as Error)?.message.includes(
|
(requestError! as Error)?.message.includes(
|
||||||
"error reading a body from connection",
|
"error reading a body from connection",
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
assertEquals(server.listening, true);
|
assertEquals(server.listening, true);
|
||||||
server.close();
|
server.close();
|
||||||
assertEquals(server.listening, false);
|
assertEquals(server.listening, false);
|
||||||
clearInterval(interval!);
|
clearInterval(interval!);
|
||||||
});
|
},
|
||||||
|
);
|
||||||
|
|
||||||
Deno.test("[node/http] http.request() post streaming body works", {
|
Deno.test("[node/http] http.request() post streaming body works", {
|
||||||
ignore: true,
|
ignore: true,
|
||||||
|
|
Loading…
Reference in a new issue