1'use strict'; 2const common = require('../common'); 3const assert = require('assert'); 4const dgram = require('dgram'); 5const invalidTypes = [ 6 'test', 7 ['udp4'], 8 new String('udp4'), 9 1, 10 {}, 11 true, 12 false, 13 null, 14 undefined, 15]; 16const validTypes = [ 17 'udp4', 18 'udp6', 19 { type: 'udp4' }, 20 { type: 'udp6' }, 21]; 22const errMessage = /^Bad socket type specified\. Valid types are: udp4, udp6$/; 23 24// Error must be thrown with invalid types 25invalidTypes.forEach((invalidType) => { 26 assert.throws(() => { 27 dgram.createSocket(invalidType); 28 }, { 29 code: 'ERR_SOCKET_BAD_TYPE', 30 name: 'TypeError', 31 message: errMessage 32 }); 33}); 34 35// Error must not be thrown with valid types 36validTypes.forEach((validType) => { 37 const socket = dgram.createSocket(validType); 38 socket.close(); 39}); 40 41// Ensure buffer sizes can be set 42{ 43 const socket = dgram.createSocket({ 44 type: 'udp4', 45 recvBufferSize: 10000, 46 sendBufferSize: 15000 47 }); 48 49 socket.bind(common.mustCall(() => { 50 // note: linux will double the buffer size 51 assert.ok(socket.getRecvBufferSize() === 10000 || 52 socket.getRecvBufferSize() === 20000, 53 'SO_RCVBUF not 10000 or 20000, ' + 54 `was ${socket.getRecvBufferSize()}`); 55 assert.ok(socket.getSendBufferSize() === 15000 || 56 socket.getSendBufferSize() === 30000, 57 'SO_SNDBUF not 15000 or 30000, ' + 58 `was ${socket.getRecvBufferSize()}`); 59 socket.close(); 60 })); 61} 62