[prev in list] [next in list] [prev in thread] [next in thread]
List: rpm-cvs
Subject: [CVS] RPM: rpm/js/ rpmdbc-js.c rpm/js/tscripts/ Db.js
From: "Jeff Johnson" <jbj () rpm5 ! org>
Date: 2009-09-28 2:08:50
Message-ID: 20090928020850.3C4FD3C939 () rpm5 ! org
[Download RAW message or body]
RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: jbj@rpm5.org
Module: rpm Date: 28-Sep-2009 04:08:50
Branch: HEAD Handle: 2009092802084901
Modified files:
rpm/js rpmdbc-js.c
rpm/js/tscripts Db.js
Log:
- js: refactor the words unit test.
Summary:
Revision Changes Path
1.9 +2 -1 rpm/js/rpmdbc-js.c
1.27 +57 -53 rpm/js/tscripts/Db.js
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/js/rpmdbc-js.c
============================================================================
$ cvs diff -u -r1.8 -r1.9 rpmdbc-js.c
--- rpm/js/rpmdbc-js.c 27 Sep 2009 23:18:50 -0000 1.8
+++ rpm/js/rpmdbc-js.c 28 Sep 2009 02:08:49 -0000 1.9
@@ -127,7 +127,8 @@
goto exit;
break;
case 0:
- *rval = INT_TO_JSVAL(_count);
+ if (!JS_NewNumberValue(cx, (jsdouble)_count, rval))
+ *rval = JSVAL_VOID;
break;
}
}
@@ .
patch -p0 <<'@@ .'
Index: rpm/js/tscripts/Db.js
============================================================================
$ cvs diff -u -r1.26 -r1.27 Db.js
--- rpm/js/tscripts/Db.js 27 Sep 2009 23:43:54 -0000 1.26
+++ rpm/js/tscripts/Db.js 28 Sep 2009 02:08:50 -0000 1.27
@@ -272,6 +272,9 @@
break;
}
+ this.associate =
+ function (secondary) { return this.db.associate(this.txn, secondary, 0); };
+
this.close =
function () { return this.db.close(0); };
@@ -295,6 +298,9 @@
this.join =
function (A, B) { return this.db.join(A, B); };
+ this.key_range =
+ function (key) { return this.db.key_range(this.txn, key); };
+
this.put =
function (key, val) { return this.db.put(this.txn, key, val); };
@@ -475,62 +481,48 @@
ack('R.db.close(0)', true);
print('====> WORDS');
-R.db = new Db(dbenv, 0);
-R.dbfile = "W.db";
-R.oflags = 0; // DB_RDONLY
-R.db.re_delim = 0x0a;
-R.db.re_pad = 0x20;
-R.db.re_source = "words";
-R.db.open(R.txn, R.dbfile, R.dbname, R.dbtype, R.oflags, R.dbperms);
-// R.db.stat_print(DB_FAST_STAT);
-
-B.db = new Db(dbenv, 0);
-B.dbfile = "X.db";
-B.oflags = 0; // DB_RDONLY
-B.db.open(B.txn, B.dbfile, B.dbname, B.dbtype, B.oflags, B.dbperms);
-
-var krwords = [ "boomerang", "fedora", "mugwumps", "stifle", "zebras" ];
-for (let [i,w] in Iterator(krwords))
- print(' key_range(' + w + '):\n\t' + B.db.key_range(B.txn, w));
+var W = new BDB(dbenv, "W", DB_RECNO, "words");
+ack('W.db.flags |= DB_SNAPSHOT', DB_SNAPSHOT);
+
+var X = new BDB(dbenv, "X", DB_BTREE, null);
// var i = 0;
// var k = '';
// do {
// ++i;
-// k = R.db.get(R.txn, i);
+// k = W.get(i);
// print('\t', i, k);
-// if (k)
-// B.db.put(B.txn, k, i);
-// else
+// if (!k)
// break;
+// X.put(k, i);
// } while (1) ;
+// var krwords = [ "boomerang", "fedora", "mugwumps", "stifle", "zebras" ];
+// for (let [key,val] in Iterator(krwords))
+// print(' key_range(' + val + '):\n\t' + W.key_range(val));
+
var i;
var w = "wdj";
-if (B.db.exists(B.txn, w))
- ack('B.db.del(B.txn, w)', true);
-if (R.db.exists(R.txn, w))
- ack('R.db.del(R.txn, w)', true);
-
-ack('R.db.associate(R.txn, B.db, 0)', true);
-
-ack('R.db.put(R.txn, 0, w, DB_APPEND)', true);
-// print('\t' + w + '\t<=>\t' + B.db.get(B.txn, w));
+if (X.exists(w))
+ ack('X.del(w)', true);
+if (W.exists(w))
+ ack('W.del(w)', true);
+
+ack('W.associate(X.db, 0)', true);
+ack('W.db.put(W.txn, 0, w, DB_APPEND)', true);
+// print('\t' + w + '\t<=>\t' + X.get(w));
var luwords = [ "rpm", "package", "monkey", "wdj" ];
for ([i,w] in Iterator(luwords)) {
- var got = B.db.get(B.txn, w);
+ var got = X.get(w);
if (got != w)
print('\t' + w + '\t<=>\t' + got);
}
-var w = "wdj";
-ack('B.db.del(B.txn, w)', true);
+ack('X.del("wdj")', true);
-ack('B.db.sync()', true);
-ack('B.db.close(0)', true);
-ack('R.db.sync()', true);
-ack('R.db.close(0)', true);
+ack('X.sync() && X.close(0)', true);
+ack('W.sync() && W.close(0)', true);
print('<==== WORDS');
@@ -541,21 +533,27 @@
var FN = new BDB(dbenv, "FN", DB_BTREE, null);
var BN = new BDB(dbenv, "BN", DB_BTREE, null);
var DN = new BDB(dbenv, "DN", DB_BTREE, null);
-ack('DN.db.flags |= DB_DUPSORT', DB_DUPSORT);
+ack('DN.db.flags |= (DB_DUP | DB_DUPSORT)', (DB_DUP | DB_DUPSORT));
-var i = 0;
-var k = '';
-do {
- ++i;
- k = F.get(i);
+// var i = 0;
+// var k = '';
+// do {
+// ++i;
+// k = F.get(i);
// print('\t', i, k);
- if (!k)
- break;
- FN.put(k, i);
- var ix = k.lastIndexOf("/") + 1;
- BN.put(k.substr(ix), i);
- DN.put(k.substr(0, ix), i);
-} while (1) ;
+// if (!k)
+// break;
+// FN.put(k, i);
+// var ix = k.lastIndexOf("/") + 1;
+// BN.put(k.substr(ix), i);
+// DN.put(k.substr(0, ix), i);
+// } while (1) ;
+
+var dnlist = [ "/bin/", "/sbin/" ];
+for (var [key, val] in Iterator(dnlist)) {
+ print(' key_range(' + val + '):')
+ print('\t' + DN.key_range(val) + '\t' + FN.key_range(val));
+};
ack('F.db.associate(F.txn, FN.db, 0)', true);
ack('F.db.associate(F.txn, BN.db, 0)', true);
@@ -563,7 +561,7 @@
var fnlist = [ "/bin/bash", "/bin/cp", "/bin/mv", "/bin/sh", "/sbin/rmt" ];
- F.loop("F", 1, 10);
+ F.loop("F", 3, 8);
FN.print("FN", fnlist);
BN.print("BN", [ "bash", "sh" ]);
DN.print("DN", [ "/bin/", "/sbin/" ]);
@@ -575,15 +573,21 @@
var dn = fn.substr(0, ix);
var fnc = FN.cursor(fn);
+ ack('fnc.count()', 1);
+ ack('fnc.length', 1);
var bnc = BN.cursor(bn);
+ ack('bnc.count()', 1);
+ ack('bnc.length', 1);
var dnc = DN.cursor(dn);
+ ack('dnc.count()', 1);
+ ack('dnc.length', 1);
var fc = F.join(fnc, bnc);
ack('fc.get(null)', fn);
ack('fc.close()', true);
- var fc = F.join(dnc, bnc);
-// ack('fc.get(null)', fn);
+ var fc = F.join(fnc, dnc, bnc);
+ ack('fc.get(null)', fn);
ack('fc.close()', true);
ack('dnc.close()', true);
@@ .
______________________________________________________________________
RPM Package Manager http://rpm5.org
CVS Sources Repository rpm-cvs@rpm5.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic