Skip to content

Commit

Permalink
add create message
Browse files Browse the repository at this point in the history
  • Loading branch information
wanderer committed May 23, 2017
1 parent 42bb5a2 commit 68a9383
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 45 deletions.
9 changes: 9 additions & 0 deletions exoInterface.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ const clearObject = require('object-clear')
const clone = require('clone')
const EventEmitter = require('events')
const PortManager = require('./portManager.js')
const Message = require('primea-message')

module.exports = class ExoInterface extends EventEmitter {
/**
Expand Down Expand Up @@ -140,6 +141,14 @@ module.exports = class ExoInterface extends EventEmitter {
}
}

/**
* creates a new message
* @param {*} data
*/
createMessage (data) {
return new Message(data)
}

/**
* sends a message to a given port
* @param {Object} portRef - the port
Expand Down
91 changes: 46 additions & 45 deletions tests/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
const tape = require('tape')
const IPFS = require('ipfs')
const Hypervisor = require('../')
const Message = require('primea-message')

const node = new IPFS()

Expand Down Expand Up @@ -31,7 +30,7 @@ node.on('start', () => {

tape('basic', async t => {
t.plan(2)
const message = new Message()
let message
const expectedState = {
'/': 'zdpuAntkdU7yBJojcBT5Q9wBhrK56NmLnwpHPKaEGMFnAXpv7'
}
Expand All @@ -47,6 +46,7 @@ node.on('start', () => {

const rootContainer = await hypervisor.createInstance('test')
const port = rootContainer.ports.create('test')
message = rootContainer.createMessage()
rootContainer.ports.bind(port, 'first')

await rootContainer.send(port, message)
Expand All @@ -57,7 +57,7 @@ node.on('start', () => {

tape('one child contract', async t => {
t.plan(4)
let message = new Message()
let message
const expectedState = {
'/': 'zdpuAofSzrBqwYs6z1r28fMeb8z5oSKF6CcWA6m22RqazgoTB'
}
Expand Down Expand Up @@ -93,6 +93,7 @@ node.on('start', () => {
let port = root.ports.create('test')

root.ports.bind(port, 'first')
message = root.createMessage()

await root.send(port, message)
const stateRoot = await hypervisor.createStateRoot(root, Infinity)
Expand Down Expand Up @@ -126,7 +127,7 @@ node.on('start', () => {

if (this.kernel.ticks < 100) {
this.kernel.incrementTicks(1)
return this.kernel.send(port, new Message())
return this.kernel.send(port, this.kernel.createMessage())
}
}
}
Expand All @@ -135,7 +136,7 @@ node.on('start', () => {
run (m) {
const port = m.fromPort
this.kernel.incrementTicks(2)
return this.kernel.send(port, new Message())
return this.kernel.send(port, this.kernel.createMessage())
}
}

Expand All @@ -147,7 +148,7 @@ node.on('start', () => {
const port = root.ports.create('ping')
root.ports.bind(port, 'child')

await root.send(port, new Message())
await root.send(port, root.createMessage())
await hypervisor.createStateRoot(root, Infinity)

t.end()
Expand All @@ -168,9 +169,9 @@ node.on('start', () => {
this.kernel.ports.bind(three, 'three')

await Promise.all([
this.kernel.send(one, new Message()),
this.kernel.send(two, new Message()),
this.kernel.send(three, new Message())
this.kernel.send(one, this.kernel.createMessage()),
this.kernel.send(two, this.kernel.createMessage()),
this.kernel.send(three, this.kernel.createMessage())
])

return new Promise((resolve, reject) => {
Expand Down Expand Up @@ -198,7 +199,7 @@ node.on('start', () => {
const port = root.ports.create('root')
root.ports.bind(port, 'first')

await root.send(port, new Message())
await root.send(port, root.createMessage())
await root.wait(Infinity)

t.equals(runs, 3, 'the number of run should be 3')
Expand Down Expand Up @@ -244,7 +245,7 @@ node.on('start', () => {
this.kernel.ports.bind(port, 'three')
this.kernel.ports.delete('three')
try {
await this.kernel.send(port, new Message())
await this.kernel.send(port, this.kernel.createMessage())
} catch (e) {
t.pass()
}
Expand Down Expand Up @@ -279,8 +280,8 @@ node.on('start', () => {
this.kernel.ports.bind(two, 'two')

await Promise.all([
this.kernel.send(one, new Message()),
this.kernel.send(two, new Message())
this.kernel.send(one, this.kernel.createMessage()),
this.kernel.send(two, this.kernel.createMessage())
])

this.kernel.incrementTicks(6)
Expand All @@ -296,14 +297,14 @@ node.on('start', () => {
class First extends BaseContainer {
async run (m) {
this.kernel.incrementTicks(1)
await this.kernel.send(m.fromPort, new Message({data: 'first'}))
await this.kernel.send(m.fromPort, this.kernel.createMessage({data: 'first'}))
}
}

class Second extends BaseContainer {
async run (m) {
this.kernel.incrementTicks(2)
await this.kernel.send(m.fromPort, new Message({data: 'second'}))
await this.kernel.send(m.fromPort, this.kernel.createMessage({data: 'second'}))
}
}

Expand All @@ -317,7 +318,7 @@ node.on('start', () => {
const port = root.ports.create('root')
root.ports.bind(port, 'first')

root.send(port, new Message())
root.send(port, root.createMessage())
})

tape('message should arrive in the correct order, even if sent out of order', async t => {
Expand All @@ -334,8 +335,8 @@ node.on('start', () => {
this.kernel.ports.bind(two, 'two')

return Promise.all([
this.kernel.send(one, new Message()),
this.kernel.send(two, new Message())
this.kernel.send(one, this.kernel.createMessage()),
this.kernel.send(two, this.kernel.createMessage())
])
} else if (this.runs === 1) {
this.runs++
Expand All @@ -349,14 +350,14 @@ node.on('start', () => {
class First extends BaseContainer {
run (m) {
this.kernel.incrementTicks(2)
return this.kernel.send(m.fromPort, new Message({data: 'first'}))
return this.kernel.send(m.fromPort, this.kernel.createMessage({data: 'first'}))
}
}

class Second extends BaseContainer {
run (m) {
this.kernel.incrementTicks(1)
this.kernel.send(m.fromPort, new Message({data: 'second'}))
this.kernel.send(m.fromPort, this.kernel.createMessage({data: 'second'}))
}
}

Expand All @@ -370,7 +371,7 @@ node.on('start', () => {
const port = root.ports.create('root')
root.ports.bind(port, 'first')

root.send(port, new Message())
root.send(port, root.createMessage())
})

tape('message should arrive in the correct order, even in a tie of ticks', async t => {
Expand All @@ -387,8 +388,8 @@ node.on('start', () => {
this.kernel.ports.bind(two, 'two')

await Promise.all([
this.kernel.send(one, new Message()),
this.kernel.send(two, new Message())
this.kernel.send(one, this.kernel.createMessage()),
this.kernel.send(two, this.kernel.createMessage())
])

this.kernel.incrementTicks(6)
Expand All @@ -404,7 +405,7 @@ node.on('start', () => {
class First extends BaseContainer {
run (m) {
this.kernel.incrementTicks(2)
return this.kernel.send(m.fromPort, new Message({
return this.kernel.send(m.fromPort, this.kernel.createMessage({
data: 'first'
}))
}
Expand All @@ -413,7 +414,7 @@ node.on('start', () => {
class Second extends BaseContainer {
run (m) {
this.kernel.incrementTicks(2)
return this.kernel.send(m.fromPort, new Message({
return this.kernel.send(m.fromPort, this.kernel.createMessage({
data: 'second'
}))
}
Expand All @@ -428,7 +429,7 @@ node.on('start', () => {
const root = await hypervisor.createInstance('root')
const port = await root.ports.create('root')
root.ports.bind(port, 'first')
root.send(port, new Message())
root.send(port, root.createMessage())
})

tape('message should arrive in the correct order, even in a tie of ticks', async t => {
Expand All @@ -445,8 +446,8 @@ node.on('start', () => {
this.kernel.ports.bind(one, 'one')

return Promise.all([
this.kernel.send(two, new Message()),
this.kernel.send(one, new Message())
this.kernel.send(two, this.kernel.createMessage()),
this.kernel.send(one, this.kernel.createMessage())
])
} else if (this.runs === 1) {
this.runs++
Expand All @@ -460,7 +461,7 @@ node.on('start', () => {
class First extends BaseContainer {
run (m) {
this.kernel.incrementTicks(2)
return this.kernel.send(m.fromPort, new Message({
return this.kernel.send(m.fromPort, this.kernel.createMessage({
data: 'first'
}))
}
Expand All @@ -469,7 +470,7 @@ node.on('start', () => {
class Second extends BaseContainer {
run (m) {
this.kernel.incrementTicks(2)
return this.kernel.send(m.fromPort, new Message({
return this.kernel.send(m.fromPort, this.kernel.createMessage({
data: 'second'
}))
}
Expand All @@ -486,7 +487,7 @@ node.on('start', () => {
const port = root.ports.create('root')
root.ports.bind(port, 'first')

root.send(port, new Message())
root.send(port, root.createMessage())
})

tape('message should arrive in the correct order, with a tie in ticks but with differnt proity', async t => {
Expand All @@ -503,8 +504,8 @@ node.on('start', () => {
this.kernel.ports.bind(two, 'two')

return Promise.all([
this.kernel.send(two, new Message()),
this.kernel.send(one, new Message())
this.kernel.send(two, this.kernel.createMessage()),
this.kernel.send(one, this.kernel.createMessage())
])
} else if (this.runs === 1) {
this.runs++
Expand All @@ -518,7 +519,7 @@ node.on('start', () => {
class First extends BaseContainer {
run (m) {
this.kernel.incrementTicks(2)
return this.kernel.send(m.fromPort, new Message({
return this.kernel.send(m.fromPort, this.kernel.createMessage({
resources: {
priority: 100
},
Expand All @@ -530,7 +531,7 @@ node.on('start', () => {
class Second extends BaseContainer {
run (m) {
this.kernel.incrementTicks(2)
return this.kernel.send(m.fromPort, new Message({
return this.kernel.send(m.fromPort, this.kernel.createMessage({
data: 'second'
}))
}
Expand All @@ -545,7 +546,7 @@ node.on('start', () => {
const root = await hypervisor.createInstance('root')
const port = root.ports.create('root')
root.ports.bind(port, 'first')
root.send(port, new Message())
root.send(port, root.createMessage())
})

tape('message should arrive in the correct order, with a tie in ticks but with differnt proity', async t => {
Expand All @@ -563,8 +564,8 @@ node.on('start', () => {
this.kernel.ports.bind(two, 'two')

return Promise.all([
this.kernel.send(two, new Message()),
this.kernel.send(one, new Message())
this.kernel.send(two, this.kernel.createMessage()),
this.kernel.send(one, this.kernel.createMessage())
])
} else if (this.runs === 1) {
this.runs++
Expand All @@ -578,7 +579,7 @@ node.on('start', () => {
class First extends BaseContainer {
run (m) {
this.kernel.incrementTicks(2)
return this.kernel.send(m.fromPort, new Message({
return this.kernel.send(m.fromPort, this.kernel.createMessage({
data: 'first'
}))
}
Expand All @@ -587,7 +588,7 @@ node.on('start', () => {
class Second extends BaseContainer {
run (m) {
this.kernel.incrementTicks(2)
return this.kernel.send(m.fromPort, new Message({
return this.kernel.send(m.fromPort, this.kernel.createMessage({
resources: {
priority: 100
},
Expand All @@ -605,7 +606,7 @@ node.on('start', () => {
const root = await hypervisor.createInstance('root')
const port = root.ports.create('root')
root.ports.bind(port, 'first')
root.send(port, new Message())
root.send(port, root.createMessage())
})

tape('should order parent messages correctly', async t => {
Expand All @@ -619,7 +620,7 @@ node.on('start', () => {
const leaf = this.kernel.ports.create('leaf')
this.kernel.ports.bind(leaf, 'leaf')

return this.kernel.send(leaf, new Message())
return this.kernel.send(leaf, this.kernel.createMessage())
} else {
++this.runs
if (this.runs === 3) {
Expand All @@ -632,7 +633,7 @@ node.on('start', () => {
class Leaf extends BaseContainer {
run (m) {
this.kernel.incrementTicks(2)
return this.kernel.send(m.fromPort, new Message({
return this.kernel.send(m.fromPort, this.kernel.createMessage({
data: 'first'
}))
}
Expand All @@ -650,8 +651,8 @@ node.on('start', () => {
const port = root.ports.create('middle')
root.ports.bind(port, 'first')

await root.send(port, new Message())
root.send(port, new Message())
await root.send(port, root.createMessage())
root.send(port, root.createMessage())
})

tape('get container instance by path', async t => {
Expand Down

0 comments on commit 68a9383

Please sign in to comment.