GUI -- Augmented mock server to allow descriptive names for events.
- also, lists scenarios at startup.
Change-Id: I6f32d15e7ed4ec2ade4546d68d2e245001c394ec
diff --git a/web/gui/src/main/webapp/app/view/topo/topoInst.js b/web/gui/src/main/webapp/app/view/topo/topoInst.js
index 0d3a2ac..12e47c6 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoInst.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoInst.js
@@ -145,7 +145,7 @@
function instColor(id, online) {
// TODO: fix this..
//return cat7.get(id, !online, network.view.getTheme());
- return 'blue';
+ return '#3E5780';
}
// ==============================
diff --git a/web/gui/src/test/_karma/ev/migrate/ev_1_onos.json b/web/gui/src/test/_karma/ev/migrate/ev_1_showSummary.json
similarity index 100%
rename from web/gui/src/test/_karma/ev/migrate/ev_1_onos.json
rename to web/gui/src/test/_karma/ev/migrate/ev_1_showSummary.json
diff --git a/web/gui/src/test/_karma/ev/migrate/ev_2_onos.json b/web/gui/src/test/_karma/ev/migrate/ev_2_addInstance.json
similarity index 100%
rename from web/gui/src/test/_karma/ev/migrate/ev_2_onos.json
rename to web/gui/src/test/_karma/ev/migrate/ev_2_addInstance.json
diff --git a/web/gui/src/test/_karma/mockserver.js b/web/gui/src/test/_karma/mockserver.js
index 319c4c8..a89bcd5 100644
--- a/web/gui/src/test/_karma/mockserver.js
+++ b/web/gui/src/test/_karma/mockserver.js
@@ -6,7 +6,8 @@
readline = require('readline'),
http = require('http'),
WebSocketServer = require('websocket').server,
- port = 8123;
+ port = 8123,
+ scenarioRoot = 'ev/';
var lastcmd, // last command executed
lastargs, // arguments to last command
@@ -15,10 +16,19 @@
scid, // scenario ID
scdata, // scenario data
scdone, // shows when scenario is over
+ eventsById, // map of event file names
+ maxEvno, // highest loaded event number
evno, // next event number
evdata; // event data
+var scFiles = fs.readdirSync(scenarioRoot);
+console.log('Mock Server v1.0');
+console.log('================');
+console.log('Scenarios ...');
+console.log(scFiles.join(', '));
+console.log();
+
var rl = readline.createInterface(process.stdin, process.stdout);
rl.setPrompt('ws> ');
@@ -175,8 +185,8 @@
}
function scenarioPath(evno) {
- var file = evno ? ('/ev_' + evno + '_onos.json') : '/scenario.json';
- return 'ev/' + scid + file;
+ var file = evno ? ('/' + eventsById[evno].fname) : '/scenario.json';
+ return scenarioRoot + scid + file;
}
@@ -189,6 +199,35 @@
});
evno = 1;
scdone = false;
+ readEventFilenames();
+}
+
+function readEventFilenames() {
+ var files = fs.readdirSync(scenarioRoot + scid),
+ eventCount = 0,
+ match, id, tag;
+
+ maxEvno = 0;
+
+ eventsById = {};
+ files.forEach(function (f) {
+ match = /^ev_(\d+)_(.*)\.json$/.exec(f);
+ if (match) {
+ eventCount++;
+ id = match[1];
+ tag = match[2];
+ eventsById[id] = {
+ fname: f,
+ num: id,
+ tag: tag
+ };
+ if (Number(id) > Number(maxEvno)) {
+ maxEvno = id;
+ }
+ }
+
+ });
+ console.log('[' + eventCount + ' events loaded, (max=' + maxEvno + ')]');
}
function setScenario(id) {
@@ -229,20 +268,25 @@
console.warn('No current connection.');
rl.prompt();
} else {
- path = scenarioPath(evno);
- fs.readFile(path, 'utf8', function (err, data) {
- if (err) {
- console.log('No event #' + evno);
- scdone = true;
- console.log('Scenario DONE');
- } else {
- evdata = JSON.parse(data);
- console.log(); // get past prompt
- console.log('Sending event #' + evno + ' [' + evdata.event + ']');
- connection.sendUTF(data);
- evno++;
- }
- rl.prompt();
- });
+ if (Number(evno) > Number(maxEvno)) {
+ // done
+ scdone = true;
+ console.log('Scenario DONE.');
+ } else {
+ // fire next event
+ path = scenarioPath(evno);
+ fs.readFile(path, 'utf8', function (err, data) {
+ if (err) {
+ console.log('Oops error: ' + err);
+ } else {
+ evdata = JSON.parse(data);
+ console.log(); // get past prompt
+ console.log('Sending event #' + evno + ' [' + evdata.event + ']');
+ connection.sendUTF(data);
+ evno++;
+ }
+ rl.prompt();
+ });
+ }
}
}