diff --git a/MOCK.json b/MOCK.json deleted file mode 100644 index 54922e3..0000000 --- a/MOCK.json +++ /dev/null @@ -1,198 +0,0 @@ -// Data set grouped and sorted -"A" : [ - { "id": "A", "seq": 0, "ver": 0, "prev": null}, - { "id": "A", "seq": 0, "ver": 1, "prev": "A0.0"}, - { "id": "A", "seq": 0, "ver": 2, "prev": "A0.1"}, - { "id": "A", "seq": 0, "ver": 3, "prev": "A0.2"}, - { "id": "A", "seq": 0, "ver": 4, "prev": "A0.3"}, - { "id": "A", "seq": 2, "ver": 0, "prev": ["A0.4", "B1.1"]} -], -"B" : [ - { "id": "B", "seq": 1, "ver": 0, "prev": ["A0.4", "C0.2"]}, - { "id": "B", "seq": 1, "ver": 1, "prev": "B1.0"} -], -"C" : [ - { "id": "C", "seq": 0, "ver": 0, "prev": null}, - { "id": "C", "seq": 0, "ver": 1, "prev": "C0.0"}, - { "id": "C", "seq": 0, "ver": 2, "prev": "C0.1"}, - { "id": "C", "seq": 3, "ver": 0, "prev": ["C0.2", "A2.0]"]} -] - - A B C - | -0.0 - | -0.1 - | -0.2 0.0 - | | -0.3 0.1 - | | -0.4 0.2 - | \ / | - | 1.0 | - | | | - | 1.1 | - | / | -2.0 | - \ | - \ | - \ | - 3.0 - -// expected order A -{ "id": "A", "seq": 0, "ver": 0, "prev": null}, -{ "id": "A", "seq": 0, "ver": 1, "prev": "A0.0"}, -{ "id": "A", "seq": 0, "ver": 2, "prev": "A0.1"}, -{ "id": "A", "seq": 0, "ver": 3, "prev": "A0.2"}, -{ "id": "A", "seq": 0, "ver": 4, "prev": "A0.3"}, - { "id": "C", "seq": 0, "ver": 0, "prev": null}, - { "id": "C", "seq": 0, "ver": 1, "prev": "C0.0"}, - { "id": "C", "seq": 0, "ver": 2, "prev": "C0.1"}, - { "id": "B", "seq": 1, "ver": 0, "prev": ["A0.4", "C0.2"]}, - { "id": "B", "seq": 1, "ver": 1, "prev": "B1.0"} -{ "id": "A", "seq": 2, "ver": 0, "prev": ["A0.4", "B1.1"]} - { "id": "C", "seq": 3, "ver": 0, "prev": ["C0.2", "A2.0]"]} - -"VersionClock": { - "seq": 0, - "ver": 0 -} - -"Item": { - "id": "", - "VersionClock": "", - "prev": [] -} - -"List": { - "items": [""] -} - -/* - list.add(data) { - this.ver ++; - const heads = _findHeads(); - const i = new Item(id, this.seq, this.ver, heads) - outgoing.push(data) - } -*/ - -/* - list.join(other) { - // increase seq on join, reset version - if(other.first.seq >= this.seq) - this.seq = other.first.seq + 1 - this.ver = 0 - - items = items.concat(outgoing.concat(other)) - items = items.sortBy("seq", "id", "ver") - outgoing = [] - } -*/ - -/* - nextHeads() { - referenced = [] - heads = all.groupBy("id").map((items) => items[items.length - 1]) - cleaned = heads.reverse().filter((e) => !isReferencedInChain(referenced, e)) - return cleaned; - } -*/ - -/* - isReferencedInChain(list, other) { - const res = other.map((o) => { - const ref = list.map((e) => !(e.id == o.id && e.seq == o.seq && e.ver == o.ver)) - if(!ref) - list.push(ref) - //return false - - //list.concat(list.filter((e) => !(e.id == o.id && e.seq == o.seq && e.ver == o.ver))) - if(o.prev) - ref = isReferencedInChain(list, o.prev) - - return ref - }) - return res.anyEqual(true) - } -*/ - - - A B C - 0.0 - | -0.0 0.1 - | | -0.1 0.2 - \ / | - 1.0 | - | | - 1.1 | - / | -2.0 | - \ | - \ | - \ | - 3.0 - -// Sequence, --> syncs to -listA.add("mango") // { "id": "A", "seq": 0, "ver": 0, "prev": null} -listA.add("banana") // { "id": "A", "seq": 0, "ver": 1, "prev": "A.0.0"} ---> B - -// A -// { "id": "A", "seq": 0, "ver": 0, "prev": null} -// { "id": "A", "seq": 0, "ver": 1, "prev": "A.0.0"} - -listC.add("apple") // { "id": "C", "seq": 0, "ver": 0, "prev": null} -listC.add("strawberry") // { "id": "C", "seq": 0, "ver": 1, "prev": "C.0.0"} -listC.add("orange") // { "id": "C", "seq": 0, "ver": 2, "prev": "C.0.1"} ---> A,B - -// A -// { "id": "A", "seq": 0, "ver": 0, "prev": null} -// { "id": "A", "seq": 0, "ver": 1, "prev": "A.0.0"} -// { "id": "C", "seq": 0, "ver": 0, "prev": null} -// { "id": "C", "seq": 0, "ver": 1, "prev": "C.0.0"} -// { "id": "C", "seq": 0, "ver": 2, "prev": "C.0.1"} - -listB.add("pineapple") // { "id": "B", "seq": 1, "ver": 0, "prev": ["A.0.1", "C.0.2"]} -listB.add("papaya") // { "id": "B", "seq": 1, "ver": 1, "prev": "B.1.0"} ---> A - -// A -// { "id": "A", "seq": 0, "ver": 0, "prev": null} -// { "id": "A", "seq": 0, "ver": 1, "prev": "A.0.0"} -// { "id": "C", "seq": 0, "ver": 0, "prev": null} -// { "id": "C", "seq": 0, "ver": 1, "prev": "C.0.0"} -// { "id": "C", "seq": 0, "ver": 2, "prev": "C.0.1"} -// { "id": "B", "seq": 1, "ver": 0, "prev": ["A.0.1", "C.0.2"]} -// { "id": "B", "seq": 1, "ver": 1, "prev": "B.1.0"} - -listA.add("kiwi") // { "id": "A", "seq": 2, "ver": 0, "prev": ["A.0.1", "B1.1", "C0.2"]} ---> C - -// A -// { "id": "A", "seq": 0, "ver": 0, "prev": null} -// { "id": "A", "seq": 0, "ver": 1, "prev": "A.0.0"} -// { "id": "C", "seq": 0, "ver": 0, "prev": null} -// { "id": "C", "seq": 0, "ver": 1, "prev": "C.0.0"} -// { "id": "C", "seq": 0, "ver": 2, "prev": "C.0.1"} -// { "id": "B", "seq": 1, "ver": 0, "prev": ["A.0.0", "C.0.2"]} -// { "id": "B", "seq": 1, "ver": 1, "prev": "B.1.0"} -// { "id": "A", "seq": 2, "ver": 0, "prev": ["A.0.1", "B1.1", "C0.2"]} - -listC.add("blueberry") // { "id": "C", "seq": 3, "ver": 0, "prev": ["A.2.0", "C.0.2"]} ---> A,B - -// A -// { "id": "A", "seq": 0, "ver": 0, "prev": null} -// { "id": "A", "seq": 0, "ver": 1, "prev": "A.0.0"} -// { "id": "C", "seq": 0, "ver": 0, "prev": null} -// { "id": "C", "seq": 0, "ver": 1, "prev": "C.0.0"} -// { "id": "C", "seq": 0, "ver": 2, "prev": "C.0.1"} -// { "id": "B", "seq": 1, "ver": 0, "prev": ["A.0.0", "C.0.2"]} -// { "id": "B", "seq": 1, "ver": 1, "prev": "B.1.0"} -// { "id": "A", "seq": 2, "ver": 0, "prev": ["A.0.1", "B1.1", "C0.2"]} -// { "id": "C", "seq": 3, "ver": 0, "prev": ["A.2.0", "C.0.2"]} diff --git a/examples/cacheTest.js b/examples/cacheTest.js deleted file mode 100644 index 72f2a78..0000000 --- a/examples/cacheTest.js +++ /dev/null @@ -1,58 +0,0 @@ -'use strict'; - -var async = require('asyncawait/async'); -var OrbitClient = require('../src/OrbitClient'); -var Timer = require('./Timer'); - -var host = 'localhost:3006'; -var username = 'testrunner'; -var password = ''; - -let run = (async(() => { - try { - // Connect - var orbit = OrbitClient.connect(host, username, password); - - console.log("-------- EVENT log -------") - const c1 = 'cache-test'; - orbit.channel(c1).delete(); - - var timer1 = new Timer(true); - console.log("Writing..."); - for(let i = 0; i < 100; i ++) { - orbit.channel(c1).add("hello " + i); - } - console.log("Write took", timer1.stop() + "ms"); - - var timer2 = new Timer(true); - console.log("Reading 1st time..."); - var items = orbit.channel(c1).iterator({ limit: -1 }).collect(); - items = items.map((e) => { - return { key: e.item.key, val: e.item.Payload }; - }); - console.log("Reading 1st time took", timer2.stop() + "ms"); - - var timer3 = new Timer(true); - console.log("Reading 2nd time..."); - var items = orbit.channel(c1).iterator({ limit: -1 }).collect(); - items = items.map((e) => { - return { key: e.item.key, val: e.item.Payload }; - }); - console.log("Reading 2nd time took", timer3.stop() + "ms"); - - var timer4 = new Timer(true); - console.log("Reading 3rd time..."); - var items = orbit.channel(c1).iterator({ limit: -1 }).collect(); - items = items.map((e) => { - return { key: e.item.key, val: e.item.Payload }; - }); - console.log("Reading 3rd time took", timer4.stop() + "ms"); - - } catch(e) { - console.error("error:", e); - console.error(e.stack); - process.exit(1); - } -}))(); - -module.exports = run; diff --git a/test1.js b/test1.js deleted file mode 100644 index da3caf9..0000000 --- a/test1.js +++ /dev/null @@ -1,70 +0,0 @@ -'use strict'; - -const _ = require('lodash'); -const Timer = require('./examples/Timer'); -const List = require('./src/list/List'); - -var run = () => { - var redis = require("redis"); - this.client1 = redis.createClient({ host: "localhost", port: 6379 }); - this.client2 = redis.createClient({ host: "localhost", port: 6379 }); - var hash = "ccc" - this.client1.subscribe(hash); - this.client1.subscribe(hash); - - - let listA = new List("A"); - let listB = new List("B"); - let listC = new List("C"); - - const handleMessage = (hash, event) => { - const l = List.fromJson(JSON.parse(event)); - // console.log("LIST", l); - - if(l.id === 'A') { - listB.join(l); - listC.join(l); - } else if(l.id === 'B') { - listA.join(l); - listC.join(l); - } else if(l.id === 'C') { - listA.join(l); - console.log("Items:", listA.items.length); - // console.log(JSON.stringify(listA, null, 1)); - } - - } - - this.client1.on("message", handleMessage); - this.client2.on("message", handleMessage); - - let h = 0; - setInterval(() => { - listC.add("C--"+h); - this.client2.publish(hash, JSON.stringify(listC.toJson())); - h++; - }, 1000); - - let i = 0; - setInterval(() => { - let a = 0; - for(let a = 0; a < 10; a ++) { - listB.add("B--"+(i+a)); - } - this.client2.publish(hash, JSON.stringify(listB.toJson())); - i++; - }, 20); - - let k = 0; - setInterval(() => { - listA.add("A--"+k); - k++; - listA.add("A--"+k); - k++; - listA.add("A--"+k); - k++; - this.client2.publish(hash, JSON.stringify(listA.toJson())); - }, 100); -}; - -run(); diff --git a/test2.js b/test2.js deleted file mode 100644 index 5bb9322..0000000 --- a/test2.js +++ /dev/null @@ -1,92 +0,0 @@ -'use strict'; - -const _ = require('lodash'); -const async = require('asyncawait/async'); -const await = require('asyncawait/await'); -const ipfsDaemon = require('orbit-common/lib/ipfs-daemon'); -const ipfsAPI = require('orbit-common/lib/ipfs-api-promised'); -const List = require('./src/list/OrbitList'); -const Timer = require('./examples/Timer'); - -const startIpfs = async (() => { - return new Promise(async((resolve, reject) => { - const ipfsd = await(ipfsDaemon()); - resolve(ipfsd.daemon); - })); -}); - -let ipfs; - -var run = async(() => { - ipfs = await(startIpfs()); - - var redis = require("redis"); - this.client1 = redis.createClient({ host: "localhost", port: 6379 }); - this.client2 = redis.createClient({ host: "localhost", port: 6379 }); - var hash = "ccc" - this.client1.subscribe(hash); - this.client1.subscribe(hash); - - - let listA = new List("A", ipfs); - let listB = new List("B", ipfs); - let listC = new List("C", ipfs); - - const handleMessage = async((hash, event) => { - // const l = List.fromJson(JSON.parse(event)); - console.log(">", event); - const l = await(List.fromIpfsHash(ipfs, event)); - // console.log("ITEMS RECEIVED", l.items.length); - - if(l.id === 'A') { - listB.join(l); - listC.join(l); - } else if(l.id === 'B') { - // listA.join(l); - // listC.join(l); - } else if(l.id === 'C') { - listB.join(l); - var timer = new Timer('a'); - listC.join(listB); - console.log("join took " + timer.stop(true) + " ms"); - console.log("Items:", listC.items.length); - // console.log(listC.toString()); - } - }); - - this.client1.on("message", handleMessage); - this.client2.on("message", handleMessage); - - let h = 0; - setInterval(async(() => { - listC.add("C--"+h); - const list = await(listC.getIpfsHash()); - this.client2.publish(hash, list); - h++; - }), 1000); - - let i = 0; - setInterval(async(() => { - let a = 0; - // for(let a = 0; a < 10; a ++) { - listB.add("B--"+(i+a)); - // } - const list = await(listB.getIpfsHash()); - this.client2.publish(hash, list); - i++; - }), 50); - -// let k = 0; -// setInterval(async(() => { -// listA.add("A--"+k); -// k++; -// listA.add("A--"+k); -// k++; -// listA.add("A--"+k); -// k++; -// this.client2.publish(hash, JSON.stringify(listA.toJson())); -// }), 100); -// }); -}); - -run();