• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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