updated TLS socket examples

This commit is contained in:
Brandon Nozaki Miller 2016-01-04 01:45:28 -08:00
parent ae5685fd19
commit b51b57b987
20 changed files with 27 additions and 732 deletions

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

@ -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();