mirror of
https://github.com/orbitdb/orbitdb.git
synced 2025-03-30 15:08:28 +00:00
129 lines
4.1 KiB
JavaScript
129 lines
4.1 KiB
JavaScript
// import assert from 'assert'
|
|
// import mapSeries from 'p-each-series'
|
|
// import rmrf from 'rimraf'
|
|
// import OrbitDB from '../src/OrbitDB.js'
|
|
|
|
// // Include test utilities
|
|
// import {
|
|
// config,
|
|
// startIpfs,
|
|
// stopIpfs,
|
|
// testAPIs,
|
|
// connectPeers,
|
|
// } from 'orbit-db-test-utils'
|
|
|
|
// const dbPath1 = './orbitdb/tests/replicate-automatically/1'
|
|
// const dbPath2 = './orbitdb/tests/replicate-automatically/2'
|
|
|
|
// Object.keys(testAPIs).forEach(API => {
|
|
// describe(`orbit-db - Automatic Replication (${API})`, function() {
|
|
// this.timeout(config.timeout)
|
|
|
|
// let ipfsd1, ipfsd2, ipfs1, ipfs2
|
|
// let orbitdb1, orbitdb2, db1, db2, db3, db4
|
|
|
|
// before(async () => {
|
|
// rmrf.sync('./orbitdb')
|
|
// rmrf.sync(dbPath1)
|
|
// rmrf.sync(dbPath2)
|
|
// ipfsd1 = await startIpfs(API, config.daemon1)
|
|
// ipfsd2 = await startIpfs(API, config.daemon2)
|
|
// ipfs1 = ipfsd1.api
|
|
// ipfs2 = ipfsd2.api
|
|
// orbitdb1 = await OrbitDB.createInstance(ipfs1, { directory: dbPath1 })
|
|
// orbitdb2 = await OrbitDB.createInstance(ipfs2, { directory: dbPath2 })
|
|
|
|
// let options = {}
|
|
// // Set write access for both clients
|
|
// options.write = [
|
|
// orbitdb1.identity.publicKey,
|
|
// orbitdb2.identity.publicKey
|
|
// ]
|
|
|
|
// options = Object.assign({}, options)
|
|
// db1 = await orbitdb1.eventlog('replicate-automatically-tests', options)
|
|
// db3 = await orbitdb1.keyvalue('replicate-automatically-tests-kv', options)
|
|
// })
|
|
|
|
// after(async () => {
|
|
// if (orbitdb1) {
|
|
// await orbitdb1.stop()
|
|
// }
|
|
|
|
// if (orbitdb2) {
|
|
// await orbitdb2.stop()
|
|
// }
|
|
|
|
// if (ipfsd1) {
|
|
// await stopIpfs(ipfsd1)
|
|
// }
|
|
|
|
// if (ipfs2) {
|
|
// await stopIpfs(ipfsd2)
|
|
// }
|
|
|
|
// rmrf.sync(dbPath1)
|
|
// rmrf.sync(dbPath2)
|
|
// })
|
|
|
|
// it('starts replicating the database when peers connect', async () => {
|
|
// const isLocalhostAddress = (addr) => addr.toString().includes('127.0.0.1')
|
|
// await connectPeers(ipfs1, ipfs2, { filter: isLocalhostAddress })
|
|
// console.log('Peers connected')
|
|
|
|
// const entryCount = 33
|
|
// const entryArr = []
|
|
|
|
// // Create the entries in the first database
|
|
// for (let i = 0; i < entryCount; i++) {
|
|
// entryArr.push(i)
|
|
// }
|
|
|
|
// await mapSeries(entryArr, (i) => db1.add('hello' + i))
|
|
|
|
// // Open the second database
|
|
// db2 = await orbitdb2.eventlog(db1.address.toString())
|
|
// db4 = await orbitdb2.keyvalue(db3.address.toString())
|
|
|
|
// // Listen for the 'replicated' events and check that all the entries
|
|
// // were replicated to the second database
|
|
// return new Promise((resolve, reject) => {
|
|
// // Check if db2 was already replicated
|
|
// let all = db2.iterator({ limit: -1 }).collect().length
|
|
// // Run the test asserts below if replication was done
|
|
// let finished = (all === entryCount)
|
|
|
|
// db3.events.on('replicated', (address, hash, entry) => {
|
|
// reject(new Error("db3 should not receive the 'replicated' event!"))
|
|
// })
|
|
|
|
// db4.events.on('replicated', (address, hash, entry) => {
|
|
// reject(new Error("db4 should not receive the 'replicated' event!"))
|
|
// })
|
|
|
|
// db2.events.on('replicated', (address, length) => {
|
|
// // Once db2 has finished replication, make sure it has all elements
|
|
// // and process to the asserts below
|
|
// all = db2.iterator({ limit: -1 }).collect().length
|
|
// finished = (all === entryCount)
|
|
// })
|
|
|
|
// try {
|
|
// const timer = setInterval(() => {
|
|
// if (finished) {
|
|
// clearInterval(timer)
|
|
// const result1 = db1.iterator({ limit: -1 }).collect()
|
|
// const result2 = db2.iterator({ limit: -1 }).collect()
|
|
// assert.equal(result1.length, result2.length)
|
|
// assert.deepEqual(result1, result2)
|
|
// resolve()
|
|
// }
|
|
// }, 1000)
|
|
// } catch (e) {
|
|
// reject(e)
|
|
// }
|
|
// })
|
|
// })
|
|
// })
|
|
// })
|