~yolanda.robla/ubuntu/trusty/nodejs/add_distribution

« back to all changes in this revision

Viewing changes to test/simple/test-cluster-bind-twice-v1.js

  • Committer: Package Import Robot
  • Author(s): Jérémy Lal
  • Date: 2013-08-14 00:16:46 UTC
  • mfrom: (7.1.40 sid)
  • Revision ID: package-import@ubuntu.com-20130814001646-bzlysfh8sd6mukbo
Tags: 0.10.15~dfsg1-4
* Update 2005 patch, adding a handful of tests that can fail on
  slow platforms.
* Add 1004 patch to fix test failures when writing NaN to buffer
  on mipsel.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright Joyent, Inc. and other Node contributors.
 
2
//
 
3
// Permission is hereby granted, free of charge, to any person obtaining a
 
4
// copy of this software and associated documentation files (the
 
5
// "Software"), to deal in the Software without restriction, including
 
6
// without limitation the rights to use, copy, modify, merge, publish,
 
7
// distribute, sublicense, and/or sell copies of the Software, and to permit
 
8
// persons to whom the Software is furnished to do so, subject to the
 
9
// following conditions:
 
10
//
 
11
// The above copyright notice and this permission notice shall be included
 
12
// in all copies or substantial portions of the Software.
 
13
//
 
14
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
15
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
16
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 
17
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 
18
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 
19
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 
20
// USE OR OTHER DEALINGS IN THE SOFTWARE.
 
21
 
 
22
// This test starts two clustered HTTP servers on the same port. It expects the
 
23
// first cluster to succeed and the second cluster to fail with EADDRINUSE.
 
24
 
 
25
var common = require('../common');
 
26
var assert = require('assert');
 
27
var cluster = require('cluster');
 
28
var fork = require('child_process').fork;
 
29
var http = require('http');
 
30
 
 
31
var id = process.argv[2];
 
32
 
 
33
if (!id) {
 
34
  var a = fork(__filename, ['one']);
 
35
  var b = fork(__filename, ['two']);
 
36
 
 
37
  a.on('message', function(m) {
 
38
    assert.equal(m, 'READY');
 
39
    b.send('START');
 
40
  });
 
41
 
 
42
  var ok = false;
 
43
 
 
44
  b.on('message', function(m) {
 
45
    assert.equal(m, 'EADDRINUSE');
 
46
    a.kill();
 
47
    b.kill();
 
48
    ok = true;
 
49
  });
 
50
 
 
51
  process.on('exit', function() {
 
52
    a.kill();
 
53
    b.kill();
 
54
    assert(ok);
 
55
  });
 
56
}
 
57
else if (id === 'one') {
 
58
  if (cluster.isMaster) cluster.fork();
 
59
  http.createServer(assert.fail).listen(common.PORT, function() {
 
60
    process.send('READY');
 
61
  });
 
62
}
 
63
else if (id === 'two') {
 
64
  if (cluster.isMaster) cluster.fork();
 
65
  process.on('message', function(m) {
 
66
    assert.equal(m, 'START');
 
67
    var server = http.createServer(assert.fail);
 
68
    server.listen(common.PORT, assert.fail);
 
69
    server.on('error', function(e) {
 
70
      assert.equal(e.code, 'EADDRINUSE');
 
71
      process.send(e.code);
 
72
    });
 
73
  });
 
74
}
 
75
else {
 
76
  assert(0); // bad command line argument
 
77
}