Skip to content

Commit fb42a3e

Browse files
committed
urkel: expose disk urkel.
1 parent b5b10a5 commit fb42a3e

4 files changed

Lines changed: 45 additions & 16 deletions

File tree

lib/index.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,24 @@ const defineGet = (name, get) => {
2323
};
2424

2525
definePath('_disk', './tree');
26-
definePath('_memory', './memory');
26+
definePath('_urkel', './urkel');
27+
definePath('_memory', './urkel');
2728
definePath('BLAKE2b', './blake2b');
2829

2930
defineGet('Tree', () => nurkel._disk.Tree);
3031
defineGet('MemTree', () => nurkel._memory.Tree);
31-
defineGet('UrkelTree', () => nurkel._memory.Tree);
32+
defineGet('UrkelTree', () => nurkel._urkel.Tree);
3233

3334
nurkel.create = (options) => {
3435
if (options.memory)
3536
return new nurkel.MemTree();
3637

38+
if (options.urkel) {
39+
return new nurkel.UrkelTree({
40+
prefix: options.prefix
41+
});
42+
}
43+
3744
return new nurkel.Tree({
3845
prefix: options.prefix
3946
});

lib/memory.js renamed to lib/urkel.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* memory.js - urkel wrapper in nurkel fashion.
2+
* urkel.js - urkel wrapper in nurkel fashion.
33
* Copyright (c) 2022, Nodari Chkuaselidze (MIT License)
44
* https://github.com/nodech/nurkel
55
*/

test/urkel-test.js

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,26 +31,41 @@ function random(min, max) {
3131
return Math.floor(Math.random() * (max - min)) + min;
3232
}
3333

34-
for (const memory of [false, true]) {
35-
describe(`Urkel (${memory ? 'MemTree' : 'Tree'})`, function() {
34+
const treeCreateOptions = {
35+
'nurkel': {},
36+
// use legacy tree
37+
'urkel': {
38+
urkel: true
39+
},
40+
// legacy tree as in memory tree
41+
'memory': {
42+
memory: true
43+
}
44+
};
45+
46+
for (const [name, treeTestOptions] of Object.entries(treeCreateOptions)) {
47+
describe(`Urkel (${name})`, function() {
3648
this.timeout(20000);
3749

38-
const Tree = memory ? nurkel.MemTree : nurkel.Tree;
39-
let prefix, tree;
50+
const Tree = name === 'nurkel' ? nurkel.Tree : nurkel.UrkelTree;
51+
52+
let prefix, prefix2;
4053

4154
beforeEach(async () => {
4255
prefix = testdir('tree');
43-
if (!memory)
44-
fs.mkdirSync(prefix);
56+
prefix2 = testdir('tree2');
4557
});
4658

4759
afterEach(async () => {
48-
if (!memory && isTreeDir(prefix))
60+
if (name !== 'memory' && isTreeDir(prefix))
4961
rmTreeDir(prefix);
62+
63+
if (name !== 'memory' && isTreeDir(prefix2))
64+
rmTreeDir(prefix2);
5065
});
5166

5267
it('should test tree', async () => {
53-
const tree = nurkel.create({ prefix, memory });
68+
const tree = nurkel.create({ prefix, ...treeTestOptions });
5469
await tree.open();
5570

5671
let batch = tree.batch();
@@ -237,7 +252,7 @@ describe(`Urkel (${memory ? 'MemTree' : 'Tree'})`, function() {
237252

238253
it('should test max value size', async () => {
239254
const MAX_VALUE = 0x3ff;
240-
const tree = nurkel.create({ prefix, memory });
255+
const tree = nurkel.create({ prefix, ...treeTestOptions });
241256

242257
await tree.open();
243258

@@ -281,7 +296,7 @@ describe(`Urkel (${memory ? 'MemTree' : 'Tree'})`, function() {
281296
});
282297

283298
it('should pummel tree', async () => {
284-
const tree = nurkel.create({ prefix, memory });
299+
const tree = nurkel.create({ prefix, ...treeTestOptions });
285300

286301
const items = [];
287302
const set = new Set();
@@ -477,7 +492,11 @@ describe(`Urkel (${memory ? 'MemTree' : 'Tree'})`, function() {
477492
});
478493

479494
it('should test history independence', async () => {
480-
const opts = { prefix, memory };
495+
const opts1 = { prefix, ...treeTestOptions };
496+
const opts2 = {
497+
prefix: prefix2,
498+
...treeTestOptions
499+
};
481500

482501
const items = [];
483502
const removed = [];
@@ -489,10 +508,10 @@ describe(`Urkel (${memory ? 'MemTree' : 'Tree'})`, function() {
489508
items.push([key, value]);
490509
}
491510

492-
const tree1 = nurkel.create(opts);
511+
const tree1 = nurkel.create(opts1);
493512
await tree1.open();
494513

495-
const tree2 = nurkel.create(opts);
514+
const tree2 = nurkel.create(opts2);
496515
await tree2.open();
497516

498517
let root = null;

test/util/common.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ common.serializeU32 = (num) => {
2626
};
2727

2828
common.isTreeDir = (dir, locked) => {
29+
if (!fs.existsSync(dir))
30+
return false;
31+
2932
const files = new Set(fs.readdirSync(dir));
3033

3134
if (files.length < 2)

0 commit comments

Comments
 (0)