1
0
Fork 0

Updated high-level js communication library for newest version of agency comm

This commit is contained in:
Michael Hackstein 2014-01-20 16:37:56 +01:00
parent 77003e90c0
commit c7f86b3def
2 changed files with 48 additions and 32 deletions

View File

@ -55,7 +55,7 @@ exports.Communication = function() {
if (n === "Lock" || n === "Version") { if (n === "Lock" || n === "Version") {
return; return;
} }
res[JSON.parse(v).name] = n; res[v.name] = n;
}); });
return res; return res;
}; };
@ -82,7 +82,8 @@ exports.Communication = function() {
}; };
var stubs = { var stubs = {
get: function(route, recursive) { get: function(route, recursive) {
return _agency.get(route, recursive); var res = _agency.get(route, recursive);
return res;
}, },
set: function(route, name, value) { set: function(route, name, value) {
if (value !== undefined) { if (value !== undefined) {
@ -281,7 +282,7 @@ exports.Communication = function() {
var ColObject = function(route, writeAccess) { var ColObject = function(route, writeAccess) {
this.info = function() { this.info = function() {
var res = route.get(); var res = route.get();
return JSON.parse(_.values(res)[0]); return _.values(res)[0];
}; };
this.getShards = function() { this.getShards = function() {
var info = this.info(); var info = this.info();
@ -305,7 +306,7 @@ exports.Communication = function() {
this.moveShard = function(shard, target) { this.moveShard = function(shard, target) {
var toUpdate = this.info(); var toUpdate = this.info();
toUpdate.shards[shard] = target; toUpdate.shards[shard] = target;
return route.set(JSON.stringify(toUpdate)); return route.set(toUpdate);
}; };
} }
}; };
@ -573,7 +574,8 @@ exports.Communication = function() {
this.list = function() { this.list = function() {
var res = agency.sync.beat.get(true); var res = agency.sync.beat.get(true);
_.each(res, function(v, k) { _.each(res, function(v, k) {
res[k] = JSON.parse(v); delete res[k];
res[splitServerName(k)] = v;
}); });
return res; return res;
}; };

View File

@ -93,14 +93,14 @@
}; };
var collections = { var collections = {
_system: { _system: {
"98213": JSON.stringify({name: "_graphs"}), "98213": {name: "_graphs"},
"87123": JSON.stringify(vInfo), "87123": vInfo,
"89123": JSON.stringify({name: "e"}) "89123": {name: "e"}
}, },
a_db: { a_db: {
"11235": JSON.stringify({name: "s"}), "11235": {name: "s"},
"6512": JSON.stringify({name: "a"}), "6512": {name: "a"},
"123": JSON.stringify({name: "d"}) "123": {name: "d"}
} }
}; };
var ips = { var ips = {
@ -115,30 +115,30 @@
"cindy": "tcp://192.168.1.3:8529" "cindy": "tcp://192.168.1.3:8529"
}; };
var heartbeats = { var heartbeats = {
"pavel": JSON.stringify({ pavel: {
status: "SERVINGSYNC", status: "SERVINGSYNC",
time: (new Date()).toISOString() time: (new Date()).toISOString()
}), },
"paul": JSON.stringify({ paul: {
status: "SERVINGSYNC", status: "SERVINGSYNC",
time: (new Date()).toISOString() time: (new Date()).toISOString()
}), },
"patricia": JSON.stringify({ patricia: {
status: "SERVINGASYNC", status: "SERVINGASYNC",
time: (new Date()).toISOString() time: (new Date()).toISOString()
}), },
"sandro": JSON.stringify({ sandro: {
status: "INSYNC", status: "INSYNC",
time: (new Date()).toISOString() time: (new Date()).toISOString()
}), },
"sandra": JSON.stringify({ sandra: {
status: "SYNCING", status: "SYNCING",
time: (new Date()).toISOString() time: (new Date()).toISOString()
}), },
"sally": JSON.stringify({ sally: {
status: "INSYNC", status: "INSYNC",
time: (new Date()).toISOString() time: (new Date()).toISOString()
}) }
}; };
dummy = {}; dummy = {};
dummy.target = {}; dummy.target = {};
@ -147,7 +147,7 @@
dummy.target.databases = databases; dummy.target.databases = databases;
dummy.target.syscollections = createResult([agencyRoutes.target, agencyRoutes.sub.databases, agencyRoutes.sub.colls, "_system"], collections._system); dummy.target.syscollections = createResult([agencyRoutes.target, agencyRoutes.sub.databases, agencyRoutes.sub.colls, "_system"], collections._system);
dummy.target.acollections = createResult([agencyRoutes.target, agencyRoutes.sub.databases, agencyRoutes.sub.colls, "a_db"], collections.a_db); dummy.target.acollections = createResult([agencyRoutes.target, agencyRoutes.sub.databases, agencyRoutes.sub.colls, "a_db"], collections.a_db);
dummy.target.vInfo = JSON.stringify(vInfo); dummy.target.vInfo = vInfo;
dummy.plan = {}; dummy.plan = {};
dummy.plan.servers = createResult([agencyRoutes.plan, agencyRoutes.sub.servers], dbServers); dummy.plan.servers = createResult([agencyRoutes.plan, agencyRoutes.sub.servers], dbServers);
@ -155,7 +155,7 @@
dummy.plan.databases = databases; dummy.plan.databases = databases;
dummy.plan.syscollections = createResult([agencyRoutes.plan, agencyRoutes.sub.databases, agencyRoutes.sub.colls, "_system"], collections._system); dummy.plan.syscollections = createResult([agencyRoutes.plan, agencyRoutes.sub.databases, agencyRoutes.sub.colls, "_system"], collections._system);
dummy.plan.acollections = createResult([agencyRoutes.plan, agencyRoutes.sub.databases, agencyRoutes.sub.colls, "a_db"], collections.a_db); dummy.plan.acollections = createResult([agencyRoutes.plan, agencyRoutes.sub.databases, agencyRoutes.sub.colls, "a_db"], collections.a_db);
dummy.plan.vInfo = JSON.stringify(vInfo); dummy.plan.vInfo = vInfo;
dummy.current = {}; dummy.current = {};
dummy.current.servers = createResult([agencyRoutes.current, agencyRoutes.sub.servers], dbServers); dummy.current.servers = createResult([agencyRoutes.current, agencyRoutes.sub.servers], dbServers);
@ -164,10 +164,12 @@
dummy.current.databases = databases; dummy.current.databases = databases;
dummy.current.syscollections = createResult([agencyRoutes.current, agencyRoutes.sub.databases, agencyRoutes.sub.colls, "_system"], collections._system); dummy.current.syscollections = createResult([agencyRoutes.current, agencyRoutes.sub.databases, agencyRoutes.sub.colls, "_system"], collections._system);
dummy.current.acollections = createResult([agencyRoutes.current, agencyRoutes.sub.databases, agencyRoutes.sub.colls, "a_db"], collections.a_db); dummy.current.acollections = createResult([agencyRoutes.current, agencyRoutes.sub.databases, agencyRoutes.sub.colls, "a_db"], collections.a_db);
dummy.current.vInfo = JSON.stringify(vInfo); dummy.current.vInfo = vInfo;
dummy.sync = {}; dummy.sync = {};
dummy.sync.heartbeats = heartbeats; dummy.sync.heartbeats = heartbeats;
dummy.sync.heartbeats = createResult([agencyRoutes.registered, agencyRoutes.sub.beat], heartbeats);
dummy.sync.interval = "1000";
}; };
var setup = function() { var setup = function() {
resetToDefault(); resetToDefault();
@ -233,7 +235,7 @@
} }
if (parts[1] === agencyRoutes.sub.interval) { if (parts[1] === agencyRoutes.sub.interval) {
res = {}; res = {};
res[route] = JSON.stringify(dummy.sync.interval); res[route] = dummy.sync.interval;
return res; return res;
} }
break; break;
@ -582,7 +584,7 @@
testGetCollectionMetaInfo: function() { testGetCollectionMetaInfo: function() {
var sysdb = dbs.select("_system"); var sysdb = dbs.select("_system");
assertEqual(sysdb.collection("v").info(), JSON.parse(dummy.target.vInfo)); assertEqual(sysdb.collection("v").info(), dummy.target.vInfo);
}, },
testGetResponsibilitiesForCollection: function() { testGetResponsibilitiesForCollection: function() {
@ -747,7 +749,7 @@
testGetCollectionMetaInfo: function() { testGetCollectionMetaInfo: function() {
var sysdb = dbs.select("_system"); var sysdb = dbs.select("_system");
assertEqual(sysdb.collection("v").info(), JSON.parse(dummy.target.vInfo)); assertEqual(sysdb.collection("v").info(), dummy.target.vInfo);
}, },
testGetResponsibilitiesForCollection: function() { testGetResponsibilitiesForCollection: function() {
@ -897,7 +899,7 @@
testGetCollectionMetaInfo: function() { testGetCollectionMetaInfo: function() {
var sysdb = dbs.select("_system"); var sysdb = dbs.select("_system");
assertEqual(sysdb.collection("v").info(), JSON.parse(dummy.target.vInfo)); assertEqual(sysdb.collection("v").info(), dummy.target.vInfo);
}, },
testGetResponsibilitiesForCollection: function() { testGetResponsibilitiesForCollection: function() {
@ -972,10 +974,22 @@
assertEqual(beats.getOutSync(), ["patricia", "sandra"].sort()); assertEqual(beats.getOutSync(), ["patricia", "sandra"].sort());
}, },
testGetNoBeat: function() { testGetNoBeatIfAllWork: function() {
assertEqual(beats.noBeat(), []); assertEqual(beats.noBeat(), []);
} },
testGetNoBeatIfOneFails: function() {
// Rewrite Beat
var now = new Date(),
old = new Date(now - 5 * 60 * 1000),
route = [
agencyRoutes.registered,
agencyRoutes.sub.beat,
"pavel"
].join("/");
dummy.sync.heartbeats[route].time = old.toISOString();
assertEqual(beats.noBeat(), ["pavel"]);
}
}; };
}; };