Skip to content

Commit cb51ed8

Browse files
committed
pear seed add new. test
1 parent 124164a commit cb51ed8

1 file changed

Lines changed: 49 additions & 0 deletions

File tree

test/03-seed.test.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const Corestore = require('corestore')
44
const Hyperdrive = require('hyperdrive')
55
const Hyperswarm = require('hyperswarm')
66
const hypercoreid = require('hypercore-id-encoding')
7+
const Localdrive = require('localdrive')
78
const Helper = require('./helper')
89

910
test('pear seed basic stage and seed', async function ({ ok, plan, comment, teardown, timeout }) {
@@ -109,3 +110,51 @@ test('pear seed announces, join, drop', async function ({
109110
const dropped = await until['peer-remove']
110111
ok(dropped, 'peer drops')
111112
})
113+
114+
test('pear seed fully syncs db and blobs cores', async function ({
115+
is,
116+
plan,
117+
comment,
118+
teardown,
119+
timeout,
120+
tmp
121+
}) {
122+
timeout(180000)
123+
plan(2)
124+
125+
const sourceStore = new Corestore(await tmp())
126+
teardown(() => sourceStore.close())
127+
await sourceStore.ready()
128+
const sourceDrive = new Hyperdrive(sourceStore)
129+
await sourceDrive.ready()
130+
await new Localdrive(Helper.fixture('minimal')).mirror(sourceDrive).done()
131+
const sourceBlobs = await sourceDrive.getBlobs()
132+
const blocks = sourceDrive.db.core.length + sourceBlobs.core.length
133+
134+
let dbBlocks = 0
135+
sourceDrive.db.core.on('upload', () => dbBlocks++)
136+
137+
let blobBlocks = 0
138+
sourceBlobs.core.on('upload', () => blobBlocks++)
139+
140+
const sourceSwarm = new Hyperswarm({ bootstrap: Helper.dhtBootstrap })
141+
teardown(() => sourceSwarm.destroy())
142+
sourceSwarm.on('connection', (conn) => {
143+
sourceStore.replicate(conn)
144+
})
145+
const topic = sourceSwarm.join(sourceDrive.discoveryKey, { server: true, client: false })
146+
await topic.flushed()
147+
148+
const helper = new Helper()
149+
teardown(() => helper.close(), { order: Infinity })
150+
await helper.ready()
151+
152+
comment('seeding external app')
153+
const link = `pear://${hypercoreid.encode(sourceDrive.key)}`
154+
const seeding = helper.seed({ link })
155+
teardown(() => Helper.teardownStream(seeding))
156+
await Helper.pick(seeding, { tag: 'stats', data: { download: { totalBlocks: blocks } } })
157+
158+
is(dbBlocks, sourceDrive.db.core.length, 'seed synced db core')
159+
is(blobBlocks, sourceBlobs.core.length, 'seed synced blobs core')
160+
})

0 commit comments

Comments
 (0)