summaryrefslogtreecommitdiff
path: root/tests/node_compat/test/parallel/test-dgram-socket-buffer-size.js
diff options
context:
space:
mode:
authorMatt Mastracci <matthew@mastracci.com>2024-02-10 13:22:13 -0700
committerGitHub <noreply@github.com>2024-02-10 20:22:13 +0000
commitf5e46c9bf2f50d66a953fa133161fc829cecff06 (patch)
tree8faf2f5831c1c7b11d842cd9908d141082c869a5 /tests/node_compat/test/parallel/test-dgram-socket-buffer-size.js
parentd2477f780630a812bfd65e3987b70c0d309385bb (diff)
chore: move cli/tests/ -> tests/ (#22369)
This looks like a massive PR, but it's only a move from cli/tests -> tests, and updates of relative paths for files. This is the first step towards aggregate all of the integration test files under tests/, which will lead to a set of integration tests that can run without the CLI binary being built. While we could leave these tests under `cli`, it would require us to keep a more complex directory structure for the various test runners. In addition, we have a lot of complexity to ignore various test files in the `cli` project itself (cargo publish exclusion rules, autotests = false, etc). And finally, the `tests/` folder will eventually house the `test_ffi`, `test_napi` and other testing code, reducing the size of the root repo directory. For easier review, the extremely large and noisy "move" is in the first commit (with no changes -- just a move), while the remainder of the changes to actual files is in the second commit.
Diffstat (limited to 'tests/node_compat/test/parallel/test-dgram-socket-buffer-size.js')
-rw-r--r--tests/node_compat/test/parallel/test-dgram-socket-buffer-size.js178
1 files changed, 178 insertions, 0 deletions
diff --git a/tests/node_compat/test/parallel/test-dgram-socket-buffer-size.js b/tests/node_compat/test/parallel/test-dgram-socket-buffer-size.js
new file mode 100644
index 000000000..b2fc33262
--- /dev/null
+++ b/tests/node_compat/test/parallel/test-dgram-socket-buffer-size.js
@@ -0,0 +1,178 @@
+// deno-fmt-ignore-file
+// deno-lint-ignore-file
+
+// Copyright Joyent and Node contributors. All rights reserved. MIT license.
+// Taken from Node 16.13.0
+// This file is automatically generated by "node/_tools/setup.ts". Do not modify this file manually
+
+// Flags: --expose-internals
+'use strict';
+
+const common = require('../common');
+const assert = require('assert');
+const dgram = require('dgram');
+const { inspect } = require('util');
+const { internalBinding } = require('internal/test/binding');
+const {
+ UV_EBADF,
+ UV_EINVAL,
+ UV_ENOTSOCK
+} = internalBinding('uv');
+
+// Note error test amendments from Node due to Deno formatting errors slightly
+// differently.
+function getExpectedError(type) {
+ const code = common.isWindows ? 'ENOTSOCK' : 'EBADF';
+ const message = common.isWindows ?
+ 'socket operation on non-socket' : 'bad file descriptor';
+ const errno = common.isWindows ? UV_ENOTSOCK : UV_EBADF;
+ const syscall = `uv_${type}_buffer_size`;
+ const suffix = common.isWindows ?
+ 'ENOTSOCK (socket operation on non-socket)' : 'EBADF (bad file descriptor)';
+ const error = {
+ code: 'ERR_SOCKET_BUFFER_SIZE',
+ name: 'SystemError',
+ message: `Could not get or set buffer size: ${syscall} returned ${suffix}`,
+ info: {
+ code,
+ message,
+ errno,
+ syscall
+ }
+ };
+ return error;
+}
+
+{
+ // Should throw error if the socket is never bound.
+ const errorObj = getExpectedError('send');
+
+ const socket = dgram.createSocket('udp4');
+
+ assert.throws(() => {
+ socket.setSendBufferSize(8192);
+ }, (err) => {
+ assert.strictEqual(
+ inspect(err).replace(/^ +at .*\n/gm, ""),
+ `ERR_SOCKET_BUFFER_SIZE [SystemError]: ${errorObj.message}\n` +
+ " code: 'ERR_SOCKET_BUFFER_SIZE',\n" +
+ " info: {\n" +
+ ` errno: ${errorObj.info.errno},\n` +
+ ` code: '${errorObj.info.code}',\n` +
+ ` message: '${errorObj.info.message}',\n` +
+ ` syscall: '${errorObj.info.syscall}'\n` +
+ " },\n" +
+ ` errno: [Getter/Setter],\n` +
+ ` syscall: [Getter/Setter]\n` +
+ "}"
+ );
+ return true;
+ });
+
+ assert.throws(() => {
+ socket.getSendBufferSize();
+ }, errorObj);
+}
+
+{
+ const socket = dgram.createSocket('udp4');
+
+ // Should throw error if the socket is never bound.
+ const errorObj = getExpectedError('recv');
+
+ assert.throws(() => {
+ socket.setRecvBufferSize(8192);
+ }, errorObj);
+
+ assert.throws(() => {
+ socket.getRecvBufferSize();
+ }, errorObj);
+}
+
+{
+ // Should throw error if invalid buffer size is specified
+ const errorObj = {
+ code: 'ERR_SOCKET_BAD_BUFFER_SIZE',
+ name: 'TypeError',
+ message: /^Buffer size must be a positive integer$/
+ };
+
+ const badBufferSizes = [-1, Infinity, 'Doh!'];
+
+ const socket = dgram.createSocket('udp4');
+
+ socket.bind(common.mustCall(() => {
+ badBufferSizes.forEach((badBufferSize) => {
+ assert.throws(() => {
+ socket.setRecvBufferSize(badBufferSize);
+ }, errorObj);
+
+ assert.throws(() => {
+ socket.setSendBufferSize(badBufferSize);
+ }, errorObj);
+ });
+ socket.close();
+ }));
+}
+
+{
+ // Can set and get buffer sizes after binding the socket.
+ const socket = dgram.createSocket('udp4');
+
+ socket.bind(common.mustCall(() => {
+ socket.setRecvBufferSize(10000);
+ socket.setSendBufferSize(10000);
+
+ // note: linux will double the buffer size
+ const expectedBufferSize = common.isLinux ? 20000 : 10000;
+ assert.strictEqual(socket.getRecvBufferSize(), expectedBufferSize);
+ assert.strictEqual(socket.getSendBufferSize(), expectedBufferSize);
+ socket.close();
+ }));
+}
+
+{
+ const info = {
+ code: 'EINVAL',
+ message: 'invalid argument',
+ errno: UV_EINVAL,
+ syscall: 'uv_recv_buffer_size'
+ };
+ const errorObj = {
+ code: 'ERR_SOCKET_BUFFER_SIZE',
+ name: 'SystemError',
+ message: 'Could not get or set buffer size: uv_recv_buffer_size ' +
+ 'returned EINVAL (invalid argument)',
+ info
+ };
+ const socket = dgram.createSocket('udp4');
+ socket.bind(common.mustCall(() => {
+ assert.throws(() => {
+ socket.setRecvBufferSize(2147483648);
+ }, errorObj);
+ socket.close();
+ }));
+}
+
+{
+ const info = {
+ code: 'EINVAL',
+ message: 'invalid argument',
+ errno: UV_EINVAL,
+ syscall: 'uv_send_buffer_size'
+ };
+ const errorObj = {
+ code: 'ERR_SOCKET_BUFFER_SIZE',
+ name: 'SystemError',
+ message: 'Could not get or set buffer size: uv_send_buffer_size ' +
+ 'returned EINVAL (invalid argument)',
+ info
+ };
+ const socket = dgram.createSocket('udp4');
+ socket.bind(common.mustCall(() => {
+ assert.throws(() => {
+ socket.setSendBufferSize(2147483648);
+ }, errorObj);
+ socket.close();
+ }));
+}