class TestMappingProtocol(unittest.TestCase): numkeys = 1000 def setUp(self): self.discodb = DiscoDB(k_vs_iter(self.numkeys)) def test_contains(self): assert "0" in self.discodb assert "key" not in self.discodb def test_length(self): self.assertEquals(len(self.discodb), self.numkeys) def test_get(self): len(list(self.discodb.get('0'))) self.assertEquals(self.discodb.get('X'), None) self.assertEquals(self.discodb.get('X', 'Y'), 'Y') def test_getitem(self): for x in xrange(self.numkeys): try: list(self.discodb[str(x)]) except KeyError: self.assertEquals(x, self.numkeys) def test_iter(self): self.assertEquals(list(self.discodb), list(self.discodb.keys())) def test_items(self): for key, values in self.discodb.items(): key, list(values) def test_keys(self): len(list(self.discodb.keys())) def test_values(self): len(list(self.discodb.values())) def test_unique_values(self): len(list(self.discodb.unique_values())) def test_peek(self): self.assertNotEquals(self.discodb.peek('0'), None) self.assertEquals(self.discodb.peek('X'), None) self.assert_(int(self.discodb.peek('0', '1')) >= 0) def test_query(self): q = Q.parse('5 & 10 & (15 | 30)') list(self.discodb.query(q)) def test_str(self): repr(self.discodb) str(self.discodb)
class TestMappingProtocol(unittest.TestCase): numkeys = 1000 def setUp(self): self.discodb = DiscoDB(k_vs_iter(self.numkeys)) def test_contains(self): assert "200" in self.discodb assert "key" not in self.discodb def test_length(self): assert len(self.discodb) == self.numkeys def test_getitem(self): for x in xrange(self.numkeys): try: list(self.discodb[str(x)]) except KeyError: assert x == self.numkeys def test_iter(self): assert list(self.discodb) == list(self.discodb.keys()) def test_items(self): for key, values in self.discodb.items(): key, list(values) def test_keys(self): len(list(self.discodb.keys())) def test_values(self): len(list(self.discodb.values())) def test_query(self): q = Q.parse('5 & 10 & (15 | 30)') list(self.discodb.query(q)) def test_str(self): assert str(self.discodb) != repr(self.discodb)
def test_leak(): while True: d = DiscoDB(zip(letters, ['abc'] * 1000)) t = len(d.query('a')) t = len(d['b']) t = 'd' in d t = d.dumps() t = DiscoDB.loads(t) t = d.dump(open('/tmp/discodb', 'w')) t = DiscoDB.load(open('/tmp/discodb')) for k in d.keys(): for v in d.values(): t = k == v
def reduce(iter, params): partitions = params['partitions'] name = params['name'] discodb = DiscoDB(kvgroup(iter)) try: # figure out what partition we are in key = discodb.keys().__iter__().next() partition = util.default_partition(key, partitions, params) discodb.dump(open(filename(name, partition), 'w')) yield partition, None except StopIteration: # no keys, nothing to write pass
def test_leak(): while True: d = DiscoDB(zip(letters, ["abc"] * 1000)) t = len(d.query("a")) t = len(d["b"]) t = "d" in d t = d.dumps() t = DiscoDB.loads(t) t = d.dump(open("/tmp/discodb", "w")) t = DiscoDB.load(open("/tmp/discodb")) for k in d.keys(): for v in d.values(): t = k == v