[net2] add unix server to ping-pong test
This commit is contained in:
parent
8d0f756158
commit
20eec646b3
12
lib/net.js
12
lib/net.js
@ -342,7 +342,7 @@ Socket.prototype.address = function () {
|
||||
|
||||
|
||||
Socket.prototype.setNoDelay = function (v) {
|
||||
setNoDelay(this.fd, v);
|
||||
if (this.type == 'tcp') setNoDelay(this.fd, v);
|
||||
};
|
||||
|
||||
|
||||
@ -454,7 +454,7 @@ Server.prototype.listen = function () {
|
||||
self.emit("listening");
|
||||
}
|
||||
|
||||
if (typeof(arguments[0]) == 'string' && arguments.length == 1) {
|
||||
if (typeof(arguments[0]) == 'string') {
|
||||
// the first argument specifies a path
|
||||
self.fd = socket('unix');
|
||||
self.type = 'unix';
|
||||
@ -484,18 +484,20 @@ Server.prototype.listen = function () {
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if (arguments.length == 0) {
|
||||
} else if (!arguments[0]) {
|
||||
// Don't bind(). OS will assign a port with INADDR_ANY.
|
||||
// The port can be found with server.address()
|
||||
self.fd = socket('tcp');
|
||||
self.type = 'tcp';
|
||||
// Don't bind(). OS will assign a port with INADDR_ANY. The port will be
|
||||
// passed to the 'listening' event.
|
||||
doListen();
|
||||
} else {
|
||||
// the first argument is the port, the second an IP
|
||||
self.fd = socket('tcp');
|
||||
self.type = 'tcp';
|
||||
var port = arguments[0];
|
||||
debug("starting tcp server on port " + port);
|
||||
lookupDomainName(arguments[1], function (ip) {
|
||||
debug("starting tcp server on ip " + ip);
|
||||
bind(self.fd, port, ip);
|
||||
doListen();
|
||||
});
|
||||
|
@ -32,8 +32,6 @@ var server = new net.Server(function (socket) {
|
||||
sys.puts("server-side socket drain");
|
||||
});
|
||||
});
|
||||
server.listen("/tmp/node.sock");
|
||||
sys.puts("server fd: " + server.fd);
|
||||
|
||||
server.addListener("listening", function () {
|
||||
var c = net.createConnection("/tmp/node.sock");
|
||||
@ -56,3 +54,5 @@ server.addListener("listening", function () {
|
||||
});
|
||||
});
|
||||
|
||||
server.listen("/tmp/node.sock");
|
||||
sys.puts("server fd: " + server.fd);
|
||||
|
@ -7,16 +7,13 @@ process.Buffer.prototype.toString = function () {
|
||||
|
||||
var tests_run = 0;
|
||||
|
||||
function pingPongTest (port, host, on_complete) {
|
||||
function pingPongTest (port, host) {
|
||||
var N = 1000;
|
||||
var count = 0;
|
||||
var sent_final_ping = false;
|
||||
|
||||
var server = net.createServer(function (socket) {
|
||||
puts("connection: " + socket.remoteAddress);
|
||||
|
||||
assert.equal(true, socket.remoteAddress !== null);
|
||||
assert.equal(true, socket.remoteAddress !== undefined);
|
||||
assert.equal(server, socket.server);
|
||||
|
||||
socket.setNoDelay();
|
||||
@ -44,53 +41,58 @@ function pingPongTest (port, host, on_complete) {
|
||||
socket.server.close();
|
||||
});
|
||||
});
|
||||
server.listen(port, host);
|
||||
|
||||
var client = net.createConnection(port, host);
|
||||
server.addListener("listening", function () {
|
||||
puts("server listening on " + port + " " + host);
|
||||
|
||||
client.addListener("connect", function () {
|
||||
assert.equal(true, client.readable);
|
||||
assert.equal(true, client.writable);
|
||||
client.send("PING");
|
||||
});
|
||||
var client = net.createConnection(port, host);
|
||||
|
||||
client.addListener("data", function (data) {
|
||||
puts("client got: " + data);
|
||||
|
||||
assert.equal("PONG", data);
|
||||
count += 1;
|
||||
|
||||
if (sent_final_ping) {
|
||||
assert.equal(false, client.writable);
|
||||
client.addListener("connect", function () {
|
||||
assert.equal(true, client.readable);
|
||||
return;
|
||||
} else {
|
||||
assert.equal(true, client.writable);
|
||||
assert.equal(true, client.readable);
|
||||
}
|
||||
client.send("PING");
|
||||
});
|
||||
|
||||
if (count < N) {
|
||||
client.send("PING");
|
||||
} else {
|
||||
sent_final_ping = true;
|
||||
client.send("PING");
|
||||
client.close();
|
||||
}
|
||||
client.addListener("data", function (data) {
|
||||
puts("client got: " + data);
|
||||
|
||||
assert.equal("PONG", data);
|
||||
count += 1;
|
||||
|
||||
if (sent_final_ping) {
|
||||
assert.equal(false, client.writable);
|
||||
assert.equal(true, client.readable);
|
||||
return;
|
||||
} else {
|
||||
assert.equal(true, client.writable);
|
||||
assert.equal(true, client.readable);
|
||||
}
|
||||
|
||||
if (count < N) {
|
||||
client.send("PING");
|
||||
} else {
|
||||
sent_final_ping = true;
|
||||
client.send("PING");
|
||||
client.close();
|
||||
}
|
||||
});
|
||||
|
||||
client.addListener("close", function () {
|
||||
assert.equal(N+1, count);
|
||||
assert.equal(true, sent_final_ping);
|
||||
tests_run += 1;
|
||||
});
|
||||
});
|
||||
|
||||
client.addListener("close", function () {
|
||||
assert.equal(N+1, count);
|
||||
assert.equal(true, sent_final_ping);
|
||||
if (on_complete) on_complete();
|
||||
tests_run += 1;
|
||||
});
|
||||
server.listen(port, host);
|
||||
}
|
||||
|
||||
/* All are run at once, so run on different ports */
|
||||
pingPongTest(20989, "localhost");
|
||||
pingPongTest(20988, null);
|
||||
pingPongTest(20988);
|
||||
pingPongTest(20997, "::1");
|
||||
pingPongTest("/tmp/pingpong.sock");
|
||||
|
||||
process.addListener("exit", function () {
|
||||
assert.equal(3, tests_run);
|
||||
assert.equal(4, tests_run);
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user