Commit 61537ea49c1a1f22f2d8f0ef263fdbef5f2d5e7d
test cancellation on streams
Dominic Tarr committed on 6/5/2017, 8:38:54 AMParent: 2744ecd62eb4f3f3bc415d40a981b0a6afc9507e
Files changed
test/stream.js | changed |
test/stream.js | |||
---|---|---|---|
@@ -4,9 +4,9 @@ | |||
4 | 4 … | var pull = require('pull-stream') | |
5 | 5 … | ||
6 | 6 … | ||
7 | 7 … | ||
8 | -function Peer (logs) { | ||
8 … | +function Peer (logs, onRequest) { | ||
9 | 9 … | logs._append = logs._append || [] | |
10 | 10 … | ||
11 | 11 … | function onAppend (msg) { | |
12 | 12 … | for(var i = 0; i < logs._append.length; i++) | |
@@ -33,8 +33,9 @@ | |||
33 | 33 … | } | |
34 | 34 … | ) ({ | |
35 | 35 … | seqs: states, | |
36 | 36 … | onChange: console.log, | |
37 … | + onRequest: onRequest | ||
37 | 38 … | }, | |
38 | 39 … | cb) | |
39 | 40 … | ||
40 | 41 … | logs._append.push(stream.onAppend) | |
@@ -217,7 +218,105 @@ | |||
217 | 218 … | }) | |
218 | 219 … | ||
219 | 220 … | }) | |
220 | 221 … | ||
222 … | +tape('stream when one peer does not follow', function (t) { | ||
223 … | + var alice_db = {alice: alice} | ||
224 … | + var bob_db = {alice: [], bob: bob} | ||
221 | 225 … | ||
226 … | + var alice_stream = Peer(alice_db, function (bob_id, seq) { | ||
227 … | + t.equal(bob_id, 'bob') | ||
228 … | + t.equal(seq, 3) | ||
229 … | + bob_requested = true | ||
230 … | + }) () | ||
231 … | + var bob_stream = Peer(bob_db, function () {}) () | ||
222 | 232 … | ||
233 … | + pull( | ||
234 … | + alice_stream, | ||
235 … | + bob_stream, | ||
236 … | + alice_stream | ||
237 … | + ) | ||
223 | 238 … | ||
239 … | + t.deepEqual(alice_db.alice, bob_db.alice, 'bob has replicated alice') | ||
240 … | + t.notDeepEqual(alice_db.bob, bob_db.bob, 'alice has not replicated bob') | ||
241 … | + t.ok(bob_requested) | ||
242 … | + console.log(alice_stream.progress()) | ||
243 … | + alice_db.bob = [] | ||
244 … | + alice_stream.request('bob', 0) | ||
245 … | + t.deepEqual(alice_db.bob, bob_db.bob) | ||
246 … | + console.log(alice_stream.progress()) | ||
247 … | + console.log(alice_db) | ||
248 … | + t.end() | ||
249 … | +}) | ||
250 … | + | ||
251 … | + | ||
252 … | +tape('stream when one peer does not follow', function (t) { | ||
253 … | + var alice_db = {alice: alice} | ||
254 … | + var bob_db = {alice: [], bob: bob} | ||
255 … | + | ||
256 … | + var alice_stream = Peer(alice_db, function (bob_id, seq) { | ||
257 … | + t.equal(bob_id, 'bob') | ||
258 … | + t.equal(seq, 3) | ||
259 … | + bob_requested = true | ||
260 … | + }) () | ||
261 … | + var bob_stream = Peer(bob_db, function () {}) () | ||
262 … | + | ||
263 … | + pull( | ||
264 … | + alice_stream, | ||
265 … | + bob_stream, | ||
266 … | + alice_stream | ||
267 … | + ) | ||
268 … | + | ||
269 … | + t.ok(bob_requested) | ||
270 … | + t.deepEqual(alice_db.alice, bob_db.alice, 'bob has replicated alice') | ||
271 … | + t.notDeepEqual(alice_db.bob, bob_db.bob, 'alice has not replicated bob') | ||
272 … | + | ||
273 … | + console.log(alice_stream.progress()) | ||
274 … | + alice_db.bob = [] | ||
275 … | + alice_stream.request('bob', -1) | ||
276 … | + t.notDeepEqual(alice_db.bob, bob_db.bob, 'alice has not replicated bob') | ||
277 … | + | ||
278 … | + console.log(alice_stream.progress()) | ||
279 … | + console.log(alice_db) | ||
280 … | + t.end() | ||
281 … | +}) | ||
282 … | + | ||
283 … | +tape('alice blocks bob', function (t) { | ||
284 … | + var alice_db = {alice: alice, bob: []} | ||
285 … | + var bob_db = {alice: [], bob: bob} | ||
286 … | + | ||
287 … | + var alice_stream = Peer(alice_db) () | ||
288 … | + var bob_stream = Peer(bob_db) () | ||
289 … | + | ||
290 … | + pull( | ||
291 … | + alice_stream, | ||
292 … | + pull.through(function (data) { console.log('alice>>', data) }), | ||
293 … | + bob_stream, | ||
294 … | + pull.through(function (data) { console.log('bob>>', data) }), | ||
295 … | + alice_stream | ||
296 … | + ) | ||
297 … | + console.log('REPLICATED', alice_stream.progress()) | ||
298 … | + | ||
299 … | +// t.ok(bob_requested) | ||
300 … | +// t.deepEqual(alice_db.alice, bob_db.alice, 'bob has replicated alice') | ||
301 … | +// t.deepEqual(alice_db.bob, bob_db.bob, 'alice has replicated bob') | ||
302 … | +// | ||
303 … | +// console.log(alice_stream.progress()) | ||
304 … | + | ||
305 … | + t.deepEqual( | ||
306 … | + alice_stream.progress(), | ||
307 … | + { sync: 2, feeds: 2, recv: 0, send: 0, total: 3, unknown: 0 } | ||
308 … | + ) | ||
309 … | + | ||
310 … | + alice_stream.request('bob', -1) | ||
311 … | + var msg = {author: 'bob', sequence: 4, content: 'BLOCKED'} | ||
312 … | + bob_db.bob.push(msg) | ||
313 … | + bob_stream.onAppend(msg) | ||
314 … | + | ||
315 … | + t.deepEqual( | ||
316 … | + alice_stream.progress(), | ||
317 … | + { sync: 1, feeds: 1, recv: 0, send: 0, total: 3, unknown: 0 } | ||
318 … | + ) | ||
319 … | + | ||
320 … | + t.end() | ||
321 … | +}) | ||
322 … | + |
Built with git-ssb-web