[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