aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2023-01-07 07:09:48 -0800
committerGravatar GitHub <noreply@github.com> 2023-01-07 07:09:48 -0800
commit87983464d8a331c1ddd09eced9920269a759f0a9 (patch)
treeb08a5aef5c2d18f25a5ee46c88bec84d5b8ee907 /test
parentd5565ab2cdd7099a5852ba5ba6d180ef291af084 (diff)
downloadbun-87983464d8a331c1ddd09eced9920269a759f0a9.tar.gz
bun-87983464d8a331c1ddd09eced9920269a759f0a9.tar.zst
bun-87983464d8a331c1ddd09eced9920269a759f0a9.zip
Implement DNS module (#1691)
* Boilerplate for DNS stuff * Add c-ares * lookup * make * Implement dns.lookup * Create c-ares * wip * normalize * repro * Revert "repro" This reverts commit 8b93e0c295b335b8882a9601da47720348549beb. * Implement macOS `getaddrinfo_async_start` * embiggen * Update string_immutable.zig * Update Makefile * alright * Update .gitignore * Add types * more ccache * Update Dockerfile * Update Dockerfile * Update Dockerfile * Update bun.d.ts Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'test')
-rw-r--r--test/bun.js/dns.node.mjs0
-rw-r--r--test/bun.js/resolve-dns.test.ts54
2 files changed, 54 insertions, 0 deletions
diff --git a/test/bun.js/dns.node.mjs b/test/bun.js/dns.node.mjs
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/test/bun.js/dns.node.mjs
diff --git a/test/bun.js/resolve-dns.test.ts b/test/bun.js/resolve-dns.test.ts
new file mode 100644
index 000000000..f0db49b20
--- /dev/null
+++ b/test/bun.js/resolve-dns.test.ts
@@ -0,0 +1,54 @@
+import { dns } from "bun";
+import { describe, expect, it, test } from "bun:test";
+import { withoutAggressiveGC } from "gc";
+
+describe("dns.lookup", () => {
+ const backends = [
+ process.platform === "darwin" ? "system" : undefined,
+ "libc",
+ "c-ares",
+ ].filter(Boolean);
+ for (let backend of backends) {
+ it(backend + " parallell x 10", async () => {
+ const promises = [];
+ for (let i = 0; i < 10; i++) {
+ promises.push(dns.lookup("localhost", { backend }));
+ }
+ const results = (await Promise.all(promises)).flat();
+ withoutAggressiveGC(() => {
+ for (let { family, address } of results) {
+ if (family === 4) {
+ expect(address).toBe("127.0.0.1");
+ } else if (family === 6) {
+ expect(address).toBe("::1");
+ } else {
+ throw new Error("Unknown family");
+ }
+ }
+ });
+ });
+
+ it(backend + " remote", async () => {
+ const [first, second] = await dns.lookup("google.com", { backend });
+ console.log(first, second);
+ });
+ it(backend + " local", async () => {
+ const [first, second] = await dns.lookup("localhost", { backend });
+ console.log(first, second);
+ });
+
+ it(
+ backend +
+ " failing domain throws an error without taking a very long time",
+ async () => {
+ try {
+ await dns.lookup("yololololololo1234567.com", { backend });
+ throw 42;
+ } catch (e) {
+ expect(typeof e).not.toBe("number");
+ expect(e.code).toBe("DNS_ENOTFOUND");
+ }
+ },
+ );
+ }
+});