def testMetadata(self): info = DocumentInfo("meta") info.rev_sequence = 23 info.rev_meta = "fancy metadata here" info.content_type = DocumentInfo.INVALID_JSON self.store[info] = "the regular non-meta data" gotInfo = self.store.get_doc_info_by_id("meta") self.assertEquals(gotInfo.id, "meta") self.assertEquals(gotInfo.rev_sequence, info.rev_sequence) self.assertEquals(gotInfo.rev_meta, info.rev_meta) self.assertEquals(gotInfo.content_type, info.content_type) self.assertFalse(gotInfo.compressed)
def testBinaryMeta(self): # Make sure binary data, as produced by Python's struct module, works # in revMeta. packed = struct.pack(">QII", 0, 1, 2) d = DocumentInfo("bin") d.rev_meta = packed self.store[d] = "value" doc_info = self.store.get_doc_info_by_id("bin") self.assertEqual(doc_info.rev_meta, packed) i1, i2, i3 = struct.unpack(">QII", doc_info.rev_meta) self.assertEqual(i1, 0) self.assertEqual(i2, 1) self.assertEqual(i3, 2)
def testMetadataSave(self): info = DocumentInfo("meta") info.rev_sequence = 23 info.rev_meta = "fancy metadata here" info.content_type = 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.get_doc_info_by_id("meta") self.assertEquals(gotInfo.id, "meta") self.assertEquals(gotInfo.rev_sequence, info.rev_sequence) self.assertEquals(gotInfo.rev_meta, info.rev_meta) self.assertEquals(gotInfo.content_type, info.content_type) self.assertFalse(gotInfo.compressed)
def testMultipleMeta(self): k = [] v = [] for i in range(1000): d = DocumentInfo(str(i)) d.rev_meta = "hello-%s" % i k.append(d) v.append("world-%s" % i) self.store.save_multi(k, v) self.store.commit() self.store.close() self.store = CouchStore("/tmp/test.couch", 'r') for doc_info in self.store.changes_since(0): i = int(doc_info.id) self.assertEqual(doc_info.rev_meta, "hello-%s" % i) doc_contents = doc_info.get_contents() self.assertEqual(doc_contents, "world-%s" % i)
def testMultipleMetaStruct(self): k = [] v = [] for i in range(1000): d = DocumentInfo(str(i)) d.rev_meta = struct.pack(">QII", i * 3, i * 2, i) k.append(d) v.append("world-%s" % i) self.store.save_multi(k, v) self.store.commit() self.store.close() self.store = CouchStore("/tmp/test.couch", 'r') for doc_info in self.store.changes_since(0): i = int(doc_info.id) i3, i2, i1 = struct.unpack(">QII", doc_info.rev_meta) self.assertEqual(i3, i * 3) self.assertEqual(i2, i * 2) self.assertEqual(i1, i * 1) doc_contents = doc_info.get_contents() self.assertEqual(doc_contents, "world-%s" % doc_info.id)