deno.land / std@0.166.0 / node / _tools / test / parallel / test-dgram-socket-buffer-size.js
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179// 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(); }));}
Version Info