grenache-nodejs-http 1.0.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,103 +1,72 @@
1
- /* eslint-env mocha */
1
+ 'use strict'
2
2
 
3
- const assert = require('assert')
3
+ const test = require('brittle')
4
4
  const { PassThrough } = require('stream')
5
- const { PeerRPCClient, PeerRPCServer } = require('../')
6
- const Link = require('grenache-nodejs-link')
7
- const setupHooks = require('./before-after.js')
8
-
9
- const PORT = 1337
10
- let link, peer, peerSrvStr, serviceStr, stop
11
- describe('RPC integration', () => {
12
- setupHooks((grapes) => {
13
- link = new Link({
14
- grape: 'http://127.0.0.1:30001'
15
- })
16
- link.start()
17
-
18
- peer = new PeerRPCClient(link, {})
19
- peer.init()
20
-
21
- peerSrvStr = new PeerRPCServer(link, {
22
- timeout: 300000,
23
- disableBuffered: true
24
- })
25
-
26
- peerSrvStr.init()
27
- serviceStr = peerSrvStr.transport('stream')
28
- serviceStr.listen(PORT)
5
+ const { rpcTestCase } = require('./before-after')
29
6
 
30
- link.announce('rpc_stream', serviceStr.port, {}, (err, res) => {
31
- if (err) throw Error('error in announce, setup')
32
- })
7
+ const rpcTest = rpcTestCase({ transport: 'stream', disableBuffered: true })
33
8
 
34
- stop = () => {
35
- peer.stop()
36
- link.stop()
37
- serviceStr.stop()
38
- }
39
- })
40
-
41
- it('streaming works, objects, buffered client, reply handler', (done) => {
42
- serviceStr.on('stream', (req, res, meta, handler) => {
43
- assert.strictEqual(meta.isStream, false)
9
+ test('RPC integration', async (t) => {
10
+ await t.test('streaming works, objects, buffered client, reply handler', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
11
+ service.on('stream', (req, res, meta, handler) => {
12
+ t.is(meta.isStream, false)
44
13
 
45
14
  req.on('data', (d) => {
46
15
  const [rid, key, args] = JSON.parse(d.toString())
47
16
 
48
- assert.deepStrictEqual(args, { hello: 'world' })
49
- assert.ok(typeof rid === 'string')
50
- assert.strictEqual(key, 'rpc_stream')
17
+ t.alike(args, { hello: 'world' })
18
+ t.ok(typeof rid === 'string')
19
+ t.is(key, 'rpc_test')
51
20
 
52
21
  handler.reply(rid, null, { hello: 'helloworld' })
53
22
  })
54
23
  })
55
24
 
56
25
  const opts = { timeout: 100000 }
57
- peer.request('rpc_stream', { hello: 'world' }, opts, (err, result) => {
58
- if (err) throw err
59
- assert.deepStrictEqual(result, { hello: 'helloworld' })
60
-
61
- stop()
62
- done()
26
+ await new Promise(resolve => {
27
+ peer.request('rpc_test', { hello: 'world' }, opts, (err, result) => {
28
+ if (err) throw err
29
+ t.alike(result, { hello: 'helloworld' })
30
+ resolve()
31
+ })
63
32
  })
64
- }).timeout(7000)
33
+ }))
65
34
 
66
- it('streaming works, string, buffered client, reply handler', (done) => {
67
- serviceStr.on('stream', (req, res, meta, handler) => {
68
- assert.strictEqual(meta.isStream, false)
35
+ await t.test('streaming works, string, buffered client, reply handler', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
36
+ service.on('stream', (req, res, meta, handler) => {
37
+ t.is(meta.isStream, false)
69
38
 
70
39
  req.on('data', (d) => {
71
40
  const [rid, key, args] = JSON.parse(d.toString())
72
41
 
73
- assert.strictEqual(args, 'hello')
74
- assert.ok(typeof rid === 'string')
75
- assert.strictEqual(key, 'rpc_stream')
42
+ t.is(args, 'hello')
43
+ t.ok(typeof rid === 'string')
44
+ t.is(key, 'rpc_test')
76
45
 
77
46
  handler.reply(rid, null, 'world')
78
47
  })
79
48
  })
80
49
 
81
50
  const opts = { timeout: 100000 }
82
- peer.request('rpc_stream', 'hello', opts, (err, result) => {
83
- if (err) throw err
84
- assert.strictEqual(result, 'world')
85
-
86
- stop()
87
- done()
51
+ await new Promise(resolve => {
52
+ peer.request('rpc_test', 'hello', opts, (err, result) => {
53
+ if (err) throw err
54
+ t.is(result, 'world')
55
+ resolve()
56
+ })
88
57
  })
89
- }).timeout(7000)
58
+ }))
90
59
 
91
- it('streaming works, string, buffered client, stream sent back', (done) => {
92
- serviceStr.on('stream', (req, res, meta, handler) => {
93
- assert.strictEqual(meta.isStream, false)
60
+ await t.test('streaming works, string, buffered client, stream sent back', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
61
+ service.on('stream', (req, res, meta) => {
62
+ t.is(meta.isStream, false)
94
63
 
95
64
  req.on('data', (d) => {
96
65
  const [rid, key, args] = JSON.parse(d.toString())
97
66
 
98
- assert.strictEqual(args, 'hello')
99
- assert.ok(typeof rid === 'string')
100
- assert.strictEqual(key, 'rpc_stream')
67
+ t.is(args, 'hello')
68
+ t.ok(typeof rid === 'string')
69
+ t.is(key, 'rpc_test')
101
70
 
102
71
  const writable = new PassThrough()
103
72
  const payload = JSON.stringify([rid, null, 'world2'])
@@ -108,29 +77,29 @@ describe('RPC integration', () => {
108
77
  })
109
78
 
110
79
  const opts = { timeout: 100000 }
111
- peer.request('rpc_stream', 'hello', opts, (err, result) => {
112
- if (err) throw err
113
- assert.strictEqual(result, 'world2')
114
-
115
- stop()
116
- done()
80
+ await new Promise(resolve => {
81
+ peer.request('rpc_test', 'hello', opts, (err, result) => {
82
+ if (err) throw err
83
+ t.is(result, 'world2')
84
+ resolve()
85
+ })
117
86
  })
118
- }).timeout(7000)
87
+ }))
119
88
 
120
- it('streaming works, buffer, stream client, stream on server', (done) => {
89
+ await t.test('streaming works, buffer, stream client, stream on server', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
121
90
  const reqPayload = Buffer.from('megalargefile')
122
91
  const resPayload = Buffer.from('superlargefile')
123
92
 
124
- serviceStr.on('stream', (req, res, meta, handler) => {
125
- assert.strictEqual(meta.isStream, true)
93
+ service.on('stream', (req, res, meta) => {
94
+ t.is(meta.isStream, true)
126
95
 
127
96
  req.on('data', (d) => {
128
97
  const [rid, key] = meta.infoHeaders
129
98
 
130
- assert.ok(d.equals(reqPayload), 'received Buffer equals payload on server')
99
+ t.ok(d.equals(reqPayload), 'received Buffer equals payload on server')
131
100
 
132
- assert.ok(typeof rid === 'string')
133
- assert.strictEqual(key, 'rpc_stream')
101
+ t.ok(typeof rid === 'string')
102
+ t.is(key, 'rpc_test')
134
103
 
135
104
  const writable = new PassThrough()
136
105
  writable.pipe(res)
@@ -139,42 +108,44 @@ describe('RPC integration', () => {
139
108
  })
140
109
  })
141
110
 
142
- const req = peer.stream('rpc_stream', {
111
+ const req = peer.stream('rpc_test', {
143
112
  timeout: 10000
144
113
  })
145
114
 
146
- req
147
- .on('data', (data) => {
148
- assert.ok(data.equals(resPayload), 'received Buffer equals payload on client')
149
-
150
- stop()
151
- done()
152
- })
153
- .on('end', () => {})
154
- .on('error', (e) => { console.error(e) })
115
+ const p = new Promise(resolve => {
116
+ req
117
+ .on('data', (data) => {
118
+ t.ok(data.equals(resPayload), 'received Buffer equals payload on client')
119
+ resolve()
120
+ })
121
+ .on('end', () => {})
122
+ .on('error', (e) => { console.error(e) })
123
+ })
155
124
 
156
125
  const writable = new PassThrough()
157
126
  writable.write(reqPayload)
158
127
  writable.pipe(req)
159
- }).timeout(7000)
160
128
 
161
- it('streaming works, buffer, stream client, stream on server, additional headers', (done) => {
129
+ await p
130
+ }))
131
+
132
+ await t.test('streaming works, buffer, stream client, stream on server, additional headers', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
162
133
  const reqPayload = Buffer.from('megalargefile')
163
134
  const resPayload = Buffer.from('superlargefile')
164
135
 
165
- serviceStr.on('stream', (req, res, meta, handler) => {
166
- assert.strictEqual(meta.isStream, true)
136
+ service.on('stream', (req, res, meta) => {
137
+ t.is(meta.isStream, true)
167
138
 
168
139
  req.on('data', (d) => {
169
140
  const [rid, key] = meta.infoHeaders
170
141
 
171
- assert.ok(d.equals(reqPayload), 'received Buffer equals payload on server')
142
+ t.ok(d.equals(reqPayload), 'received Buffer equals payload on server')
172
143
 
173
- assert.ok(typeof rid === 'string')
174
- assert.strictEqual(key, 'rpc_stream')
144
+ t.ok(typeof rid === 'string')
145
+ t.is(key, 'rpc_test')
175
146
 
176
- assert.strictEqual(meta.action, 'uploadPublic')
177
- assert.strictEqual(meta.args.foo, 'bar')
147
+ t.is(meta.action, 'uploadPublic')
148
+ t.is(meta.args.foo, 'bar')
178
149
 
179
150
  const writable = new PassThrough()
180
151
  writable.pipe(res)
@@ -183,7 +154,7 @@ describe('RPC integration', () => {
183
154
  })
184
155
  })
185
156
 
186
- const req = peer.stream('rpc_stream', {
157
+ const req = peer.stream('rpc_test', {
187
158
  timeout: 10000,
188
159
  headers: {
189
160
  _a: 'uploadPublic',
@@ -191,18 +162,20 @@ describe('RPC integration', () => {
191
162
  }
192
163
  })
193
164
 
194
- req
195
- .on('data', (data) => {
196
- assert.ok(data.equals(resPayload), 'received Buffer equals payload on client')
197
-
198
- stop()
199
- done()
200
- })
201
- .on('end', () => {})
202
- .on('error', (e) => { console.error(e) })
165
+ const p = new Promise(resolve => {
166
+ req
167
+ .on('data', (data) => {
168
+ t.ok(data.equals(resPayload), 'received Buffer equals payload on client')
169
+ resolve()
170
+ })
171
+ .on('end', () => {})
172
+ .on('error', (e) => { console.error(e) })
173
+ })
203
174
 
204
175
  const writable = new PassThrough()
205
176
  writable.write(reqPayload)
206
177
  writable.pipe(req)
207
- }).timeout(7000)
178
+
179
+ await p
180
+ }))
208
181
  })
@@ -1,76 +1,46 @@
1
- /* eslint-env mocha */
1
+ 'use strict'
2
2
 
3
- const assert = require('assert')
4
- const { PeerRPCClient, PeerRPCServer } = require('../')
5
- const Link = require('grenache-nodejs-link')
6
- const setupHooks = require('./before-after.js')
3
+ const test = require('brittle')
4
+ const { rpcTestCase } = require('./before-after')
7
5
 
8
- const PORT = 1337
9
- let link, peer, peerSrv, service, stop
10
- describe('RPC integration', () => {
11
- setupHooks((grapes) => {
12
- link = new Link({
13
- grape: 'http://127.0.0.1:30001'
14
- })
15
- link.start()
16
-
17
- peer = new PeerRPCClient(link, {})
18
- peer.init()
19
-
20
- peerSrv = new PeerRPCServer(link, { timeout: 300000 })
21
-
22
- peerSrv.init()
23
- service = peerSrv.transport('server')
24
- service.listen(PORT)
25
-
26
- link.announce('rpc_test', service.port, {}, (err, res) => {
27
- if (err) throw Error('error in announce, setup')
28
- })
6
+ const rpcTest = rpcTestCase({ transport: 'server' })
29
7
 
30
- stop = () => {
31
- peer.stop()
32
- link.stop()
33
- service.stop()
34
- }
35
- })
36
-
37
- it('secure request, objects', (done) => {
8
+ test('RPC integration', { timeout: 10000 }, async (t) => {
9
+ await t.test('secure request, objects', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
38
10
  service.on('request', (rid, key, payload, handler) => {
39
- assert.ok(typeof rid === 'string')
40
- assert.strictEqual(key, 'rpc_test')
41
- assert.deepStrictEqual(payload, { hello: 'world' })
11
+ t.ok(typeof rid === 'string')
12
+ t.is(key, 'rpc_test')
13
+ t.alike(payload, { hello: 'world' })
42
14
 
43
15
  handler.reply(null, { hello: 'helloworld' })
44
16
  })
45
17
 
46
18
  const opts = { timeout: 100000 }
47
- peer.request('rpc_test', { hello: 'world' }, opts, (err, result) => {
48
- if (err) throw err
49
-
50
- assert.deepStrictEqual(result, { hello: 'helloworld' })
51
-
52
- stop()
53
- done()
19
+ await new Promise(resolve => {
20
+ peer.request('rpc_test', { hello: 'world' }, opts, (err, result) => {
21
+ if (err) throw err
22
+ t.alike(result, { hello: 'helloworld' })
23
+ resolve()
24
+ })
54
25
  })
55
- }).timeout(7000)
26
+ }))
56
27
 
57
- it('secure map, strings', (done) => {
28
+ await t.test('secure map, strings', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
58
29
  service.on('request', (rid, key, payload, handler) => {
59
- assert.ok(typeof rid === 'string')
60
- assert.strictEqual(key, 'rpc_test')
61
- assert.strictEqual(payload, 'hello')
30
+ t.ok(typeof rid === 'string')
31
+ t.is(key, 'rpc_test')
32
+ t.is(payload, 'hello')
62
33
 
63
34
  handler.reply(null, 'world')
64
35
  })
65
36
 
66
37
  const opts = { timeout: 100000 }
67
- peer.map('rpc_test', 'hello', opts, (err, result) => {
68
- if (err) throw err
69
-
70
- assert.deepStrictEqual(result, ['world'])
71
-
72
- stop()
73
- done()
38
+ await new Promise(resolve => {
39
+ peer.map('rpc_test', 'hello', opts, (err, result) => {
40
+ if (err) throw err
41
+ t.alike(result, ['world'])
42
+ resolve()
43
+ })
74
44
  })
75
- }).timeout(7000)
45
+ }))
76
46
  })
@@ -1,44 +1,13 @@
1
- /* eslint-env mocha */
1
+ 'use strict'
2
2
 
3
- const assert = require('assert')
3
+ const test = require('brittle')
4
4
  const fs = require('fs')
5
5
  const path = require('path')
6
- const { PeerRPCClient, PeerRPCServer } = require('../')
7
- const Link = require('grenache-nodejs-link')
8
- const setupHooks = require('./before-after.js')
6
+ const { rpcTestCase } = require('./before-after')
9
7
 
10
- const PORT = 1337
11
- let link, peer, peerSrvStr, serviceStr, stop
12
- describe('RPC integration', () => {
13
- setupHooks((grapes) => {
14
- link = new Link({
15
- grape: 'http://127.0.0.1:30001'
16
- })
17
- link.start()
18
-
19
- peer = new PeerRPCClient(link, {})
20
- peer.init()
21
-
22
- peerSrvStr = new PeerRPCServer(link, {
23
- timeout: 300000,
24
- disableBuffered: true
25
- })
26
-
27
- peerSrvStr.init()
28
- serviceStr = peerSrvStr.transport('stream')
29
- serviceStr.listen(PORT)
30
-
31
- link.announce('rpc_manual', serviceStr.port, {}, (err, res) => {
32
- if (err) throw Error('error in announce, setup')
33
- })
34
-
35
- stop = () => {
36
- peer.stop()
37
- link.stop()
38
- serviceStr.stop()
39
- }
40
- })
8
+ const rpcTest = rpcTestCase({ transport: 'stream', disableBuffered: true })
41
9
 
10
+ test('RPC integration', (t) => {
42
11
  const buf = fs.readFileSync(
43
12
  path.join(__dirname, './example-amazon-dynamo-sosp2007.pdf')
44
13
  )
@@ -55,35 +24,35 @@ describe('RPC integration', () => {
55
24
  args: [buf.toString('hex'), optsPdf]
56
25
  }
57
26
 
58
- it('manual request handling works', (done) => {
59
- serviceStr.on('stream', (req, res, meta, handler) => {
60
- assert.strictEqual(meta.isStream, false)
27
+ t.test('manual request handling works', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
28
+ service.on('stream', (req, res, meta) => {
29
+ t.is(meta.isStream, false)
61
30
 
62
31
  if (meta.isStream === false) {
63
32
  // console.log('no stream content, decide to parse')
64
- serviceStr.handleBufferedRequest(req, res, meta)
33
+ service.handleBufferedRequest(req, res, meta)
65
34
  }
66
35
  })
67
36
 
68
- serviceStr.on('request', (rid, key, payload, handler, cert, meta) => {
69
- assert.ok(typeof rid === 'string')
70
- assert.strictEqual(key, 'rpc_manual')
37
+ service.on('request', (rid, key, payload, handler, cert, meta) => {
38
+ t.ok(typeof rid === 'string')
39
+ t.is(key, 'rpc_test')
71
40
  const [pdf, opts] = payload.args
72
- assert.deepStrictEqual(opts, optsPdf)
41
+ t.alike(opts, optsPdf)
73
42
 
74
- assert.deepStrictEqual([pdf[0], pdf[1], pdf[2]].join(''), '255')
43
+ t.alike([pdf[0], pdf[1], pdf[2]].join(''), '255')
75
44
 
76
- assert.strictEqual(meta.isStream, false)
45
+ t.is(meta.isStream, false)
77
46
  handler.reply(null, 'ok')
78
47
  })
79
48
 
80
49
  const opts = { timeout: 100000 }
81
- peer.request('rpc_manual', queryUploadPublicPdf, opts, (err, result) => {
82
- if (err) throw err
83
- assert.deepStrictEqual(result, 'ok')
84
-
85
- stop()
86
- done()
50
+ await new Promise(resolve => {
51
+ peer.request('rpc_test', queryUploadPublicPdf, opts, (err, result) => {
52
+ if (err) throw err
53
+ t.alike(result, 'ok')
54
+ resolve()
55
+ })
87
56
  })
88
- }).timeout(7000)
57
+ }))
89
58
  })
@@ -1,50 +1,19 @@
1
- /* eslint-env mocha */
1
+ 'use strict'
2
2
 
3
- const assert = require('assert')
3
+ const test = require('brittle')
4
4
  const fs = require('fs')
5
5
  const path = require('path')
6
- const { PeerRPCClient, PeerRPCServer } = require('../')
7
- const Link = require('grenache-nodejs-link')
8
- const setupHooks = require('./before-after.js')
6
+ const { rpcTestCase } = require('./before-after')
9
7
 
10
- const PORT = 1337
11
- let link, peer, peerSrvStr, serviceStr, stop
12
- describe('RPC integration', () => {
13
- setupHooks((grapes) => {
14
- link = new Link({
15
- grape: 'http://127.0.0.1:30001'
16
- })
17
- link.start()
18
-
19
- peer = new PeerRPCClient(link, {})
20
- peer.init()
21
-
22
- peerSrvStr = new PeerRPCServer(link, {
23
- timeout: 300000,
24
- disableBuffered: true
25
- })
26
-
27
- peerSrvStr.init()
28
- serviceStr = peerSrvStr.transport('stream')
29
- serviceStr.listen(PORT)
30
-
31
- link.announce('rpc_manual', serviceStr.port, {}, (err, res) => {
32
- if (err) throw Error('error in announce, setup')
33
- })
34
-
35
- stop = () => {
36
- peer.stop()
37
- link.stop()
38
- serviceStr.stop()
39
- }
40
- })
8
+ const rpcTest = rpcTestCase({ transport: 'stream', disableBuffered: true })
41
9
 
10
+ test('RPC integration', (t) => {
42
11
  const pdfFile = path.join(__dirname, './example-amazon-dynamo-sosp2007.pdf')
43
12
 
44
- it('manual request handling works', (done) => {
45
- serviceStr.on('stream', (req, res, meta, handler) => {
46
- assert.strictEqual(meta.isStream, true)
47
- assert.strictEqual(req.headers['content-type'], 'application/pdf')
13
+ t.test('manual request handling works', { timeout: 7000 }, rpcTest(async ({ t, service, peer }) => {
14
+ service.on('stream', (req, res, meta, handler) => {
15
+ t.is(meta.isStream, true)
16
+ t.is(req.headers['content-type'], 'application/pdf')
48
17
 
49
18
  const rid = meta.infoHeaders[0]
50
19
  const writer = fs.createWriteStream('test.pdf')
@@ -53,7 +22,7 @@ describe('RPC integration', () => {
53
22
  writer.on('close', () => {
54
23
  const origStat = fs.statSync(pdfFile)
55
24
  const res = fs.statSync('test.pdf')
56
- assert.strictEqual(res.size, origStat.size)
25
+ t.is(res.size, origStat.size)
57
26
 
58
27
  handler.reply(rid, null, 'ok')
59
28
  })
@@ -65,7 +34,7 @@ describe('RPC integration', () => {
65
34
  bucket: 'BUCKET',
66
35
  contentType: 'application/pdf'
67
36
  }
68
- const req = peer.stream('rpc_manual', {
37
+ const req = peer.stream('rpc_test', {
69
38
  headers: {
70
39
  _a: 'uploadNewPublicStream',
71
40
  _ar: optsPdf,
@@ -74,15 +43,18 @@ describe('RPC integration', () => {
74
43
  timeout: 10000
75
44
  })
76
45
 
77
- req.on('data', (data) => {
78
- const [,, msg] = JSON.parse(data.toString())
79
- assert.strictEqual(msg, 'ok')
80
- stop()
81
- done()
46
+ const p = new Promise(resolve => {
47
+ req.on('data', (data) => {
48
+ const [,, msg] = JSON.parse(data.toString())
49
+ t.is(msg, 'ok')
50
+ resolve()
51
+ })
82
52
  })
83
53
 
84
54
  const data = fs.createReadStream(pdfFile)
85
55
 
86
56
  data.pipe(req)
87
- }).timeout(7000)
57
+
58
+ await p
59
+ }))
88
60
  })