GUI -- Augmented mock server to allow descriptive names for events.
- also, lists scenarios at startup. Change-Id: I6f32d15e7ed4ec2ade4546d68d2e245001c394ec
Showing
4 changed files
with
63 additions
and
19 deletions
... | @@ -145,7 +145,7 @@ | ... | @@ -145,7 +145,7 @@ |
145 | function instColor(id, online) { | 145 | function instColor(id, online) { |
146 | // TODO: fix this.. | 146 | // TODO: fix this.. |
147 | //return cat7.get(id, !online, network.view.getTheme()); | 147 | //return cat7.get(id, !online, network.view.getTheme()); |
148 | - return 'blue'; | 148 | + return '#3E5780'; |
149 | } | 149 | } |
150 | 150 | ||
151 | // ============================== | 151 | // ============================== | ... | ... |
... | @@ -6,7 +6,8 @@ var fs = require('fs'), | ... | @@ -6,7 +6,8 @@ var fs = require('fs'), |
6 | readline = require('readline'), | 6 | readline = require('readline'), |
7 | http = require('http'), | 7 | http = require('http'), |
8 | WebSocketServer = require('websocket').server, | 8 | WebSocketServer = require('websocket').server, |
9 | - port = 8123; | 9 | + port = 8123, |
10 | + scenarioRoot = 'ev/'; | ||
10 | 11 | ||
11 | var lastcmd, // last command executed | 12 | var lastcmd, // last command executed |
12 | lastargs, // arguments to last command | 13 | lastargs, // arguments to last command |
... | @@ -15,10 +16,19 @@ var lastcmd, // last command executed | ... | @@ -15,10 +16,19 @@ var lastcmd, // last command executed |
15 | scid, // scenario ID | 16 | scid, // scenario ID |
16 | scdata, // scenario data | 17 | scdata, // scenario data |
17 | scdone, // shows when scenario is over | 18 | scdone, // shows when scenario is over |
19 | + eventsById, // map of event file names | ||
20 | + maxEvno, // highest loaded event number | ||
18 | evno, // next event number | 21 | evno, // next event number |
19 | evdata; // event data | 22 | evdata; // event data |
20 | 23 | ||
21 | 24 | ||
25 | +var scFiles = fs.readdirSync(scenarioRoot); | ||
26 | +console.log('Mock Server v1.0'); | ||
27 | +console.log('================'); | ||
28 | +console.log('Scenarios ...'); | ||
29 | +console.log(scFiles.join(', ')); | ||
30 | +console.log(); | ||
31 | + | ||
22 | 32 | ||
23 | var rl = readline.createInterface(process.stdin, process.stdout); | 33 | var rl = readline.createInterface(process.stdin, process.stdout); |
24 | rl.setPrompt('ws> '); | 34 | rl.setPrompt('ws> '); |
... | @@ -175,8 +185,8 @@ function showScenarioStatus() { | ... | @@ -175,8 +185,8 @@ function showScenarioStatus() { |
175 | } | 185 | } |
176 | 186 | ||
177 | function scenarioPath(evno) { | 187 | function scenarioPath(evno) { |
178 | - var file = evno ? ('/ev_' + evno + '_onos.json') : '/scenario.json'; | 188 | + var file = evno ? ('/' + eventsById[evno].fname) : '/scenario.json'; |
179 | - return 'ev/' + scid + file; | 189 | + return scenarioRoot + scid + file; |
180 | } | 190 | } |
181 | 191 | ||
182 | 192 | ||
... | @@ -189,6 +199,35 @@ function initScenario(verb) { | ... | @@ -189,6 +199,35 @@ function initScenario(verb) { |
189 | }); | 199 | }); |
190 | evno = 1; | 200 | evno = 1; |
191 | scdone = false; | 201 | scdone = false; |
202 | + readEventFilenames(); | ||
203 | +} | ||
204 | + | ||
205 | +function readEventFilenames() { | ||
206 | + var files = fs.readdirSync(scenarioRoot + scid), | ||
207 | + eventCount = 0, | ||
208 | + match, id, tag; | ||
209 | + | ||
210 | + maxEvno = 0; | ||
211 | + | ||
212 | + eventsById = {}; | ||
213 | + files.forEach(function (f) { | ||
214 | + match = /^ev_(\d+)_(.*)\.json$/.exec(f); | ||
215 | + if (match) { | ||
216 | + eventCount++; | ||
217 | + id = match[1]; | ||
218 | + tag = match[2]; | ||
219 | + eventsById[id] = { | ||
220 | + fname: f, | ||
221 | + num: id, | ||
222 | + tag: tag | ||
223 | + }; | ||
224 | + if (Number(id) > Number(maxEvno)) { | ||
225 | + maxEvno = id; | ||
226 | + } | ||
227 | + } | ||
228 | + | ||
229 | + }); | ||
230 | + console.log('[' + eventCount + ' events loaded, (max=' + maxEvno + ')]'); | ||
192 | } | 231 | } |
193 | 232 | ||
194 | function setScenario(id) { | 233 | function setScenario(id) { |
... | @@ -229,20 +268,25 @@ function nextEvent() { | ... | @@ -229,20 +268,25 @@ function nextEvent() { |
229 | console.warn('No current connection.'); | 268 | console.warn('No current connection.'); |
230 | rl.prompt(); | 269 | rl.prompt(); |
231 | } else { | 270 | } else { |
232 | - path = scenarioPath(evno); | 271 | + if (Number(evno) > Number(maxEvno)) { |
233 | - fs.readFile(path, 'utf8', function (err, data) { | 272 | + // done |
234 | - if (err) { | 273 | + scdone = true; |
235 | - console.log('No event #' + evno); | 274 | + console.log('Scenario DONE.'); |
236 | - scdone = true; | 275 | + } else { |
237 | - console.log('Scenario DONE'); | 276 | + // fire next event |
238 | - } else { | 277 | + path = scenarioPath(evno); |
239 | - evdata = JSON.parse(data); | 278 | + fs.readFile(path, 'utf8', function (err, data) { |
240 | - console.log(); // get past prompt | 279 | + if (err) { |
241 | - console.log('Sending event #' + evno + ' [' + evdata.event + ']'); | 280 | + console.log('Oops error: ' + err); |
242 | - connection.sendUTF(data); | 281 | + } else { |
243 | - evno++; | 282 | + evdata = JSON.parse(data); |
244 | - } | 283 | + console.log(); // get past prompt |
245 | - rl.prompt(); | 284 | + console.log('Sending event #' + evno + ' [' + evdata.event + ']'); |
246 | - }); | 285 | + connection.sendUTF(data); |
286 | + evno++; | ||
287 | + } | ||
288 | + rl.prompt(); | ||
289 | + }); | ||
290 | + } | ||
247 | } | 291 | } |
248 | } | 292 | } | ... | ... |
-
Please register or login to post a comment