You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
201 lines
4.6 KiB
201 lines
4.6 KiB
const util = require('util')
|
|
|
|
var bdb = require("..");
|
|
|
|
var dbenv = new bdb.DbEnv();
|
|
console.log("open env", dbenv.open("db"));
|
|
var db = new bdb.Db(dbenv);
|
|
|
|
var assert = require('assert');
|
|
|
|
var rand = (Math.random() * 1e6).toFixed(0);
|
|
var filename = `foo-${rand}.db`;
|
|
|
|
var openRes = db.open(filename);
|
|
console.log("opened", filename, "ret=", openRes);
|
|
console.log("truncated db", filename);
|
|
|
|
function test_put_get_del_trunc() {
|
|
console.log("-- test_put_get_del_trunc");
|
|
|
|
db.truncate();
|
|
|
|
for (var i = 0; i < 100; ++i) {
|
|
var key = i.toFixed(0);
|
|
var val = (Math.random() * 1e6).toFixed(0);
|
|
|
|
db.put(key, val)
|
|
console.log("put", key);
|
|
var str = db.get(key)
|
|
console.log("get", key, "=>", str.toString());
|
|
assert(str.toString() === val);
|
|
console.log("del", key);
|
|
db.del(key);
|
|
var str2 = db.get(key);
|
|
console.log("get", key, "=>", str2.toString());
|
|
assert(str2.toString() === "");
|
|
}
|
|
}
|
|
|
|
function test_json() {
|
|
console.log("-- test_json");
|
|
var opts = { json: true };
|
|
var put_data = { test: "json1", n: 1 };
|
|
db.put("json1", put_data, opts)
|
|
console.log("put json1", put_data);
|
|
var data = db.get("json1", opts);
|
|
console.log("get json1", data);
|
|
assert(typeof data == 'object');
|
|
assert(data.test == put_data.test);
|
|
assert(data.n == put_data.n);
|
|
console.log("del json1");
|
|
db.del("json1");
|
|
}
|
|
|
|
function test_encoding() {
|
|
console.log("-- test_encoding");
|
|
var opts = { encoding: "hex" };
|
|
var enc_str = "4f4ca1";
|
|
db.put("hex", enc_str, opts)
|
|
console.log("put hex", enc_str);
|
|
var out = db.get("hex", opts);
|
|
console.log("get hex", out);
|
|
assert(enc_str == out);
|
|
console.log("del hex");
|
|
db.del("hex");
|
|
}
|
|
|
|
function test_transactions() {
|
|
console.log("-- test_transactions");
|
|
|
|
var txn = new bdb.DbTxn(dbenv);
|
|
var opts = { txn };
|
|
|
|
console.log("created", txn.constructor.name);
|
|
|
|
console.log("putting elements 1, 2, 3 in txn");
|
|
db.put("1", "one", opts);
|
|
db.put("2", "two", opts);
|
|
db.put("3", "three", opts);
|
|
|
|
var retCommit = txn.commit();
|
|
console.log("commited transaction", retCommit);
|
|
|
|
var out1 = db.get("1");
|
|
var out2 = db.get("2");
|
|
var out3 = db.get("3");
|
|
console.log("get 1", out1);
|
|
console.log("get 2", out2);
|
|
console.log("get 3", out3);
|
|
assert("one" == out1);
|
|
assert("two" == out2);
|
|
assert("three" == out3);
|
|
|
|
var txn2 = new bdb.DbTxn(dbenv);
|
|
var opts2 = { txn: txn2 };
|
|
console.log("created", txn2);
|
|
|
|
console.log("putting elements 4, 5, 6 in txn");
|
|
db.put("4", "four", opts2);
|
|
db.put("5", "five", opts2);
|
|
db.put("6", "six", opts2);
|
|
|
|
var retAbort = txn2.abort();
|
|
console.log("aborted transaction", retAbort);
|
|
|
|
var out4 = db.get("4");
|
|
var out5 = db.get("5");
|
|
var out6 = db.get("6");
|
|
console.log("get 4", out4);
|
|
console.log("get 5", out5);
|
|
console.log("get 6", out6);
|
|
assert("" == out4);
|
|
assert("" == out5);
|
|
assert("" == out6);
|
|
|
|
console.log("del 1, 2, 3");
|
|
db.del("1");
|
|
db.del("2");
|
|
db.del("3");
|
|
}
|
|
|
|
function test_cursors() {
|
|
console.log("-- test_cursors");
|
|
console.log("putting elements 1, 2, 3, 4, 5, 6");
|
|
db.put("1", "one");
|
|
db.put("2", "two");
|
|
db.put("3", "three");
|
|
db.put("4", "four");
|
|
|
|
// var cursor = new bdb.DbCursor(db);
|
|
var txn = new bdb.DbTxn(dbenv);
|
|
var cursor = new bdb.DbCursor(db, txn);
|
|
console.log("opened cursor");
|
|
|
|
var res;
|
|
res = cursor.next();
|
|
console.log(res);
|
|
assert(res.key == "1");
|
|
assert(res.value.toString() == "one");
|
|
|
|
res = cursor.last();
|
|
console.log(res);
|
|
assert(res.key == "4");
|
|
assert(res.value.toString() == "four");
|
|
|
|
res = cursor.prev();
|
|
console.log(res);
|
|
assert(res.key == "3");
|
|
assert(res.value.toString() == "three");
|
|
|
|
res = cursor.set("2");
|
|
console.log(res);
|
|
assert(res.key == "2");
|
|
assert(res.value.toString() == "two");
|
|
|
|
res = cursor.put("twotwo");
|
|
assert(res == 0);
|
|
|
|
res = cursor.current();
|
|
console.log(res);
|
|
assert(res.key == "2");
|
|
assert(res.value.toString() == "twotwo");
|
|
|
|
res = cursor.first();
|
|
console.log(res);
|
|
assert(res.key == "1");
|
|
assert(res.value.toString() == "one");
|
|
|
|
res = cursor.prev();
|
|
console.log(res);
|
|
assert(res.key == null);
|
|
assert(res.value.toString() == "");
|
|
|
|
cursor.last();
|
|
res = cursor.next();
|
|
console.log(res);
|
|
assert(res.key == null);
|
|
assert(res.value.toString() == "");
|
|
|
|
cursor.first();
|
|
cursor.del();
|
|
cursor.next();
|
|
cursor.del();
|
|
cursor.next();
|
|
cursor.del();
|
|
cursor.next();
|
|
cursor.del();
|
|
|
|
cursor.close();
|
|
}
|
|
|
|
test_put_get_del_trunc();
|
|
test_json();
|
|
test_encoding();
|
|
test_transactions();
|
|
test_cursors();
|
|
|
|
var closeDb = db.close();
|
|
var closeEnv = dbenv.close();
|
|
|
|
console.log("closed", "db=", closeDb, "env=", closeEnv);
|
|
|