git ssb

0+

wanderer🌟 / js-primea-hypervisor



Commit 81aac43ae028ee40d255b2e54f592424b12ac169

add ping pong test

wanderer committed on 5/8/2017, 2:36:47 PM
Parent: 420c091edd500452248946f7f519a3f0bd7b3a3e

Files changed

kernel.jschanged
tests/index.jschanged
kernel.jsView
@@ -100,8 +100,9 @@
100100 exceptionError: e
101101 }
102102 clearObject(this.state)
103103 Object.assign(this.state, oldState)
104+ console.log(e)
104105 }
105106
106107 this.emit('result', result)
107108 return result
tests/index.jsView
@@ -110,62 +110,45 @@
110110 process.exit()
111111 })
112112 })
113113
114- tape.skip('should wait on parent', async t => {
115- let r
116- const lock = new Promise((resolve, reject) => {
117- r = resolve
118- })
114+ tape.only('ping pong', async t => {
115+ class Ping extends BaseContainer {
116+ async run (m) {
117+ console.log('ping')
118+ let port = this.kernel.ports.getRef('child')
119+ if (!port) {
120+ port = await this.kernel.createPort('pong', 'child')
121+ }
119122
120- let parentHasFinished = false
121- let childHasFinished = false
122- class testVMContainer extends BaseContainer {
123- async run (m) {
124- console.log('in parent')
125- const port = await this.kernel.createPort(this.kernel.ports, 'test2', 'child')
126- await this.kernel.send(port, m)
127- await lock
128- return new Promise((resolve, reject) => {
129- setTimeout(() => {
130- console.log('parent done')
131- this.kernel.incrementTicks(1)
132- parentHasFinished = true
133- t.equals(childHasFinished, false, 'child should not have finished at this point')
134- resolve()
135- }, 200)
136- })
123+ if (this.kernel.ticks < 100) {
124+ this.kernel.incrementTicks(1)
125+ console.log('here')
126+ return this.kernel.send(port, new Message())
127+ }
137128 }
138129 }
139130
140- // test reviving the state
141- class testVMContainer2 extends BaseContainer {
142- async run (m) {
143- console.log('in child')
144- childHasFinished = true
145- r()
146- this.kernel.incrementTicks(1)
147- try {
148- await this.kernel.ports.getNextMessage()
149- } catch (e) {
150- console.log(e)
151- }
152- t.equals(parentHasFinished, true, 'parent should have finished at this point')
131+ class Pong extends BaseContainer {
132+ run (m) {
133+ console.log('pong')
134+ const port = m.fromPort
135+ return this.kernel.send(port, new Message())
153136 }
154137 }
155138
156- const hypervisor = new Hypervisor({dag: node.dag})
157- hypervisor.addVM('test', testVMContainer)
158- hypervisor.addVM('test2', testVMContainer2)
159- const port = hypervisor.createPort('test')
139+ const hypervisor = new Hypervisor({
140+ dag: node.dag
141+ })
160142
161- let message = new Message()
162143 try {
163- await hypervisor.send(port, message)
164- await hypervisor.createStateRoot(port, Infinity)
144+ hypervisor.registerContainer('ping', Ping)
145+ hypervisor.registerContainer('pong', Pong)
146+ const root = await hypervisor.createInstance('pong')
147+ const port = await root.createPort('ping', 'child')
148+
149+ await root.send(port, new Message())
165150 } catch (e) {
166151 console.log(e)
167152 }
168-
169- t.end()
170153 })
171154 })

Built with git-ssb-web