git ssb

0+

wanderer🌟 / js-primea-hypervisor



Tree: b5cb4112bbeaaa34f0d5faa38670426dc58971bf

Files: b5cb4112bbeaaa34f0d5faa38670426dc58971bf / tests / index.js

2223 bytesRaw
1const tape = require('tape')
2const IPFS = require('ipfs')
3const Hypervisor = require('../')
4const Message = require('primea-message')
5
6const node = new IPFS()
7node.on('error', err => {
8 console.log(err)
9})
10
11node.on('start', () => {
12 tape('basic', async t => {
13 const message = new Message()
14 const state = {
15 messages: [],
16 id: {
17 '/': {
18 nonce: new Buffer([0]),
19 parent: {
20 '/': null
21 }
22 }
23 },
24 type: 'test',
25 vm: {
26 '/': {
27 ports: {}
28 }
29 }
30 }
31 const expectedState = { '/': 'zdpuAnCsh9tVFa3asqkC7iNkwK6dYyZqJDxQrB7PMt8foLRKJ' }
32
33 class testVMContainer {
34 run (m) {
35 t.true(m === message, 'should recive a message')
36 }
37 }
38
39 const hypervisor = new Hypervisor({
40 dag: node.dag
41 })
42 hypervisor.addVM('test', testVMContainer)
43
44 await hypervisor.send(state, message)
45 await hypervisor.createStateRoot(state, Infinity)
46 t.deepEquals(state, expectedState, 'expected')
47 t.end()
48 })
49
50 tape('one child contract', async t => {
51 t.end()
52 node.stop(() => {
53 process.exit()
54 })
55
56 const message = new Message()
57 class testVMContainer {
58 constuctor (kernel) {
59 this.kernel = kernel
60 }
61
62 run (m) {
63 this.kernel.ports.create('child', 'test2', null)
64 this.kernek.send('child', m)
65 }
66 }
67
68 class testVMContainer2 {
69 run (m) {
70 t.true(m === message, 'should recive a message')
71 }
72 }
73
74 const state = {
75 messages: [],
76 id: {
77 '/': {
78 nonce: new Buffer([0]),
79 parent: {
80 '/': null
81 }
82 }
83 },
84 type: 'test',
85 vm: {
86 '/': {
87 ports: {}
88 }
89 }
90 }
91
92 const hypervisor = new Hypervisor({
93 dag: node.dag
94 })
95 hypervisor.addVM('test', testVMContainer)
96
97 await hypervisor.send(state, message)
98 await hypervisor.createStateRoot(state, Infinity)
99 t.deepEquals(state, expectedState, 'expected')
100 t.end()
101 // const message = new Message({
102 // type: 'create',
103 // path: 'first',
104 // data: jsCode
105 // })
106 // hypervisor.send(port, message)
107
108 })
109})
110

Built with git-ssb-web