Exemple #1
0
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)
Exemple #2
0
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)
Exemple #3
0
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
Exemple #4
0
 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
Exemple #5
0
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
Exemple #6
0
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