Skip to content

Commit

Permalink
switching communication through pubsubshare library
Browse files Browse the repository at this point in the history
  • Loading branch information
salboaie committed Aug 17, 2015
1 parent 41e4b43 commit 1000abc
Show file tree
Hide file tree
Showing 12 changed files with 90 additions and 12 deletions.
13 changes: 9 additions & 4 deletions admin/adapters/SwarmMonitor.js
Expand Up @@ -56,16 +56,21 @@ function tick(rts){
rts.record('memory',mLoad, ['avg','max','min'], ['hm','hq','hy','dm','dq','dy']);
}

var currentRedisConnection = null;

container.service("osMonitor", ["redisConnection"], function(outOfService,redis){
container.service("osMonitor", ["redisConnection"], function(outOfService,redisConnection){
var donotsave = false;
if(outOfService){
donotsave = true;
} else {
currentRedisConnection = redisConnection;
if(!redisConnection){
throw new Error("Shared Redis connection can't be null!");
}
donotsave = false;
//maybe instantiate rts out of this function ?
rts = require('rts')({
redis: thisAdapter.nativeMiddleware.privateRedisClient,
redis: redisConnection,
gran: '1m, 5m, 1h, 1d, 1w, 1M, 1y',
points: 360,
prefix: ''
Expand Down Expand Up @@ -164,15 +169,15 @@ updateSystemLoad = function(info) {

listSwarms = function(callBack){
var redisKey = thisAdapter.nativeMiddleware.makeRedisKey("system","code");
var result = redisClient().hkeys.async(redisKey);
var result = currentRedisConnection.hkeys.async(redisKey);
(function(result){
callBack(null, result);
}).swait(result);
};

loadSwarm = function(swarmName, callBack){
var redisKey = thisAdapter.nativeMiddleware.makeRedisKey("system","code");
var result = redisClient().hget.async(redisKey,swarmName);
var result = currentRedisConnection.hget.async(redisKey,swarmName);
(function(result){
callBack(null, result);
}).swait(result);
Expand Down
6 changes: 4 additions & 2 deletions admin/adapters/UsersManager.js
Expand Up @@ -243,10 +243,12 @@ function bootSystem(){
}


container.declareDependency("UsersManagerAdapter", ["redisPersistence"], function(outOfService, redis){
container.declareDependency("UsersManagerAdapter", ["redisPersistence"], function(outOfService, redisPersistence){
if(!outOfService){
console.log("!!!!!!!!!!dec dependency");
console.log("Enabling persistence...", redisPersistence);
bootSystem();
} else {
console.log("Disabling persistence...");
}
})

4 changes: 2 additions & 2 deletions autolib/redisPersistence.js
Expand Up @@ -6,9 +6,9 @@ redisPersistence = null;
var container=require("semantic-firewall").container;


container.declareDependency("redisPersistence", ["redisConnection"], function(outOfService, redis){
container.declareDependency("redisPersistence", ["redisConnection"], function(outOfService, redisConnection){
if(!outOfService){
console.log("Initialising Redis persistence...");
redisPersistence = persistenceModule.createRedisPersistence(redisClient());
redisPersistence = persistenceModule.createRedisPersistence(redisConnection);
}
})
4 changes: 3 additions & 1 deletion etc/config
Expand Up @@ -23,10 +23,12 @@
"serverAlias":"development",
"watch":[
{"core":"etc/adapters/Core.js", "enabled":true, "step":1},
{"core":"etc/relay/RedisRelay.js", "enabled":true, "args":["-n", "RESEARCH", "-r", "localhost", "-p", "6379", "-u", "localhost:5000"], "step":1},
{"core":"etc/adapters/DefaultLogger.js", "enabled":true, "step":2},
{"node":"admin/adapters/UsersManager.js", "enabled":true , "step":3},
{"node":"admin/adapters/SwarmMonitor.js", "enabled":true , "step":4},
{"node":"adapters/argsDemo.js", "args":[], "enabled":false , "step":4},
{"core":"etc/adapters/GenericNode.js", "args":["-n" ,"Node1"], "enabled":true , "step":4},
{"core":"etc/adapters/GenericNode.js", "args":["-n" ,"Node2"], "enabled":true , "step":4},
{"core":"etc/adapters/ClientAdapter.js", "enabled":true , "step":7},
{"core":"etc/adapters/WSServer.js", "enabled":true , "step":7}
]
Expand Down
7 changes: 4 additions & 3 deletions package.json
@@ -1,7 +1,7 @@
{
"name": "swarmesb",
"description": "swarmesb demo package",
"version": "2.0.0",
"version": "2.0.1",
"homepage": "https://github.com/salboaie/SwarmESB",
"author": {
"name": "Alboaie Sinica",
Expand Down Expand Up @@ -34,7 +34,7 @@
"url": "http://www.gnu.org/licenses/gpl.html"
}
],
"_id": "swarmesb@2.0.0",
"_id": "swarmesb@2.0.1",
"dependencies" : {
"swarmcore" : ">=2.2.6",
"acl-magic" : ">=1.0.10",
Expand All @@ -43,7 +43,8 @@
"dateformat" : ">=1.0.11",
"commander" : ">=2.8.1",
"moment" : ">=2.10.3",
"rts" :">=0.0.0"
"rts" :">=0.0.0",
"tmp" :">=0.0.0"
},
"optionalDependencies": {},
"_engineSupported": true,
Expand Down
45 changes: 45 additions & 0 deletions swarms/FileTransferTest.js
@@ -0,0 +1,45 @@
/*
- Launched when a node is started to make sure that only one adapter is executing commands
- Launched also to make active a redundant node
*/
var fileTransferTest = {
startFileTransfer:function () {
console.log("Starting fileTransferTest");
this.swarm("node1Phase");
},
node1Phase:{
node:"Node1",
code:function () {
var filename = swarmTempFile.async();
var self = this;
(function(filename){
self.fileName = filename;
self.fileContent = "Test content";
require("fs").writeFileSync(filename, self.fileContent);
self.shareFile(self.fileName, "node2Confirm");
}).swait(filename);
}
},
node2Confirm:{
node:"Node2",
do:function () {
//waked up when transfer was done
console.log("File: ", this.fileName, " from Node1 is now available for node2 as ", this.__transferId);
var fileName = "tmp/"+this.__transferId;
var self = this;
this.download(this.__transferId, fileName, function(err, res){
if(require("fs").readFileSync(fileName) == self.fileContent){
self.result = "Passed";
} else {
self.result = "Failed";
}
fs.unlink(fileName);
fs.unlink(self.fileName);
self.home("result");
})
}
}
}

fileTransferTest;
22 changes: 22 additions & 0 deletions tests/FileTransferTest.js
@@ -0,0 +1,22 @@

var adapterPort = 3000;
var adapterHost = "localhost";
var assert = require('semantic-firewall').assert;
var util = require("swarmcore");

var client = util.createClient(adapterHost, adapterPort, "BenchmarkUser", "ok","BenchmarkTest", "testCtor");


assert.begin("Testing file transfers...");

assert.callback("File transfer between Node1 and Node2 ", function(callback){
client.startSwarm("FileTransferTest.js","startFileTransfer");
client.on("FileTransferTest.js",getResults);
var msg = "none";
function getResults(obj){
msg = obj.result;
assert.equal(msg,"Passed");
callback();
client.logout();
}
})
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions tmp/readme.txt
@@ -0,0 +1 @@
Do not delete. Used in tests.

0 comments on commit 1000abc

Please sign in to comment.