tests/index.jsView |
---|
41 | 41 | t.true(m === message, 'should recive a message') |
42 | 42 | } |
43 | 43 | } |
44 | 44 | |
45 | | - const hypervisor = new Hypervisor({dag: node.dag}) |
| 45 | + const hypervisor = new Hypervisor(node.dag) |
46 | 46 | hypervisor.registerContainer('test', testVMContainer) |
47 | 47 | |
48 | 48 | const rootContainer = await hypervisor.createInstance('test') |
49 | | - const port = await rootContainer.ports.create('test', 'first') |
| 49 | + const port = rootContainer.ports.create('test') |
| 50 | + rootContainer.ports.bind(port, 'first') |
50 | 51 | |
51 | 52 | await rootContainer.send(port, message) |
52 | 53 | |
53 | 54 | const stateRoot = await hypervisor.createStateRoot(rootContainer, Infinity) |
76 | 77 | } |
77 | 78 | |
78 | 79 | class testVMContainer extends BaseContainer { |
79 | 80 | async run (m) { |
80 | | - const port = await this.kernel.ports.create('test2', 'child') |
| 81 | + const port = this.kernel.ports.create('test2') |
| 82 | + this.kernel.ports.bind(port, 'child') |
81 | 83 | await this.kernel.send(port, m) |
82 | 84 | this.kernel.incrementTicks(1) |
83 | 85 | } |
84 | 86 | } |
85 | 87 | |
86 | | - const hypervisor = new Hypervisor({dag: node.dag}) |
| 88 | + const hypervisor = new Hypervisor(node.dag) |
87 | 89 | hypervisor.registerContainer('test', testVMContainer) |
88 | 90 | hypervisor.registerContainer('test2', testVMContainer2) |
89 | 91 | |
90 | 92 | let root = await hypervisor.createInstance('test') |
91 | | - let port = await root.ports.create('test', 'first') |
| 93 | + let port = root.ports.create('test') |
92 | 94 | |
| 95 | + root.ports.bind(port, 'first') |
| 96 | + |
93 | 97 | await root.send(port, message) |
94 | 98 | const stateRoot = await hypervisor.createStateRoot(root, Infinity) |
95 | 99 | t.true(hasResolved, 'should resolve before generating the state root') |
96 | 100 | t.deepEquals(stateRoot, expectedState, 'expected state') |
105 | 109 | } |
106 | 110 | |
107 | 111 | hypervisor.registerContainer('test', testVMContainer3) |
108 | 112 | root = await hypervisor.createInstance('test', stateRoot) |
109 | | - port = await root.ports.get('first') |
| 113 | + port = root.ports.get('first') |
110 | 114 | |
111 | | - await root.send(port, message) |
| 115 | + root.send(port, message) |
112 | 116 | }) |
113 | 117 | |
114 | 118 | tape('ping pong', async t => { |
115 | 119 | class Ping extends BaseContainer { |
116 | 120 | async run (m) { |
117 | 121 | let port = this.kernel.ports.get('child') |
118 | 122 | if (!port) { |
119 | | - port = await this.kernel.ports.create('pong', 'child') |
| 123 | + port = this.kernel.ports.create('pong') |
| 124 | + this.kernel.ports.bind(port, 'child') |
120 | 125 | } |
121 | 126 | |
122 | 127 | if (this.kernel.ticks < 100) { |
123 | 128 | this.kernel.incrementTicks(1) |
133 | 138 | return this.kernel.send(port, new Message()) |
134 | 139 | } |
135 | 140 | } |
136 | 141 | |
137 | | - const hypervisor = new Hypervisor({ |
138 | | - dag: node.dag |
139 | | - }) |
| 142 | + const hypervisor = new Hypervisor(node.dag) |
140 | 143 | |
141 | 144 | hypervisor.registerContainer('ping', Ping) |
142 | 145 | hypervisor.registerContainer('pong', Pong) |
143 | 146 | const root = await hypervisor.createInstance('pong') |
144 | | - const port = await root.ports.create('ping', 'child') |
| 147 | + const port = root.ports.create('ping') |
| 148 | + root.ports.bind(port, 'child') |
145 | 149 | |
146 | 150 | await root.send(port, new Message()) |
147 | 151 | await hypervisor.createStateRoot(root, Infinity) |
148 | 152 | |
154 | 158 | let runs = 0 |
155 | 159 | |
156 | 160 | class Root extends BaseContainer { |
157 | 161 | async run (m) { |
158 | | - const one = this.kernel.ports.create('child', 'one') |
159 | | - const two = this.kernel.ports.create('child', 'two') |
160 | | - const three = this.kernel.ports.create('child', 'three') |
| 162 | + const one = this.kernel.ports.create('child') |
| 163 | + const two = this.kernel.ports.create('child') |
| 164 | + const three = this.kernel.ports.create('child') |
161 | 165 | |
| 166 | + this.kernel.ports.bind(one, 'one') |
| 167 | + this.kernel.ports.bind(two, 'two') |
| 168 | + this.kernel.ports.bind(three, 'three') |
| 169 | + |
162 | 170 | await Promise.all([ |
163 | 171 | this.kernel.send(one, new Message()), |
164 | 172 | this.kernel.send(two, new Message()), |
165 | 173 | this.kernel.send(three, new Message()) |
180 | 188 | this.kernel.incrementTicks(2) |
181 | 189 | } |
182 | 190 | } |
183 | 191 | |
184 | | - const hypervisor = new Hypervisor({ |
185 | | - dag: node.dag |
186 | | - }) |
| 192 | + const hypervisor = new Hypervisor(node.dag) |
187 | 193 | |
188 | 194 | hypervisor.registerContainer('root', Root) |
189 | 195 | hypervisor.registerContainer('child', Child) |
190 | 196 | |
191 | 197 | const root = await hypervisor.createInstance('root') |
192 | | - const port = await root.ports.create('root', 'first') |
| 198 | + const port = root.ports.create('root') |
| 199 | + root.ports.bind(port, 'first') |
| 200 | + |
193 | 201 | await root.send(port, new Message()) |
194 | 202 | await root.wait(Infinity) |
195 | 203 | |
196 | 204 | t.equals(runs, 3, 'the number of run should be 3') |
201 | 209 | tape('traps', async t => { |
202 | 210 | t.plan(1) |
203 | 211 | class Root extends BaseContainer { |
204 | 212 | async run (m) { |
205 | | - this.kernel.ports.create('root', 'one') |
206 | | - this.kernel.ports.create('root', 'two') |
207 | | - this.kernel.ports.create('root', 'three') |
| 213 | + const one = this.kernel.ports.create('child') |
| 214 | + const two = this.kernel.ports.create('child') |
| 215 | + const three = this.kernel.ports.create('child') |
208 | 216 | |
| 217 | + this.kernel.ports.bind(one, 'one') |
| 218 | + this.kernel.ports.bind(two, 'two') |
| 219 | + this.kernel.ports.bind(three, 'three') |
| 220 | + |
209 | 221 | throw new Error('it is a trap!!!') |
210 | 222 | } |
211 | 223 | } |
212 | 224 | |
213 | | - const hypervisor = new Hypervisor({ |
214 | | - dag: node.dag |
215 | | - }) |
| 225 | + const hypervisor = new Hypervisor(node.dag) |
216 | 226 | |
217 | 227 | hypervisor.registerContainer('root', Root) |
218 | 228 | const root = await hypervisor.createInstance('root') |
219 | 229 | await root.run() |
229 | 239 | tape('invalid port referances', async t => { |
230 | 240 | t.plan(2) |
231 | 241 | class Root extends BaseContainer { |
232 | 242 | async run (m) { |
233 | | - const ports = this.kernel.ports.create('root', 'three') |
| 243 | + const port = this.kernel.ports.create('root') |
| 244 | + this.kernel.ports.bind(port, 'three') |
234 | 245 | this.kernel.ports.delete('three') |
235 | 246 | try { |
236 | | - await this.kernel.send(ports, new Message()) |
| 247 | + await this.kernel.send(port, new Message()) |
237 | 248 | } catch (e) { |
238 | 249 | t.pass() |
239 | 250 | } |
240 | 251 | } |
241 | 252 | } |
242 | 253 | |
243 | | - const hypervisor = new Hypervisor({ |
244 | | - dag: node.dag |
245 | | - }) |
| 254 | + const hypervisor = new Hypervisor(node.dag) |
246 | 255 | |
247 | 256 | hypervisor.registerContainer('root', Root) |
248 | 257 | const root = await hypervisor.createInstance('root') |
249 | 258 | await root.run() |
262 | 271 | class Root extends BaseContainer { |
263 | 272 | async run (m) { |
264 | 273 | if (!this.runs) { |
265 | 274 | this.runs = 1 |
266 | | - const one = this.kernel.ports.create('first', 'one') |
267 | | - const two = this.kernel.ports.create('second', 'two') |
| 275 | + const one = this.kernel.ports.create('first') |
| 276 | + const two = this.kernel.ports.create('second') |
268 | 277 | |
| 278 | + this.kernel.ports.bind(one, 'one') |
| 279 | + this.kernel.ports.bind(two, 'two') |
| 280 | + |
269 | 281 | await Promise.all([ |
270 | 282 | this.kernel.send(one, new Message()), |
271 | 283 | this.kernel.send(two, new Message()) |
272 | 284 | ]) |
294 | 306 | await this.kernel.send(m.fromPort, new Message({data: 'second'})) |
295 | 307 | } |
296 | 308 | } |
297 | 309 | |
298 | | - const hypervisor = new Hypervisor({ |
299 | | - dag: node.dag |
300 | | - }) |
| 310 | + const hypervisor = new Hypervisor(node.dag) |
301 | 311 | |
302 | 312 | hypervisor.registerContainer('root', Root) |
303 | 313 | hypervisor.registerContainer('first', First) |
304 | 314 | hypervisor.registerContainer('second', Second) |
305 | 315 | |
306 | 316 | const root = await hypervisor.createInstance('root') |
307 | | - const port = await root.ports.create('root', 'first') |
308 | | - await root.send(port, new Message()) |
| 317 | + const port = root.ports.create('root') |
| 318 | + root.ports.bind(port, 'first') |
| 319 | + |
| 320 | + root.send(port, new Message()) |
309 | 321 | }) |
310 | 322 | |
311 | 323 | tape('message should arrive in the correct order, even if sent out of order', async t => { |
312 | 324 | t.plan(2) |
313 | 325 | |
314 | 326 | class Root extends BaseContainer { |
315 | | - async run (m) { |
| 327 | + run (m) { |
316 | 328 | if (!this.runs) { |
317 | 329 | this.runs = 1 |
318 | | - const one = this.kernel.ports.create('first', 'one') |
319 | | - const two = this.kernel.ports.create('second', 'two') |
| 330 | + const one = this.kernel.ports.create('first') |
| 331 | + const two = this.kernel.ports.create('second') |
320 | 332 | |
321 | | - await Promise.all([ |
| 333 | + this.kernel.ports.bind(one, 'one') |
| 334 | + this.kernel.ports.bind(two, 'two') |
| 335 | + |
| 336 | + return Promise.all([ |
322 | 337 | this.kernel.send(one, new Message()), |
323 | 338 | this.kernel.send(two, new Message()) |
324 | 339 | ]) |
325 | | - |
326 | | - this.kernel.incrementTicks(6) |
327 | 340 | } else if (this.runs === 1) { |
328 | 341 | this.runs++ |
329 | 342 | t.equals(m.data, 'second', 'should recive the first message') |
330 | 343 | } else if (this.runs === 2) { |
333 | 346 | } |
334 | 347 | } |
335 | 348 | |
336 | 349 | class First extends BaseContainer { |
337 | | - async run (m) { |
| 350 | + run (m) { |
338 | 351 | this.kernel.incrementTicks(2) |
339 | | - await this.kernel.send(m.fromPort, new Message({data: 'first'})) |
| 352 | + return this.kernel.send(m.fromPort, new Message({data: 'first'})) |
340 | 353 | } |
341 | 354 | } |
342 | 355 | |
343 | 356 | class Second extends BaseContainer { |
344 | | - async run (m) { |
| 357 | + run (m) { |
345 | 358 | this.kernel.incrementTicks(1) |
346 | | - await this.kernel.send(m.fromPort, new Message({data: 'second'})) |
| 359 | + this.kernel.send(m.fromPort, new Message({data: 'second'})) |
347 | 360 | } |
348 | 361 | } |
349 | 362 | |
350 | | - const hypervisor = new Hypervisor({ |
351 | | - dag: node.dag |
352 | | - }) |
| 363 | + const hypervisor = new Hypervisor(node.dag) |
353 | 364 | |
354 | 365 | hypervisor.registerContainer('root', Root) |
355 | 366 | hypervisor.registerContainer('first', First) |
356 | 367 | hypervisor.registerContainer('second', Second) |
357 | 368 | |
358 | 369 | const root = await hypervisor.createInstance('root') |
359 | | - const port = await root.ports.create('root', 'first') |
360 | | - await root.send(port, new Message()) |
| 370 | + const port = root.ports.create('root') |
| 371 | + root.ports.bind(port, 'first') |
| 372 | + |
| 373 | + root.send(port, new Message()) |
361 | 374 | }) |
362 | 375 | |
363 | 376 | tape('message should arrive in the correct order, even in a tie of ticks', async t => { |
364 | 377 | t.plan(2) |
366 | 379 | class Root extends BaseContainer { |
367 | 380 | async run (m) { |
368 | 381 | if (!this.runs) { |
369 | 382 | this.runs = 1 |
370 | | - const one = this.kernel.ports.create('first', 'one') |
371 | | - const two = this.kernel.ports.create('second', 'two') |
| 383 | + const one = this.kernel.ports.create('first') |
| 384 | + const two = this.kernel.ports.create('second') |
372 | 385 | |
| 386 | + this.kernel.ports.bind(one, 'one') |
| 387 | + this.kernel.ports.bind(two, 'two') |
| 388 | + |
373 | 389 | await Promise.all([ |
374 | 390 | this.kernel.send(one, new Message()), |
375 | 391 | this.kernel.send(two, new Message()) |
376 | 392 | ]) |
385 | 401 | } |
386 | 402 | } |
387 | 403 | |
388 | 404 | class First extends BaseContainer { |
389 | | - async run (m) { |
| 405 | + run (m) { |
390 | 406 | this.kernel.incrementTicks(2) |
391 | | - await this.kernel.send(m.fromPort, new Message({data: 'first'})) |
| 407 | + return this.kernel.send(m.fromPort, new Message({ |
| 408 | + data: 'first' |
| 409 | + })) |
392 | 410 | } |
393 | 411 | } |
394 | 412 | |
395 | 413 | class Second extends BaseContainer { |
396 | | - async run (m) { |
| 414 | + run (m) { |
397 | 415 | this.kernel.incrementTicks(2) |
398 | | - await this.kernel.send(m.fromPort, new Message({data: 'second'})) |
| 416 | + return this.kernel.send(m.fromPort, new Message({ |
| 417 | + data: 'second' |
| 418 | + })) |
399 | 419 | } |
400 | 420 | } |
401 | 421 | |
402 | | - const hypervisor = new Hypervisor({ |
403 | | - dag: node.dag |
404 | | - }) |
| 422 | + const hypervisor = new Hypervisor(node.dag) |
405 | 423 | |
406 | 424 | hypervisor.registerContainer('root', Root) |
407 | 425 | hypervisor.registerContainer('first', First) |
408 | 426 | hypervisor.registerContainer('second', Second) |
409 | 427 | |
410 | 428 | const root = await hypervisor.createInstance('root') |
411 | | - const port = await root.ports.create('root', 'first') |
412 | | - await root.send(port, new Message()) |
| 429 | + const port = await root.ports.create('root') |
| 430 | + root.ports.bind(port, 'first') |
| 431 | + root.send(port, new Message()) |
413 | 432 | }) |
414 | 433 | |
415 | 434 | tape('message should arrive in the correct order, even in a tie of ticks', async t => { |
416 | 435 | t.plan(2) |
417 | 436 | |
418 | 437 | class Root extends BaseContainer { |
419 | | - async run (m) { |
| 438 | + run (m) { |
420 | 439 | if (!this.runs) { |
421 | 440 | this.runs = 1 |
422 | | - const two = this.kernel.ports.create('second', 'two') |
423 | | - const one = this.kernel.ports.create('first', 'one') |
| 441 | + const two = this.kernel.ports.create('second') |
| 442 | + const one = this.kernel.ports.create('first') |
424 | 443 | |
425 | | - await Promise.all([ |
| 444 | + this.kernel.ports.bind(two, 'two') |
| 445 | + this.kernel.ports.bind(one, 'one') |
| 446 | + |
| 447 | + return Promise.all([ |
426 | 448 | this.kernel.send(two, new Message()), |
427 | 449 | this.kernel.send(one, new Message()) |
428 | 450 | ]) |
429 | | - |
430 | | - this.kernel.incrementTicks(6) |
431 | 451 | } else if (this.runs === 1) { |
432 | 452 | this.runs++ |
433 | 453 | t.equals(m.data, 'first', 'should recived the second message') |
434 | 454 | } else if (this.runs === 2) { |
437 | 457 | } |
438 | 458 | } |
439 | 459 | |
440 | 460 | class First extends BaseContainer { |
441 | | - async run (m) { |
| 461 | + run (m) { |
442 | 462 | this.kernel.incrementTicks(2) |
443 | | - await this.kernel.send(m.fromPort, new Message({data: 'first'})) |
| 463 | + return this.kernel.send(m.fromPort, new Message({ |
| 464 | + data: 'first' |
| 465 | + })) |
444 | 466 | } |
445 | 467 | } |
446 | 468 | |
447 | 469 | class Second extends BaseContainer { |
448 | | - async run (m) { |
| 470 | + run (m) { |
449 | 471 | this.kernel.incrementTicks(2) |
450 | | - await this.kernel.send(m.fromPort, new Message({data: 'second'})) |
| 472 | + return this.kernel.send(m.fromPort, new Message({ |
| 473 | + data: 'second' |
| 474 | + })) |
451 | 475 | } |
452 | 476 | } |
453 | 477 | |
454 | | - const hypervisor = new Hypervisor({ |
455 | | - dag: node.dag |
456 | | - }) |
| 478 | + const hypervisor = new Hypervisor(node.dag) |
457 | 479 | |
458 | 480 | hypervisor.registerContainer('root', Root) |
459 | 481 | hypervisor.registerContainer('first', First) |
460 | 482 | hypervisor.registerContainer('second', Second) |
461 | 483 | |
462 | 484 | const root = await hypervisor.createInstance('root') |
463 | | - const port = await root.ports.create('root', 'first') |
464 | | - await root.send(port, new Message()) |
| 485 | + |
| 486 | + const port = root.ports.create('root') |
| 487 | + root.ports.bind(port, 'first') |
| 488 | + |
| 489 | + root.send(port, new Message()) |
465 | 490 | }) |
466 | 491 | |
467 | 492 | tape('message should arrive in the correct order, with a tie in ticks but with differnt proity', async t => { |
468 | 493 | t.plan(2) |
469 | 494 | |
470 | 495 | class Root extends BaseContainer { |
471 | | - async run (m) { |
| 496 | + run (m) { |
472 | 497 | if (!this.runs) { |
473 | 498 | this.runs = 1 |
474 | | - const one = this.kernel.ports.create('first', 'one') |
475 | | - const two = this.kernel.ports.create('second', 'two') |
| 499 | + const one = this.kernel.ports.create('first') |
| 500 | + const two = this.kernel.ports.create('second') |
476 | 501 | |
477 | | - await Promise.all([ |
| 502 | + this.kernel.ports.bind(one, 'one') |
| 503 | + this.kernel.ports.bind(two, 'two') |
| 504 | + |
| 505 | + return Promise.all([ |
478 | 506 | this.kernel.send(two, new Message()), |
479 | 507 | this.kernel.send(one, new Message()) |
480 | 508 | ]) |
481 | | - |
482 | | - this.kernel.incrementTicks(6) |
483 | 509 | } else if (this.runs === 1) { |
484 | 510 | this.runs++ |
485 | 511 | t.equals(m.data, 'first', 'should recive the first message') |
486 | 512 | } else if (this.runs === 2) { |
489 | 515 | } |
490 | 516 | } |
491 | 517 | |
492 | 518 | class First extends BaseContainer { |
493 | | - async run (m) { |
| 519 | + run (m) { |
494 | 520 | this.kernel.incrementTicks(2) |
495 | | - await this.kernel.send(m.fromPort, new Message({ |
| 521 | + return this.kernel.send(m.fromPort, new Message({ |
496 | 522 | resources: { |
497 | 523 | priority: 100 |
498 | 524 | }, |
499 | 525 | data: 'first' |
501 | 527 | } |
502 | 528 | } |
503 | 529 | |
504 | 530 | class Second extends BaseContainer { |
505 | | - async run (m) { |
| 531 | + run (m) { |
506 | 532 | this.kernel.incrementTicks(2) |
507 | | - await this.kernel.send(m.fromPort, new Message({data: 'second'})) |
| 533 | + return this.kernel.send(m.fromPort, new Message({ |
| 534 | + data: 'second' |
| 535 | + })) |
508 | 536 | } |
509 | 537 | } |
510 | 538 | |
511 | | - const hypervisor = new Hypervisor({ |
512 | | - dag: node.dag |
513 | | - }) |
| 539 | + const hypervisor = new Hypervisor(node.dag) |
514 | 540 | |
515 | 541 | hypervisor.registerContainer('root', Root) |
516 | 542 | hypervisor.registerContainer('first', First) |
517 | 543 | hypervisor.registerContainer('second', Second) |
518 | 544 | |
519 | 545 | const root = await hypervisor.createInstance('root') |
520 | | - const port = await root.ports.create('root', 'first') |
521 | | - await root.send(port, new Message()) |
| 546 | + const port = root.ports.create('root') |
| 547 | + root.ports.bind(port, 'first') |
| 548 | + root.send(port, new Message()) |
522 | 549 | }) |
523 | 550 | |
524 | 551 | tape('message should arrive in the correct order, with a tie in ticks but with differnt proity', async t => { |
525 | 552 | t.plan(2) |
526 | 553 | |
527 | 554 | class Root extends BaseContainer { |
528 | | - async run (m) { |
| 555 | + run (m) { |
529 | 556 | if (!this.runs) { |
530 | 557 | this.runs = 1 |
531 | | - const one = this.kernel.ports.create('first', 'one') |
532 | | - const two = this.kernel.ports.create('second', 'two') |
533 | 558 | |
534 | | - await Promise.all([ |
| 559 | + const one = this.kernel.ports.create('first') |
| 560 | + const two = this.kernel.ports.create('second') |
| 561 | + |
| 562 | + this.kernel.ports.bind(one, 'one') |
| 563 | + this.kernel.ports.bind(two, 'two') |
| 564 | + |
| 565 | + return Promise.all([ |
535 | 566 | this.kernel.send(two, new Message()), |
536 | 567 | this.kernel.send(one, new Message()) |
537 | 568 | ]) |
538 | | - |
539 | | - this.kernel.incrementTicks(6) |
540 | 569 | } else if (this.runs === 1) { |
541 | 570 | this.runs++ |
542 | 571 | t.equals(m.data, 'second', 'should recive the first message') |
543 | 572 | } else if (this.runs === 2) { |
546 | 575 | } |
547 | 576 | } |
548 | 577 | |
549 | 578 | class First extends BaseContainer { |
550 | | - async run (m) { |
| 579 | + run (m) { |
551 | 580 | this.kernel.incrementTicks(2) |
552 | | - await this.kernel.send(m.fromPort, new Message({ |
| 581 | + return this.kernel.send(m.fromPort, new Message({ |
553 | 582 | data: 'first' |
554 | 583 | })) |
555 | 584 | } |
556 | 585 | } |
557 | 586 | |
558 | 587 | class Second extends BaseContainer { |
559 | | - async run (m) { |
| 588 | + run (m) { |
560 | 589 | this.kernel.incrementTicks(2) |
561 | | - await this.kernel.send(m.fromPort, new Message({ |
| 590 | + return this.kernel.send(m.fromPort, new Message({ |
562 | 591 | resources: { |
563 | 592 | priority: 100 |
564 | 593 | }, |
565 | 594 | data: 'second' |
566 | 595 | })) |
567 | 596 | } |
568 | 597 | } |
569 | 598 | |
570 | | - const hypervisor = new Hypervisor({ |
571 | | - dag: node.dag |
572 | | - }) |
| 599 | + const hypervisor = new Hypervisor(node.dag) |
573 | 600 | |
574 | 601 | hypervisor.registerContainer('root', Root) |
575 | 602 | hypervisor.registerContainer('first', First) |
576 | 603 | hypervisor.registerContainer('second', Second) |
577 | 604 | |
578 | 605 | const root = await hypervisor.createInstance('root') |
579 | | - const port = await root.ports.create('root', 'first') |
580 | | - await root.send(port, new Message()) |
| 606 | + const port = root.ports.create('root') |
| 607 | + root.ports.bind(port, 'first') |
| 608 | + root.send(port, new Message()) |
581 | 609 | }) |
582 | 610 | |
583 | 611 | tape('should order parent messages correctly', async t => { |
584 | 612 | t.plan(1) |
585 | 613 | class Middle extends BaseContainer { |
586 | | - async run (m) { |
| 614 | + run (m) { |
587 | 615 | if (!this.runs) { |
588 | 616 | this.runs = 1 |
589 | 617 | this.kernel.incrementTicks(1) |
590 | | - const leaf = this.kernel.ports.create('leaf', 'leaf') |
591 | | - await this.kernel.send(leaf, new Message()) |
| 618 | + |
| 619 | + const leaf = this.kernel.ports.create('leaf') |
| 620 | + this.kernel.ports.bind(leaf, 'leaf') |
| 621 | + |
| 622 | + return this.kernel.send(leaf, new Message()) |
592 | 623 | } else { |
593 | 624 | ++this.runs |
594 | 625 | if (this.runs === 3) { |
595 | 626 | t.equals(m.data, 'first') |
598 | 629 | } |
599 | 630 | } |
600 | 631 | |
601 | 632 | class Leaf extends BaseContainer { |
602 | | - async run (m) { |
| 633 | + run (m) { |
603 | 634 | this.kernel.incrementTicks(2) |
604 | | - await this.kernel.send(m.fromPort, new Message({ |
| 635 | + return this.kernel.send(m.fromPort, new Message({ |
605 | 636 | data: 'first' |
606 | 637 | })) |
607 | 638 | } |
608 | 639 | } |
609 | 640 | |
610 | | - const hypervisor = new Hypervisor({ |
611 | | - dag: node.dag |
612 | | - }) |
| 641 | + const hypervisor = new Hypervisor(node.dag) |
613 | 642 | |
614 | 643 | hypervisor.registerContainer('root', BaseContainer) |
615 | 644 | hypervisor.registerContainer('middle', Middle) |
616 | 645 | hypervisor.registerContainer('leaf', Leaf) |
617 | 646 | |
618 | 647 | const root = await hypervisor.createInstance('root') |
619 | 648 | root.incrementTicks(2) |
620 | 649 | |
621 | | - const port = await root.ports.create('middle', 'first') |
| 650 | + const port = root.ports.create('middle') |
| 651 | + root.ports.bind(port, 'first') |
622 | 652 | |
623 | 653 | await root.send(port, new Message()) |
624 | | - await root.send(port, new Message()) |
| 654 | + root.send(port, new Message()) |
625 | 655 | }) |
626 | 656 | }) |