Esempio n. 1
0
    def testPurgeCompact(self):
        # Save some docs
        self.origdb.save("foo1", "bar")
        self.origdb.save("foo2", "baz")
        self.origdb.save("foo3", "bell")
        self.origdb.save("foo4", "a")

        # Delete some
        seqPurged = deleteAt(self.origdb, "foo2", 10)
        seqKept = deleteAt(self.origdb, "foo3", 20)
        seqLateDelete = deleteAt(self.origdb, "foo4", 11)
        self.origdb.commit()

        os.system(
            path.join(os.getcwd(), "couch_compact") + " --purge-before 15 " +
            self.origname + " " + self.purgedname)
        self.newdb = CouchStore(self.purgedname)

        # Check purged item is not present in key tree and kept item is
        self.assertRaises(KeyError, self.newdb.getInfo, "foo2")
        self.assertIsNotNone(self.newdb.getInfo("foo3"))
        self.assertRaises(KeyError, self.newdb.getInfo, "foo4")

        self.newdb.close()

        os.system(
            path.join(os.getcwd(), "couch_compact") +
            " --purge-before 15 --purge-only-upto-seq " + str(seqKept) + " " +
            self.origname + " " + self.purgedname)
        self.newdb = CouchStore(self.purgedname)

        # Check purged item is not present in key tree and kept item is
        self.assertRaises(KeyError, self.newdb.getInfo, "foo2")
        self.assertIsNotNone(self.newdb.getInfo("foo3"))
        # with purge-only-upto-seq just before deletion of foo4 we
        # must find it after compaction
        self.assertIsNotNone(self.newdb.getInfo("foo4"))

        self.newdb.close()

        os.system(
            path.join(os.getcwd(), "couch_compact") +
            " --purge-before 15 --purge-only-upto-seq " + str(seqLateDelete) +
            " " + self.origname + " " + self.purgedname)
        self.newdb = CouchStore(self.purgedname)

        # Check purged item is not present in key tree and kept item is
        self.assertRaises(KeyError, self.newdb.getInfo, "foo2")
        self.assertIsNotNone(self.newdb.getInfo("foo3"))
        # with purge-only-upto-seq just at deletion of foo4 we
        # must not find it after compaction
        self.assertRaises(KeyError, self.newdb.getInfo, "foo4")

        # Check purged item is not present in seq tree and kept item is
        self.assertRaises(KeyError, self.newdb.getInfoBySequence, seqPurged)
        self.assertIsNotNone(self.newdb.getInfoBySequence(seqKept))
Esempio n. 2
0
def main():
    if len(sys.argv) != 3:
        print "Usage: example1 <doc count> <file>"
        exit(1)
    db = CouchStore(sys.argv[2], 'c')
    for batch in chunks(range(0, int(sys.argv[1])), BATCH_SIZE):
        insert_multi(db, ["key_" + str(x) for x in batch],
                     [str(x) for x in batch])
        db.commit()
    db.close()
Esempio n. 3
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("file")
    parser.add_argument("keys", help="Key(s) to print", nargs="+")
    parser.add_argument("--unbuffered",
                        help="Disable couchstore io buffering",
                        action="store_true")
    args = parser.parse_args()

    db = CouchStore(args.file, 'r', unbuffered=args.unbuffered)
    for key in args.keys:
        print(db.get(key))
    db.close()
Esempio n. 4
0
    def testMetadataSave(self):
        info = DocumentInfo("meta")
        info.revSequence = 23
        info.revMeta = "fancy metadata here"
        info.contentType = DocumentInfo.INVALID_JSON
        self.store[info] = "the regular non-meta data"

        self.store.commit()
        self.store.close()
        self.store = CouchStore("/tmp/test.couch", 'r')

        gotInfo = self.store.getInfo("meta")
        self.assertEquals(gotInfo.id, "meta")
        self.assertEquals(gotInfo.revSequence, info.revSequence)
        self.assertEquals(gotInfo.revMeta, info.revMeta)
        self.assertEquals(gotInfo.contentType, info.contentType)
        self.assertFalse(gotInfo.compressed)
Esempio n. 5
0
 def testMultipleMeta(self):
     k = []
     v = []
     for i in range(1000):
         d = DocumentInfo(str(i))
         d.revMeta = "hello-%s" % i
         k.append(d)
         v.append("world-%s" % i)
     self.store.saveMultiple(k, v)
     self.store.commit()
     self.store.close()
     self.store = CouchStore("/tmp/test.couch", 'r')
     for doc_info in self.store.changesSince(0):
         i = int(doc_info.id)
         self.assertEqual(doc_info.revMeta, "hello-%s" % i)
         doc_contents = doc_info.getContents()
         self.assertEqual(doc_contents, "world-%s" % i)
Esempio n. 6
0
 def testMultipleMetaStruct(self):
     k = []
     v = []
     for i in range(1000):
         d = DocumentInfo(str(i))
         d.revMeta = struct.pack(">QII", i * 3, i * 2, i)
         k.append(d)
         v.append("world-%s" % i)
     self.store.saveMultiple(k, v)
     self.store.commit()
     self.store.close()
     self.store = CouchStore("/tmp/test.couch", 'r')
     for doc_info in self.store.changesSince(0):
         i = int(doc_info.id)
         i3, i2, i1 = struct.unpack(">QII", doc_info.revMeta)
         self.assertEqual(i3, i * 3)
         self.assertEqual(i2, i * 2)
         self.assertEqual(i1, i * 1)
         doc_contents = doc_info.getContents()
         self.assertEqual(doc_contents, "world-%s" % doc_info.id)
Esempio n. 7
0
 def setUp(self):
     removeIfExists("/tmp/test.couch")
     self.store = CouchStore("/tmp/test.couch", 'c')
Esempio n. 8
0
 def setUp(self):
     self.tmpdir = mkdtemp()
     self.dbname = path.join(self.tmpdir, "testing.couch")
     self.db = CouchStore(self.dbname, 'c')
Esempio n. 9
0
 def setUp(self):
     self.tmpdir = mkdtemp()
     self.origname = path.join(self.tmpdir, "orig.couch")
     self.purgedname = path.join(self.tmpdir, "purged.couch")
     self.origdb = CouchStore(self.origname, 'c')