Skip to content

Commit b9849c2

Browse files
committed
WIP
1 parent 5b4dffe commit b9849c2

File tree

5 files changed

+40
-47
lines changed

5 files changed

+40
-47
lines changed

src/errors.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,6 @@ class ErrorDBParseValue<T> extends ErrorDB<T> {
4040
static description = 'DB value parsing failed';
4141
}
4242

43-
class ErrorDBLiveReference<T> extends ErrorDB<T> {
44-
static description = 'DB has live DBIterator or DBTransaction references';
45-
}
46-
4743
class ErrorDBIterator<T> extends ErrorDB<T> {
4844
static description = 'DBIterator error';
4945
}
@@ -97,7 +93,6 @@ export {
9793
ErrorDBDecrypt,
9894
ErrorDBParseKey,
9995
ErrorDBParseValue,
100-
ErrorDBLiveReference,
10196
ErrorDBIterator,
10297
ErrorDBIteratorDestroyed,
10398
ErrorDBIteratorBusy,

src/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
export { default as DB } from './DB';
2-
// Export { default as DBTransaction } from './DBTransaction';
2+
export { default as DBTransaction } from './DBTransaction';
3+
export { default as DBIterator } from './DBIterator';
34
export * as utils from './utils';
45
export * as errors from './errors';
6+
export * as rocksdb from './rocksdb';
57
export * from './types';

tests/DB.test.ts

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,24 @@ import os from 'os';
44
import path from 'path';
55
import fs from 'fs';
66
import nodeCrypto from 'crypto';
7-
import nodeUtil from 'util';
8-
import lexi from 'lexicographic-integer';
97
import Logger, { LogLevel, StreamHandler } from '@matrixai/logger';
108
import { WorkerManager } from '@matrixai/workers';
119
import { withF } from '@matrixai/resources';
1210
import { spawn, Worker } from 'threads';
1311
import DB from '@/DB';
14-
import rocksdbP from '@/rocksdb/rocksdbP';
1512
import * as errors from '@/errors';
1613
import * as utils from '@/utils';
17-
import * as testUtils from './utils';
14+
import * as testsUtils from './utils';
1815

1916
describe(DB.name, () => {
2017
const logger = new Logger(`${DB.name} Test`, LogLevel.WARN, [
2118
new StreamHandler(),
2219
]);
2320
const crypto = {
24-
key: testUtils.generateKeySync(256),
21+
key: testsUtils.generateKeySync(256),
2522
ops: {
26-
encrypt: testUtils.encrypt,
27-
decrypt: testUtils.decrypt,
23+
encrypt: testsUtils.encrypt,
24+
decrypt: testsUtils.decrypt,
2825
},
2926
};
3027
let dataDir: string;
@@ -88,7 +85,7 @@ describe(DB.name, () => {
8885
await db.stop();
8986
const crypto_ = {
9087
...crypto,
91-
key: testUtils.generateKeySync(256),
88+
key: testsUtils.generateKeySync(256),
9289
};
9390
await expect(
9491
DB.createDB({ dbPath, crypto: crypto_, logger }),
@@ -134,8 +131,8 @@ describe(DB.name, () => {
134131
const dbPath = `${dataDir}/db`;
135132
const db = await DB.createDB({ dbPath, crypto, logger });
136133
const keyPaths: Array<KeyPath> = Array.from({ length: 1000 }, () =>
137-
Array.from({ length: testUtils.getRandomInt(0, 11) }, () =>
138-
nodeCrypto.randomBytes(testUtils.getRandomInt(0, 11)),
134+
Array.from({ length: testsUtils.getRandomInt(0, 11) }, () =>
135+
nodeCrypto.randomBytes(testsUtils.getRandomInt(0, 11)),
139136
),
140137
);
141138
for (const kP of keyPaths) {
@@ -193,24 +190,24 @@ describe(DB.name, () => {
193190
]);
194191
await db.stop();
195192
});
196-
// Test('keys that are empty arrays are converted to empty string', async () => {
197-
// const dbPath = `${dataDir}/db`;
198-
// const db = await DB.createDB({ dbPath, crypto, logger });
199-
// await db.put([], 'value');
200-
// expect(await db.get([])).toBe('value');
201-
// await db.del([]);
202-
// expect(await db.get([])).toBeUndefined();
203-
// await withF([db.transaction()], async ([tran]) => {
204-
// await tran.put([], 'value');
205-
// expect(await tran.get([])).toBe('value');
206-
// await tran.del([]);
207-
// });
208-
// await withF([db.transaction()], async ([tran]) => {
209-
// await tran.put([], 'value');
210-
// });
211-
// expect(await db.get([])).toBe('value');
212-
// await db.stop();
213-
// });
193+
test('keys that are empty arrays are converted to empty string', async () => {
194+
const dbPath = `${dataDir}/db`;
195+
const db = await DB.createDB({ dbPath, crypto, logger });
196+
await db.put([], 'value');
197+
expect(await db.get([])).toBe('value');
198+
await db.del([]);
199+
expect(await db.get([])).toBeUndefined();
200+
await withF([db.transaction()], async ([tran]) => {
201+
await tran.put([], 'value');
202+
expect(await tran.get([])).toBe('value');
203+
await tran.del([]);
204+
});
205+
await withF([db.transaction()], async ([tran]) => {
206+
await tran.put([], 'value');
207+
});
208+
expect(await db.get([])).toBe('value');
209+
await db.stop();
210+
});
214211
test('keys can contain separator buffer', async () => {
215212
const dbPath = `${dataDir}/db`;
216213
const db = await DB.createDB({ dbPath, crypto, logger });

tests/DBIterator.test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@ import Logger, { LogLevel, StreamHandler } from '@matrixai/logger';
99
import DB from '@/DB';
1010
import DBIterator from '@/DBIterator';
1111
import rocksdbP from '@/rocksdb/rocksdbP';
12-
import * as testUtils from './utils';
12+
import * as testsUtils from './utils';
1313

1414
describe(DBIterator.name, () => {
1515
const logger = new Logger(`${DBIterator.name} test`, LogLevel.WARN, [
1616
new StreamHandler(),
1717
]);
1818
const crypto = {
19-
key: testUtils.generateKeySync(256),
19+
key: testsUtils.generateKeySync(256),
2020
ops: {
21-
encrypt: testUtils.encrypt,
22-
decrypt: testUtils.decrypt,
21+
encrypt: testsUtils.encrypt,
22+
decrypt: testsUtils.decrypt,
2323
},
2424
};
2525
let dataDir: string;
@@ -98,7 +98,7 @@ describe(DBIterator.name, () => {
9898
});
9999
test('lexicographic iteration order fuzzing', async () => {
100100
const keys: Array<Buffer> = Array.from({ length: 1000 }, () =>
101-
nodeCrypto.randomBytes(testUtils.getRandomInt(0, 101)),
101+
nodeCrypto.randomBytes(testsUtils.getRandomInt(0, 101)),
102102
);
103103
for (const k of keys) {
104104
await db.put(k, 'value');
@@ -212,8 +212,8 @@ describe(DBIterator.name, () => {
212212
});
213213
test('lexicographic level iteration order fuzzing', async () => {
214214
const keyPathsInput: Array<KeyPath> = Array.from({ length: 5000 }, () =>
215-
Array.from({ length: testUtils.getRandomInt(0, 11) }, () =>
216-
nodeCrypto.randomBytes(testUtils.getRandomInt(0, 11)),
215+
Array.from({ length: testsUtils.getRandomInt(0, 11) }, () =>
216+
nodeCrypto.randomBytes(testsUtils.getRandomInt(0, 11)),
217217
),
218218
);
219219
for (const kP of keyPathsInput) {
@@ -226,7 +226,7 @@ describe(DBIterator.name, () => {
226226
// Copy the DB sorted key paths
227227
const keyPathsOutput_ = [...keyPathsOutput];
228228
// Shuffle the DB sorted key paths
229-
testUtils.arrayShuffle(keyPathsOutput_);
229+
testsUtils.arrayShuffle(keyPathsOutput_);
230230
keyPathsOutput_.sort((kP1: Array<Buffer>, kP2: Array<Buffer>) => {
231231
const lP1 = kP1.slice(0, kP1.length - 1);
232232
const lP2 = kP2.slice(0, kP2.length - 1);

tests/DBTransaction.test.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,18 @@ import Logger, { LogLevel, StreamHandler } from '@matrixai/logger';
66
import { withF } from '@matrixai/resources';
77
import DB from '@/DB';
88
import DBTransaction from '@/DBTransaction';
9-
import * as testUtils from './utils';
10-
import { rocksdbP } from '@/rocksdb';
119
import * as errors from '@/errors';
10+
import * as testsUtils from './utils';
1211

1312
describe(DBTransaction.name, () => {
1413
const logger = new Logger(`${DBTransaction.name} test`, LogLevel.WARN, [
1514
new StreamHandler(),
1615
]);
1716
const crypto = {
18-
key: testUtils.generateKeySync(256),
17+
key: testsUtils.generateKeySync(256),
1918
ops: {
20-
encrypt: testUtils.encrypt,
21-
decrypt: testUtils.decrypt,
19+
encrypt: testsUtils.encrypt,
20+
decrypt: testsUtils.decrypt,
2221
},
2322
};
2423
let dataDir: string;

0 commit comments

Comments
 (0)