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))
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()
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()
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)
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)
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)
def setUp(self): removeIfExists("/tmp/test.couch") self.store = CouchStore("/tmp/test.couch", 'c')
def setUp(self): self.tmpdir = mkdtemp() self.dbname = path.join(self.tmpdir, "testing.couch") self.db = CouchStore(self.dbname, 'c')
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')