Esempio n. 1
0
    def test_unordered_key_generator(self):
        ws = WorkloadSettings(items=10**5,
                              workers=25,
                              working_set=100,
                              working_set_access=100,
                              working_set_moving_docs=0)

        keys = []
        for worker in range(ws.workers):
            generator = docgen.UnorderedKey(worker, ws, prefix='test')
            keys += [key for key in generator]

        expected = ['test-%012d' % i for i in range(ws.items)]

        self.assertEqual(sorted(keys), expected)
Esempio n. 2
0
    def test_key_for_removal(self):
        ws = WorkloadSettings(items=10**3,
                              workers=20,
                              working_set=100,
                              working_set_access=100,
                              working_set_moving_docs=0)

        keys = set()
        for worker in range(ws.workers):
            for key in docgen.UnorderedKey(sid=worker, ws=ws, prefix='test'):
                keys.add(key)

        key_gen = docgen.KeyForRemoval(prefix='test')
        for op in range(1, 100):
            key = key_gen.next(op)
            self.assertIn(key, keys)
Esempio n. 3
0
    def test_working_set_keys(self):
        ws = WorkloadSettings(items=10**3,
                              workers=10,
                              working_set=90,
                              working_set_access=50,
                              working_set_moving_docs=0)

        keys = set()
        for worker in range(ws.workers):
            for key in docgen.UnorderedKey(sid=worker, ws=ws, prefix='test'):
                keys.add(key)

        key_gen = docgen.WorkingSetKey(ws=ws, prefix='test')
        for op in range(10**4):
            key = key_gen.next(curr_items=ws.items, curr_deletes=0)
            self.assertIn(key, keys)
Esempio n. 4
0
    def test_zipf_generator(self):
        ws = WorkloadSettings(items=10**3,
                              workers=40,
                              working_set=10,
                              working_set_access=100,
                              working_set_moving_docs=0)

        keys = set()
        for worker in range(ws.workers):
            for key in docgen.UnorderedKey(sid=worker, ws=ws, prefix='test'):
                self.assertNotIn(key, keys)
                keys.add(key)
        self.assertEqual(len(keys), ws.items)

        key_gen = docgen.ZipfKey(prefix='test')
        for op in range(10**4):
            key = key_gen.next(curr_deletes=100, curr_items=ws.items)
            self.assertIn(key, keys)
Esempio n. 5
0
    def test_cas_updates(self):
        ws = WorkloadSettings(items=10**3,
                              workers=20,
                              working_set=100,
                              working_set_access=100,
                              working_set_moving_docs=0)

        keys = set()
        for worker in range(ws.workers):
            for key in docgen.UnorderedKey(sid=worker, ws=ws, prefix='test'):
                keys.add(key)

        cases = defaultdict(set)
        key_gen = docgen.KeyForCASUpdate(total_workers=ws.workers,
                                         prefix='test')
        for sid in 5, 6:
            for op in range(10**3):
                key = key_gen.next(sid=sid, curr_items=ws.items)
                self.assertIn(key, keys)
                cases[sid].add(key)
Esempio n. 6
0
    def test_hot_keys(self):
        ws = WorkloadSettings(items=10**4,
                              workers=40,
                              working_set=10,
                              working_set_access=100,
                              working_set_moving_docs=0)

        keys = set()
        for worker in range(ws.workers):
            for key in docgen.UnorderedKey(sid=worker, ws=ws, prefix='test'):
                self.assertNotIn(key, keys)
                keys.add(key)
        self.assertEqual(len(keys), ws.items)

        hot_keys = set()
        for worker in range(ws.workers):
            for key in docgen.HotKey(sid=worker, ws=ws, prefix='test'):
                self.assertNotIn(key, hot_keys)
                self.assertIn(key, keys)
                hot_keys.add(key)
        self.assertEqual(len(hot_keys), ws.working_set * ws.items // 100)