This commit is contained in:
nileshprasad 2016-01-04 13:35:43 -08:00
commit 4cf5906e95
26 changed files with 77 additions and 749 deletions

View file

@ -1,3 +0,0 @@
{
"sbruchmann.staticpreview.basepath": "/home/bmiller/git/node-ipc/"
}

View file

@ -8,6 +8,7 @@ A great solution for **Neural Networking** in Node.JS
npm info : [See npm trends and stats for node-ipc](http://npm-stat.com/charts.html?package=node-ipc&author=&from=&to=) npm info : [See npm trends and stats for node-ipc](http://npm-stat.com/charts.html?package=node-ipc&author=&from=&to=)
[![NPM](https://nodei.co/npm/node-ipc.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/node-ipc/) [![NPM](https://nodei.co/npm/node-ipc.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/node-ipc/)
[![Package Quality](http://npm.packagequality.com/badge/node-ipc.png)](http://packagequality.com/#?package=node-ipc)
![node-ipc npm version](https://img.shields.io/npm/v/node-ipc.svg) ![supported node version for node-ipc](https://img.shields.io/node/v/node-ipc.svg) ![total npm downloads for node-ipc](https://img.shields.io/npm/dt/node-ipc.svg) ![monthly npm downloads for node-ipc](https://img.shields.io/npm/dm/node-ipc.svg) ![npm licence for node-ipc](https://img.shields.io/npm/l/node-ipc.svg) ![node-ipc npm version](https://img.shields.io/npm/v/node-ipc.svg) ![supported node version for node-ipc](https://img.shields.io/node/v/node-ipc.svg) ![total npm downloads for node-ipc](https://img.shields.io/npm/dt/node-ipc.svg) ![monthly npm downloads for node-ipc](https://img.shields.io/npm/dm/node-ipc.svg) ![npm licence for node-ipc](https://img.shields.io/npm/l/node-ipc.svg)
[![RIAEvangelist](https://avatars3.githubusercontent.com/u/369041?v=3&s=100)](https://github.com/RIAEvangelist) [![RIAEvangelist](https://avatars3.githubusercontent.com/u/369041?v=3&s=100)](https://github.com/RIAEvangelist)
@ -150,7 +151,7 @@ You can override any of these settings by requireing colors and setting the them
`ipc.connectTo(id,path,callback);` `ipc.connectTo(id,path,callback);`
Used for connecting as a client to local Unix Sockets and Windows Sockets. ***This is the fastst way for processes on the same machine to communicate*** because it bypasses the network card which TCP and UDP must both use. Used for connecting as a client to local Unix Sockets and Windows Sockets. ***This is the fastest way for processes on the same machine to communicate*** because it bypasses the network card which TCP and UDP must both use.
| variable | required | definition | | variable | required | definition |
|----------|----------|------------| |----------|----------|------------|
@ -354,8 +355,8 @@ Used to create TCP, TLS or UDP Socket Server to which Clients can bind or other
| variable | required | definition | | variable | required | definition |
|----------|----------|------------| |----------|----------|------------|
| host | optional | If not specified this defaults to the first address in os.networkInterfaces(). For TCP, TLS & UDP servers this is most likely going to be 127.0.0.1 or ::1 | | host | optional | If not specified this defaults to the first address in os.networkInterfaces(). For TCP, TLS & UDP servers this is most likely going to be 127.0.0.1 or ::1 |
| port | optional | The port on wunich the TCP, UDP, or TLS Socket server will be bound, this defaults to 8000 if not specified | | port | optional | The port on which the TCP, UDP, or TLS Socket server will be bound, this defaults to 8000 if not specified |
| UDPType | optional | If set this will create the server as a UDP socket. 'udp4' or 'udp6' are valid values. This defaults to not being set. | UDPType | optional | If set this will create the server as a UDP socket. 'udp4' or 'udp6' are valid values. This defaults to not being set. When using udp6 make sure to specify a valid IPv6 host, like ` ::1 ` |
| callback | optional | Function to be called when the server is created | | callback | optional | Function to be called when the server is created |
***examples*** arguments can be ommitted solong as they are still in order. ***examples*** arguments can be ommitted solong as they are still in order.
@ -440,6 +441,14 @@ or specifying everything UDP
| ipc.of | This is where socket connection refrences will be stored when connecting to them as a client via the `ipc.connectTo` or `iupc.connectToNet`. They will be stored based on the ID used to create them, eg : ipc.of.mySocket| | ipc.of | This is where socket connection refrences will be stored when connecting to them as a client via the `ipc.connectTo` or `iupc.connectToNet`. They will be stored based on the ID used to create them, eg : ipc.of.mySocket|
| ipc.server| This is a refrence to the server created by `ipc.serve` or `ipc.serveNet`| | ipc.server| This is a refrence to the server created by `ipc.serve` or `ipc.serveNet`|
----
### IPC Server Methods
| method | definition |
|-----------|------------|
|start| start serving need top call ` serve ` or ` serveNet ` first to set up the server |
|stop| close the server and stop serving |
---- ----
### IPC Events ### IPC Events

View file

@ -9,6 +9,7 @@ var ipc=require('../../../node-ipc');
ipc.config.id = 'world'; ipc.config.id = 'world';
ipc.config.retry= 1500; ipc.config.retry= 1500;
ipc.config.maxConnections=1;
ipc.serveNet( ipc.serveNet(
function(){ function(){
@ -33,4 +34,11 @@ ipc.serveNet(
} }
); );
ipc.server.on(
'error',
function(err){
ipc.log('Got an ERROR!'.warn,err)
}
)
ipc.server.start(); ipc.server.start();

View file

@ -10,8 +10,8 @@ var ipc=require('../../../node-ipc');
ipc.config.id = 'world'; ipc.config.id = 'world';
ipc.config.retry= 1500; ipc.config.retry= 1500;
ipc.config.tls={ ipc.config.tls={
public: '../../../local-node-ipc-certs/server.pub', public: __dirname+'/../../../local-node-ipc-certs/server.pub',
private: '../../../local-node-ipc-certs/private/server.key' private: __dirname+'/../../../local-node-ipc-certs/private/server.key'
} }
var messages={ var messages={

View file

@ -10,11 +10,11 @@ var ipc=require('../../../node-ipc');
ipc.config.id = 'hello'; ipc.config.id = 'hello';
ipc.config.retry= 1500; ipc.config.retry= 1500;
ipc.config.tls={ ipc.config.tls={
private: '../../../local-node-ipc-certs/private/client.key', private: __dirname+'/../../../local-node-ipc-certs/private/client.key',
public: '../../../local-node-ipc-certs/client.pub', public: __dirname+'/../../../local-node-ipc-certs/client.pub',
rejectUnauthorized:false, rejectUnauthorized:false,
trustedConnections: [ trustedConnections: [
'../../../local-node-ipc-certs/server.pub' __dirname+'/../../../local-node-ipc-certs/server.pub'
] ]
}; };

View file

@ -10,13 +10,13 @@ var ipc=require('../../../node-ipc');
ipc.config.id = 'world'; ipc.config.id = 'world';
ipc.config.retry= 1500; ipc.config.retry= 1500;
ipc.config.tls={ ipc.config.tls={
public: '../../../local-node-ipc-certs/server.pub', public: __dirname+'/../../../local-node-ipc-certs/server.pub',
private: '../../../local-node-ipc-certs/private/server.key', private: __dirname+'/../../../local-node-ipc-certs/private/server.key',
dhparam: '../../../local-node-ipc-certs/private/dhparam.pem', dhparam: __dirname+'/../../../local-node-ipc-certs/private/dhparam.pem',
requestCert: true, requestCert: true,
rejectUnauthorized:false, rejectUnauthorized:false,
trustedConnections: [ trustedConnections: [
'../../../local-node-ipc-certs/client.pub' __dirname+'/../../../local-node-ipc-certs/client.pub'
] ]
} }

View file

@ -11,11 +11,11 @@ ipc.config.id = 'hello';
ipc.config.retry= 1500; ipc.config.retry= 1500;
ipc.config.networkHost='localhost'; ipc.config.networkHost='localhost';
ipc.config.tls={ ipc.config.tls={
private: '../../../local-node-ipc-certs/private/client.key', private: __dirname+'/../../../local-node-ipc-certs/private/client.key',
public: '../../../local-node-ipc-certs/client.pub', public: __dirname+'/../../../local-node-ipc-certs/client.pub',
rejectUnauthorized:true, rejectUnauthorized:true,
trustedConnections: [ trustedConnections: [
'../../../local-node-ipc-certs/server.pub' __dirname+'/../../../local-node-ipc-certs/server.pub'
] ]
}; };

View file

@ -11,13 +11,13 @@ ipc.config.id = 'world';
ipc.config.retry= 1500; ipc.config.retry= 1500;
ipc.config.networkHost='localhost'; ipc.config.networkHost='localhost';
ipc.config.tls={ ipc.config.tls={
public: '../../../local-node-ipc-certs/server.pub', public: __dirname+'/../../../local-node-ipc-certs/server.pub',
private: '../../../local-node-ipc-certs/private/server.key', private: __dirname+'/../../../local-node-ipc-certs/private/server.key',
dhparam: '../../../local-node-ipc-certs/private/dhparam.pem', dhparam: __dirname+'/../../../local-node-ipc-certs/private/dhparam.pem',
requestCert: true, requestCert: true,
rejectUnauthorized:true, rejectUnauthorized:true,
trustedConnections: [ trustedConnections: [
'../../../local-node-ipc-certs/client.pub' __dirname+'/../../../local-node-ipc-certs/client.pub'
] ]
} }

View file

@ -10,8 +10,8 @@ var ipc=require('../../../node-ipc');
ipc.config.id = 'world'; ipc.config.id = 'world';
ipc.config.retry= 1500; ipc.config.retry= 1500;
ipc.config.tls={ ipc.config.tls={
public: '../../../local-node-ipc-certs/server.pub', public: __dirname+'/../../../local-node-ipc-certs/server.pub',
private: '../../../local-node-ipc-certs/private/server.key' private: __dirname+'/../../../local-node-ipc-certs/private/server.key'
} }
ipc.serveNet( ipc.serveNet(

View file

@ -11,8 +11,8 @@ ipc.config.id = 'world';
ipc.config.retry= 1500; ipc.config.retry= 1500;
ipc.config.sync= true; ipc.config.sync= true;
ipc.config.tls={ ipc.config.tls={
public: '../../../local-node-ipc-certs/server.pub', public: __dirname+'/../../../local-node-ipc-certs/server.pub',
private: '../../../local-node-ipc-certs/private/server.key' private: __dirname+'/../../../local-node-ipc-certs/private/server.key'
} }
ipc.serveNet( ipc.serveNet(

View file

@ -14,11 +14,11 @@ ipc.config.encoding='ascii';
ipc.config.networkHost='localhost'; ipc.config.networkHost='localhost';
ipc.config.tls={ ipc.config.tls={
private: '../../../local-node-ipc-certs/private/client.key', private: __dirname+'/../../../local-node-ipc-certs/private/client.key',
public: '../../../local-node-ipc-certs/client.pub', public: __dirname+'/../../../local-node-ipc-certs/client.pub',
rejectUnauthorized:true, rejectUnauthorized:true,
trustedConnections: [ trustedConnections: [
'../../../local-node-ipc-certs/server.pub' __dirname+'/../../../local-node-ipc-certs/server.pub'
] ]
}; };

View file

@ -14,13 +14,13 @@ ipc.config.encoding='ascii';
ipc.config.networkHost='localhost'; ipc.config.networkHost='localhost';
ipc.config.tls={ ipc.config.tls={
public: '../../../local-node-ipc-certs/server.pub', public: __dirname+'/../../../local-node-ipc-certs/server.pub',
private: '../../../local-node-ipc-certs/private/server.key', private: __dirname+'/../../../local-node-ipc-certs/private/server.key',
dhparam: '../../../local-node-ipc-certs/private/dhparam.pem', dhparam: __dirname+'/../../../local-node-ipc-certs/private/dhparam.pem',
requestCert: true, requestCert: true,
rejectUnauthorized:true, rejectUnauthorized:true,
trustedConnections: [ trustedConnections: [
'../../../local-node-ipc-certs/client.pub' __dirname+'/../../../local-node-ipc-certs/client.pub'
] ]
} }

View file

@ -78,6 +78,9 @@ function init(path,config,log,port){
socket socket
); );
}, },
stop:function(){
server.server.close();
},
start : function(){ start : function(){
if(!this.path){ if(!this.path){
server.log('Socket Server Path not specified, refusing to start'.warn); server.log('Socket Server Path not specified, refusing to start'.warn);
@ -138,6 +141,7 @@ function init(path,config,log,port){
socket.address, socket.address,
function(err, bytes) { function(err, bytes) {
if(err){ if(err){
server.log('error writing data to socket'.warn,err);
server.trigger( server.trigger(
'error', 'error',
function(err){ function(err){
@ -161,6 +165,20 @@ function init(path,config,log,port){
); );
} }
server.server.on(
'error',
function(err){
server.log('server error'.warn,err);
server.trigger(
'error',
err
)
}
);
server.server.maxConnections=server.config.maxConnections;
function serverCreated(socket) { function serverCreated(socket) {
server.sockets.push(socket); server.sockets.push(socket);
@ -181,6 +199,8 @@ function init(path,config,log,port){
socket.on( socket.on(
'error', 'error',
function(err){ function(err){
server.log('server socket error'.warn,err);
server.trigger('error',err); server.trigger('error',err);
} }
); );
@ -275,11 +295,10 @@ function init(path,config,log,port){
started started
); );
server.server.maxConnections=server.maxConnections;
return; return;
} }
if(!server.udp4 && !server.udp4){ if(!server.udp4 && !server.udp6){
server.log('starting server as'.debug, (server.config.tls?'TLS':'TCP').variable); server.log('starting server as'.debug, (server.config.tls?'TLS':'TCP').variable);
server.server.listen( server.server.listen(
server.port, server.port,

View file

@ -1,6 +1,6 @@
{ {
"name": "node-ipc", "name": "node-ipc",
"version": "5.0.0", "version": "5.2.0",
"description": "A nodejs module for local and remote Inter Process Communication (IPC), Neural Networking, and able to facilitate machine learning.", "description": "A nodejs module for local and remote Inter Process Communication (IPC), Neural Networking, and able to facilitate machine learning.",
"main": "node-ipc.js", "main": "node-ipc.js",
"directories": { "directories": {

View file

@ -1,9 +0,0 @@
#node-ipc test harness
***TestHarness was intended to be run on linux.***
*the test.js file is intended to start and run all of the files in the test folder*
A full regression test should be done before each release to npm to insure that no expected or previously documented bugs pop up again.
This will also help to ensure that each new release does not create any additional bugs. However, it can never fully ensure no new bugs will be created.
Any bug that is reported and testable, which should be 99.9% of bugs, should have a test written and added to the test folder after fixing.
> Written with [StackEdit](https://stackedit.io/).

View file

@ -1,170 +0,0 @@
var ipc = require('../node-ipc'),
cmd = require('node-cmd'),
fs = require('fs'),
tests = {},
testCount=0,
fails=[],
passes=[],
debug=true;
ipc.config.id = 'testHarness';
ipc.serve(
function(){
}
);
ipc.server.on(
'pass',
function(test,socket){
ipc.log(socket.id.good,'passed',test.data);
tests[socket.id].pass.push(test);
passes.push(test);
}
);
ipc.server.on(
'fail',
function(test,socket){
ipc.log(socket.id.warn,'failed',test.data);
tests[socket.id].fail.push(test);
fails.push(test);
}
);
ipc.server.on(
'start.test',
function(data,socket){
socket.id=data.id;
if(!data.id){
ipc.log('start.test duration not passed for unknown test, so failing test'.error);
socket.destroy();
return;
}
if(!data.duration){
ipc.log(data.id.notice, 'start.test duration not passed, so failing test'.error);
ipc.disconnect(data.id);
return;
}
ipc.log(data.id.notice, 'started'.debug);
tests[data.id].started=true;
clearTimeout(
tests[data.id].delay
);
tests[data.id].delay=setTimeout(
(
function(test){
return function(){
ipc.log(test.warn," failed to complete ".error);
tests[test].fail.push('end.test');
fails.push(test+' >> end.test');
testCount--;
tests[socket.id].delay=null;
checkComplete();
}
}
)(data.id),
data.duration
)
}
);
ipc.server.on(
'end.test',
function(data,socket){
ipc.log(socket.id.notice, 'completed'.debug);
clearTimeout(
tests[socket.id].delay
);
tests[socket.id].delay=null;
testCount--;
checkComplete();
}
);
ipc.log('TestHarness started.'.debug, 'Loading Tests.'.notice);
ipc.server.define.listen['start.test']='This event should be called when a test is starting. It accepts an object with test details including the test id and duration';
ipc.server.define.listen['end.test']='This event should be called when a test is completed.';
ipc.server.define.listen['pass']='This event should be called when a test has passed, it accepts the name of the test portion which passed';
ipc.server.define.listen['fail']='This event should be called when a test has failed, it accepts the name of the test portion which failed';
ipc.server.start();
fs.readdir(
'tests',
function(err,testFolders){
if(err){
ipc.log(err,'You must execute the testHarness from the testHarness directory'.error)
return;
}
testCount=testFolders.length;
for(var i =0; i<testFolders.length; i++){
tests[testFolders[i]]={
started : false,
pass : [],
fail : [],
delay : setTimeout(
(
function(test){
return function(){
ipc.log(test.warn," failed to start ".error);
tests[test].fail.push('start.test');
fails.push(test+' >> start.test');
testCount--;
checkComplete();
}
}
)(testFolders[i]),
1000
)
};
runTests(testFolders[i])
}
}
);
function runTests(dir){
fs.readdir(
'tests/'+dir,
function(err,testFiles){
if(err){
ipc.log(err,'You must execute the testHarness from the testHarness directory'.error)
return;
}
for(var i =0; i<testFiles.length; i++){
cmd.run(
'node tests/'+dir+'/'+testFiles[i]
);
}
}
);
}
function checkComplete(){
if(testCount)
return;
ipc.log('####################################\n\n RESULTS\n\n####################################\n\n'.rainbow,tests,'\n\n');
ipc.log('####################################\n\n PASSES\n\n####################################\n\n'.good,passes.join('\n').good,'\n\n');
ipc.log('####################################\n\n FAILS\n\n####################################\n\n'.warn,fails.join('\n').warn,'\n\n');
ipc.log('####################################\n\n PASS/FAIL COUNT\n\n####################################\n\n'.data,(passes.length+' ').good,(fails.length+' ').warn,'\n\n');
fs.unlink('/tmp/app.testHarness');
fs.unlink('/tmp/app.stopRetrieing-unix-socket-test');
fs.unlink('/tmp/app.unix-socket-test');
if(!debug)
process.exit(0);
}

View file

@ -1,32 +0,0 @@
var ipc = require('../../../node-ipc'),
server=__dirname.split('/'),
server=server[server.length-1]
ipc.config.id = server+'-client';
ipc.config.stopRetrying=true;
//Wait to connect to ensure test server is started
setTimeout(
function(){
ipc.connectTo(
server,
function(){
ipc.of[server].on(
'connect',
function(){
ipc.disconnect(server);
//wait long enough that the test will fail if disconnect does not happen
setTimeout(
function(){
process.exit(0);
},
2000
);
}
);
}
);
},
400
);

View file

@ -1,48 +0,0 @@
var ipc = require('../../../node-ipc'),
expectedClient=ipc.config.id+'-client';
ipc.config.id = __dirname.split('/');
ipc.config.id = ipc.config.id[ipc.config.id.length-1]
ipc.config.maxRetries=1;
ipc.connectTo(
'testHarness',
function(){
ipc.of.testHarness.on(
'connect',
function(){
ipc.of.testHarness.emit(
'start.test',
{
id : ipc.config.id,
duration: 1800
}
);
}
)
}
);
ipc.serve(
function(){
}
);
ipc.server.on(
'socket.disconnected',
function(socket,id){
ipc.of.testHarness.emit(
'pass',
'stopRetrying-unix-server'
);
ipc.of.testHarness.emit(
'end.test'
);
process.exit(0);
}
)
ipc.server.start();

View file

@ -1,39 +0,0 @@
var ipc=require('../../../node-ipc'),
server=__dirname.split('/'),
server=server[server.length-1]
ipc.config.id = server+'-client';
ipc.config.maxRetries=50;
ipc.connectToNet(
server,
function(){
ipc.of[server].on(
'connect',
function(){
ipc.of[server].emit(
'test-test',
{
id:ipc.config.id
}
);
//wait to ensure above event has opportunity to tranfer and register client properly
setTimeout(
function(){
ipc.disconnect(server);
},
100
);
//wait long enough that the test will fail if disconnect does not happen
setTimeout(
function(){
process.exit(0);
},
2000
)
}
);
}
);

View file

@ -1,92 +0,0 @@
var ipc=require('../../../node-ipc');
ipc.config.id = __dirname.split('/');
ipc.config.id = ipc.config.id[ipc.config.id.length-1]
ipc.config.maxRetries=1;
expectedClient=ipc.config.id+'-client';
ipc.connectTo(
'testHarness',
function(){
ipc.of.testHarness.on(
'connect',
function(){
ipc.of.testHarness.emit(
'start.test',
{
id : ipc.config.id,
duration: 1200
}
);
}
)
}
);
ipc.serveNet(
function(){
}
);
ipc.server.on(
'connect',
function(){
ipc.of.testHarness.emit(
'pass',
'tcp-server-connection'
);
}
)
ipc.server.on(
'socket.disconnected',
function(socket,id){
var test='tcp-server-detected-correct-id-disconnection';
if(id==ipc.config.id+'-client'){
ipc.of.testHarness.emit(
'pass',
test
);
}else{
ipc.of.testHarness.emit(
'fail',
test+' : detected wrong id of '+socket.id+' expecting :: '+expectedClient
);
}
ipc.of.testHarness.emit(
'end.test'
);
process.exit(0);
}
)
ipc.server.on(
'test-test',
function(data,socket){
ipc.of.testHarness.emit(
'pass',
'tcp-client-message'
);
var test='tcp-client-registered with proper id'
if(socket.id==expectedClient){
ipc.of.testHarness.emit(
'pass',
test
);
}else{
ipc.of.testHarness.emit(
'fail',
test+' : detected wrong id of '+id+' expecting :: '+expectedClient
);
}
}
);
ipc.server.define.listen.message='This event type listens for message strings as value of data key.';
ipc.server.start();

View file

@ -1,42 +0,0 @@
var ipc = require('../../../node-ipc');
ipc.config.id = __dirname.split('/');
ipc.config.id = ipc.config.id[ipc.config.id.length-1]
ipc.config.maxRetries=1;
ipc.connectTo(
'testHarness',
function(){
ipc.of.testHarness.on(
'connect',
function(){
ipc.of.testHarness.emit(
'start.test',
{
id : ipc.config.id,
duration: 1200
}
);
ipc.of.testHarness.emit(
'pass',
'test-harness-pass-test'
);
ipc.of.testHarness.emit(
'fail',
'test-harness-this-test-should-fail'
);
setTimeout(
function(){
//delay exit incase you want to test failure of start.test by modifying event name
ipc.of.testHarness.emit(
'end.test'
);
ipc.of.testHarness.disconnect();
},
1000
);
}
);
}
);

View file

@ -1,36 +0,0 @@
var ipc=require('../../../node-ipc'),
server=__dirname.split('/'),
server=server[server.length-1]
ipc.config.id = server+'-client';
ipc.serveNet(
8002, // tcp test uses default of 8000 udp server.js using 8001 increment to ensure no collision
'udp4',
function(){
setTimeout( //wait to ensure UDP server.js running
function(){
ipc.server.emit(
{
address : 'localhost',
port : 8001
},
'test-test',
{
id : ipc.config.id
}
);
setTimeout( //wait to ensure test-test event sent
function(){
process.exit(0);
},
400
);
},
400
);
}
);
ipc.server.start();

View file

@ -1,101 +0,0 @@
var ipc=require('../../../node-ipc');
ipc.config.id = __dirname.split('/');
ipc.config.id = ipc.config.id[ipc.config.id.length-1]
ipc.config.maxRetries=1;
var expectedClient=ipc.config.id+'-client'
ipc.connectTo(
'testHarness',
function(){
ipc.of.testHarness.on(
'connect',
function(){
ipc.of.testHarness.emit(
'start.test',
{
id : ipc.config.id,
duration: 1200
}
);
ipc.serveNet(
8001, // tcp test uses default of 8000 increment to ensure no collision
'udp4',
function(){
ipc.of.testHarness.emit(
'pass',
'udp-server-started'
);
}
);
ipc.server.on(
'test-test',
function(data,socket){
var event={
id : 'udp-client-id',
address : 'udp-client-address',
port : 'udp-client-port'
}
ipc.of.testHarness.emit(
'pass',
'udp-client-message'
);
if(socket.id==expectedClient){
ipc.of.testHarness.emit(
'pass',
event.id
);
}else{
ipc.of.testHarness.emit(
'fail',
event.id+' : detected wrong id of '+socket.id+' expecting :: '+expectedClient
);
}
if(socket.address=='127.0.0.1'){
ipc.of.testHarness.emit(
'pass',
event.address
);
}else{
ipc.of.testHarness.emit(
'fail',
event.port
);
}
if(socket.port==8002){
ipc.of.testHarness.emit(
'pass',
event.port
);
}else{
ipc.of.testHarness.emit(
'fail',
event.port
);
}
ipc.of.testHarness.emit(
'end.test'
);
setTimeout( //wait to ensure events sent to testHarness
function(){
process.exit(0);
},
400
);
}
);
ipc.server.start();
}
)
}
);

View file

@ -1,39 +0,0 @@
var ipc = require('../../../node-ipc'),
server=__dirname.split('/'),
server=server[server.length-1]
ipc.config.id = server+'-client';
ipc.config.maxRetries=50;
ipc.connectTo(
server,
function(){
ipc.of[server].on(
'connect',
function(){
ipc.of[server].emit(
'test-test',
{
id:ipc.config.id
}
);
//wait to ensure above event has opportunity to tranfer and register client properly
setTimeout(
function(){
ipc.disconnect(server);
},
100
);
//wait long enough that the test will fail if disconnect does not happen
setTimeout(
function(){
process.exit(0);
},
2000
)
}
);
}
);

View file

@ -1,97 +0,0 @@
var ipc = require('../../../node-ipc');
ipc.config.id = __dirname.split('/');
ipc.config.id = ipc.config.id[ipc.config.id.length-1]
ipc.config.maxRetries=1;
var expectedClient=ipc.config.id+'-client';
ipc.connectTo(
'testHarness',
function(){
ipc.of.testHarness.on(
'connect',
function(){
ipc.of.testHarness.emit(
'start.test',
{
id : ipc.config.id,
duration: 1400
}
);
}
)
}
);
ipc.serve(
function(){
}
);
ipc.server.on(
'connect',
function(){
ipc.of.testHarness.emit(
'pass',
'unix-server-connection'
);
}
)
ipc.server.on(
'socket.disconnected',
function(socket,id){
var test='unix-server-detected-correct-id-disconnection';
if(id==expectedClient){
ipc.of.testHarness.emit(
'pass',
test
);
}else{
ipc.of.testHarness.emit(
'fail',
test+' : detected wrong id of '+id+' expecting :: '+expectedClient
);
}
ipc.of.testHarness.emit(
'end.test'
);
setTimeout(
function(){
process.exit(0);
},
400
)
}
)
ipc.server.on(
'test-test',
function(data,socket){
ipc.of.testHarness.emit(
'pass',
'unix-client-message'
);
var test='unix-client-registered with proper id'
if(socket.id==expectedClient){
ipc.of.testHarness.emit(
'pass',
test
);
}else{
ipc.of.testHarness.emit(
'fail',
test+' : detected wrong id of '+socket.id+' expecting :: '+expectedClient
);
}
}
);
ipc.server.define.listen['test-test']='Registers and tests ipc communication.';
ipc.server.start();