git ssb

0+

wanderer🌟 / js-primea-hypervisor



Commit 68a9383b7fd27bbfb1f73cde85b047401c1f204b

add create message

wanderer committed on 5/23/2017, 10:56:38 PM
Parent: 42bb5a2f36de56726c4bd6ede09c95352d5b545d

Files changed

exoInterface.jschanged
tests/index.jschanged
exoInterface.jsView
@@ -1,8 +1,9 @@
11 const clearObject = require('object-clear')
22 const clone = require('clone')
33 const EventEmitter = require('events')
44 const PortManager = require('./portManager.js')
5+const Message = require('primea-message')
56
67 module.exports = class ExoInterface extends EventEmitter {
78 /**
89 * the ExoInterface manages the varous message passing functions and provides
@@ -140,8 +141,16 @@
140141 }
141142 }
142143
143144 /**
145+ * creates a new message
146+ * @param {*} data
147+ */
148+ createMessage (data) {
149+ return new Message(data)
150+ }
151+
152+ /**
144153 * sends a message to a given port
145154 * @param {Object} portRef - the port
146155 * @param {Message} message - the message
147156 */
tests/index.jsView
@@ -1,8 +1,7 @@
11 const tape = require('tape')
22 const IPFS = require('ipfs')
33 const Hypervisor = require('../')
4-const Message = require('primea-message')
54
65 const node = new IPFS()
76
87 class BaseContainer {
@@ -30,9 +29,9 @@
3029 })
3130
3231 tape('basic', async t => {
3332 t.plan(2)
34- const message = new Message()
33+ let message
3534 const expectedState = {
3635 '/': 'zdpuAntkdU7yBJojcBT5Q9wBhrK56NmLnwpHPKaEGMFnAXpv7'
3736 }
3837
@@ -46,8 +45,9 @@
4645 hypervisor.registerContainer('test', testVMContainer)
4746
4847 const rootContainer = await hypervisor.createInstance('test')
4948 const port = rootContainer.ports.create('test')
49+ message = rootContainer.createMessage()
5050 rootContainer.ports.bind(port, 'first')
5151
5252 await rootContainer.send(port, message)
5353
@@ -56,9 +56,9 @@
5656 })
5757
5858 tape('one child contract', async t => {
5959 t.plan(4)
60- let message = new Message()
60+ let message
6161 const expectedState = {
6262 '/': 'zdpuAofSzrBqwYs6z1r28fMeb8z5oSKF6CcWA6m22RqazgoTB'
6363 }
6464 let hasResolved = false
@@ -92,8 +92,9 @@
9292 let root = await hypervisor.createInstance('test')
9393 let port = root.ports.create('test')
9494
9595 root.ports.bind(port, 'first')
96+ message = root.createMessage()
9697
9798 await root.send(port, message)
9899 const stateRoot = await hypervisor.createStateRoot(root, Infinity)
99100 t.true(hasResolved, 'should resolve before generating the state root')
@@ -125,18 +126,18 @@
125126 }
126127
127128 if (this.kernel.ticks < 100) {
128129 this.kernel.incrementTicks(1)
129- return this.kernel.send(port, new Message())
130+ return this.kernel.send(port, this.kernel.createMessage())
130131 }
131132 }
132133 }
133134
134135 class Pong extends BaseContainer {
135136 run (m) {
136137 const port = m.fromPort
137138 this.kernel.incrementTicks(2)
138- return this.kernel.send(port, new Message())
139+ return this.kernel.send(port, this.kernel.createMessage())
139140 }
140141 }
141142
142143 const hypervisor = new Hypervisor(node.dag)
@@ -146,9 +147,9 @@
146147 const root = await hypervisor.createInstance('pong')
147148 const port = root.ports.create('ping')
148149 root.ports.bind(port, 'child')
149150
150- await root.send(port, new Message())
151+ await root.send(port, root.createMessage())
151152 await hypervisor.createStateRoot(root, Infinity)
152153
153154 t.end()
154155 })
@@ -167,11 +168,11 @@
167168 this.kernel.ports.bind(two, 'two')
168169 this.kernel.ports.bind(three, 'three')
169170
170171 await Promise.all([
171- this.kernel.send(one, new Message()),
172- this.kernel.send(two, new Message()),
173- this.kernel.send(three, new Message())
172+ this.kernel.send(one, this.kernel.createMessage()),
173+ this.kernel.send(two, this.kernel.createMessage()),
174+ this.kernel.send(three, this.kernel.createMessage())
174175 ])
175176
176177 return new Promise((resolve, reject) => {
177178 setTimeout(() => {
@@ -197,9 +198,9 @@
197198 const root = await hypervisor.createInstance('root')
198199 const port = root.ports.create('root')
199200 root.ports.bind(port, 'first')
200201
201- await root.send(port, new Message())
202+ await root.send(port, root.createMessage())
202203 await root.wait(Infinity)
203204
204205 t.equals(runs, 3, 'the number of run should be 3')
205206 const nonce = await hypervisor.graph.get(root.state, 'ports/first/link/nonce/0')
@@ -243,9 +244,9 @@
243244 const port = this.kernel.ports.create('root')
244245 this.kernel.ports.bind(port, 'three')
245246 this.kernel.ports.delete('three')
246247 try {
247- await this.kernel.send(port, new Message())
248+ await this.kernel.send(port, this.kernel.createMessage())
248249 } catch (e) {
249250 t.pass()
250251 }
251252 }
@@ -278,10 +279,10 @@
278279 this.kernel.ports.bind(one, 'one')
279280 this.kernel.ports.bind(two, 'two')
280281
281282 await Promise.all([
282- this.kernel.send(one, new Message()),
283- this.kernel.send(two, new Message())
283+ this.kernel.send(one, this.kernel.createMessage()),
284+ this.kernel.send(two, this.kernel.createMessage())
284285 ])
285286
286287 this.kernel.incrementTicks(6)
287288 } else if (this.runs === 1) {
@@ -295,16 +296,16 @@
295296
296297 class First extends BaseContainer {
297298 async run (m) {
298299 this.kernel.incrementTicks(1)
299- await this.kernel.send(m.fromPort, new Message({data: 'first'}))
300+ await this.kernel.send(m.fromPort, this.kernel.createMessage({data: 'first'}))
300301 }
301302 }
302303
303304 class Second extends BaseContainer {
304305 async run (m) {
305306 this.kernel.incrementTicks(2)
306- await this.kernel.send(m.fromPort, new Message({data: 'second'}))
307+ await this.kernel.send(m.fromPort, this.kernel.createMessage({data: 'second'}))
307308 }
308309 }
309310
310311 const hypervisor = new Hypervisor(node.dag)
@@ -316,9 +317,9 @@
316317 const root = await hypervisor.createInstance('root')
317318 const port = root.ports.create('root')
318319 root.ports.bind(port, 'first')
319320
320- root.send(port, new Message())
321+ root.send(port, root.createMessage())
321322 })
322323
323324 tape('message should arrive in the correct order, even if sent out of order', async t => {
324325 t.plan(2)
@@ -333,10 +334,10 @@
333334 this.kernel.ports.bind(one, 'one')
334335 this.kernel.ports.bind(two, 'two')
335336
336337 return Promise.all([
337- this.kernel.send(one, new Message()),
338- this.kernel.send(two, new Message())
338+ this.kernel.send(one, this.kernel.createMessage()),
339+ this.kernel.send(two, this.kernel.createMessage())
339340 ])
340341 } else if (this.runs === 1) {
341342 this.runs++
342343 t.equals(m.data, 'second', 'should recive the first message')
@@ -348,16 +349,16 @@
348349
349350 class First extends BaseContainer {
350351 run (m) {
351352 this.kernel.incrementTicks(2)
352- return this.kernel.send(m.fromPort, new Message({data: 'first'}))
353+ return this.kernel.send(m.fromPort, this.kernel.createMessage({data: 'first'}))
353354 }
354355 }
355356
356357 class Second extends BaseContainer {
357358 run (m) {
358359 this.kernel.incrementTicks(1)
359- this.kernel.send(m.fromPort, new Message({data: 'second'}))
360+ this.kernel.send(m.fromPort, this.kernel.createMessage({data: 'second'}))
360361 }
361362 }
362363
363364 const hypervisor = new Hypervisor(node.dag)
@@ -369,9 +370,9 @@
369370 const root = await hypervisor.createInstance('root')
370371 const port = root.ports.create('root')
371372 root.ports.bind(port, 'first')
372373
373- root.send(port, new Message())
374+ root.send(port, root.createMessage())
374375 })
375376
376377 tape('message should arrive in the correct order, even in a tie of ticks', async t => {
377378 t.plan(2)
@@ -386,10 +387,10 @@
386387 this.kernel.ports.bind(one, 'one')
387388 this.kernel.ports.bind(two, 'two')
388389
389390 await Promise.all([
390- this.kernel.send(one, new Message()),
391- this.kernel.send(two, new Message())
391+ this.kernel.send(one, this.kernel.createMessage()),
392+ this.kernel.send(two, this.kernel.createMessage())
392393 ])
393394
394395 this.kernel.incrementTicks(6)
395396 } else if (this.runs === 1) {
@@ -403,18 +404,18 @@
403404
404405 class First extends BaseContainer {
405406 run (m) {
406407 this.kernel.incrementTicks(2)
407- return this.kernel.send(m.fromPort, new Message({
408+ return this.kernel.send(m.fromPort, this.kernel.createMessage({
408409 data: 'first'
409410 }))
410411 }
411412 }
412413
413414 class Second extends BaseContainer {
414415 run (m) {
415416 this.kernel.incrementTicks(2)
416- return this.kernel.send(m.fromPort, new Message({
417+ return this.kernel.send(m.fromPort, this.kernel.createMessage({
417418 data: 'second'
418419 }))
419420 }
420421 }
@@ -427,9 +428,9 @@
427428
428429 const root = await hypervisor.createInstance('root')
429430 const port = await root.ports.create('root')
430431 root.ports.bind(port, 'first')
431- root.send(port, new Message())
432+ root.send(port, root.createMessage())
432433 })
433434
434435 tape('message should arrive in the correct order, even in a tie of ticks', async t => {
435436 t.plan(2)
@@ -444,10 +445,10 @@
444445 this.kernel.ports.bind(two, 'two')
445446 this.kernel.ports.bind(one, 'one')
446447
447448 return Promise.all([
448- this.kernel.send(two, new Message()),
449- this.kernel.send(one, new Message())
449+ this.kernel.send(two, this.kernel.createMessage()),
450+ this.kernel.send(one, this.kernel.createMessage())
450451 ])
451452 } else if (this.runs === 1) {
452453 this.runs++
453454 t.equals(m.data, 'second', 'should recive the first message')
@@ -459,18 +460,18 @@
459460
460461 class First extends BaseContainer {
461462 run (m) {
462463 this.kernel.incrementTicks(2)
463- return this.kernel.send(m.fromPort, new Message({
464+ return this.kernel.send(m.fromPort, this.kernel.createMessage({
464465 data: 'first'
465466 }))
466467 }
467468 }
468469
469470 class Second extends BaseContainer {
470471 run (m) {
471472 this.kernel.incrementTicks(2)
472- return this.kernel.send(m.fromPort, new Message({
473+ return this.kernel.send(m.fromPort, this.kernel.createMessage({
473474 data: 'second'
474475 }))
475476 }
476477 }
@@ -485,9 +486,9 @@
485486
486487 const port = root.ports.create('root')
487488 root.ports.bind(port, 'first')
488489
489- root.send(port, new Message())
490+ root.send(port, root.createMessage())
490491 })
491492
492493 tape('message should arrive in the correct order, with a tie in ticks but with differnt proity', async t => {
493494 t.plan(2)
@@ -502,10 +503,10 @@
502503 this.kernel.ports.bind(one, 'one')
503504 this.kernel.ports.bind(two, 'two')
504505
505506 return Promise.all([
506- this.kernel.send(two, new Message()),
507- this.kernel.send(one, new Message())
507+ this.kernel.send(two, this.kernel.createMessage()),
508+ this.kernel.send(one, this.kernel.createMessage())
508509 ])
509510 } else if (this.runs === 1) {
510511 this.runs++
511512 t.equals(m.data, 'first', 'should recive the first message')
@@ -517,9 +518,9 @@
517518
518519 class First extends BaseContainer {
519520 run (m) {
520521 this.kernel.incrementTicks(2)
521- return this.kernel.send(m.fromPort, new Message({
522+ return this.kernel.send(m.fromPort, this.kernel.createMessage({
522523 resources: {
523524 priority: 100
524525 },
525526 data: 'first'
@@ -529,9 +530,9 @@
529530
530531 class Second extends BaseContainer {
531532 run (m) {
532533 this.kernel.incrementTicks(2)
533- return this.kernel.send(m.fromPort, new Message({
534+ return this.kernel.send(m.fromPort, this.kernel.createMessage({
534535 data: 'second'
535536 }))
536537 }
537538 }
@@ -544,9 +545,9 @@
544545
545546 const root = await hypervisor.createInstance('root')
546547 const port = root.ports.create('root')
547548 root.ports.bind(port, 'first')
548- root.send(port, new Message())
549+ root.send(port, root.createMessage())
549550 })
550551
551552 tape('message should arrive in the correct order, with a tie in ticks but with differnt proity', async t => {
552553 t.plan(2)
@@ -562,10 +563,10 @@
562563 this.kernel.ports.bind(one, 'one')
563564 this.kernel.ports.bind(two, 'two')
564565
565566 return Promise.all([
566- this.kernel.send(two, new Message()),
567- this.kernel.send(one, new Message())
567+ this.kernel.send(two, this.kernel.createMessage()),
568+ this.kernel.send(one, this.kernel.createMessage())
568569 ])
569570 } else if (this.runs === 1) {
570571 this.runs++
571572 t.equals(m.data, 'second', 'should recive the first message')
@@ -577,18 +578,18 @@
577578
578579 class First extends BaseContainer {
579580 run (m) {
580581 this.kernel.incrementTicks(2)
581- return this.kernel.send(m.fromPort, new Message({
582+ return this.kernel.send(m.fromPort, this.kernel.createMessage({
582583 data: 'first'
583584 }))
584585 }
585586 }
586587
587588 class Second extends BaseContainer {
588589 run (m) {
589590 this.kernel.incrementTicks(2)
590- return this.kernel.send(m.fromPort, new Message({
591+ return this.kernel.send(m.fromPort, this.kernel.createMessage({
591592 resources: {
592593 priority: 100
593594 },
594595 data: 'second'
@@ -604,9 +605,9 @@
604605
605606 const root = await hypervisor.createInstance('root')
606607 const port = root.ports.create('root')
607608 root.ports.bind(port, 'first')
608- root.send(port, new Message())
609+ root.send(port, root.createMessage())
609610 })
610611
611612 tape('should order parent messages correctly', async t => {
612613 t.plan(1)
@@ -618,9 +619,9 @@
618619
619620 const leaf = this.kernel.ports.create('leaf')
620621 this.kernel.ports.bind(leaf, 'leaf')
621622
622- return this.kernel.send(leaf, new Message())
623+ return this.kernel.send(leaf, this.kernel.createMessage())
623624 } else {
624625 ++this.runs
625626 if (this.runs === 3) {
626627 t.equals(m.data, 'first')
@@ -631,9 +632,9 @@
631632
632633 class Leaf extends BaseContainer {
633634 run (m) {
634635 this.kernel.incrementTicks(2)
635- return this.kernel.send(m.fromPort, new Message({
636+ return this.kernel.send(m.fromPort, this.kernel.createMessage({
636637 data: 'first'
637638 }))
638639 }
639640 }
@@ -649,10 +650,10 @@
649650
650651 const port = root.ports.create('middle')
651652 root.ports.bind(port, 'first')
652653
653- await root.send(port, new Message())
654- root.send(port, new Message())
654+ await root.send(port, root.createMessage())
655+ root.send(port, root.createMessage())
655656 })
656657
657658 tape('get container instance by path', async t => {
658659 t.plan(1)

Built with git-ssb-web