def test_base(self):
        block = uuid_generator.create('user'), uuid_generator.create('post'), 0
        block_id = self.index.append(*block)

        find_block = self.index.get_block(block_id)

        self.assertEqual(find_block.user_id, block[0])
        self.assertEqual(find_block.post_id, block[1])
    def test_padding(self):
        block_data = uuid_generator.create('user'), uuid_generator.create('post'), 1, 0, 0, '\0'
        block = self.index.block_class(*block_data)

        paddings = \
            [ block._fields_by_name['user_id'].padding
            , block._fields_by_name['post_id'].padding
            , block._fields_by_name['id'].padding
            , block._fields_by_name['prev_p'].padding
            , block._fields_by_name['next_p'].padding
            , block._fields_by_name['skip'].padding
            ]

        self.assertListEqual([0, 16, 32, 36, 40, 44], paddings)
        self.assertEqual(45, len(block))
    def test_sorting_dict(self):
        d = dict()
        keys = range(10000)

        while keys:
            choice = random.choice(keys)
            d[choice] = uuid_generator.create('user')
            keys.remove(choice)

        self.assertListEqual(d.keys(), sorted(range(10000)))
    def create_index(self, block_num=1000, user_num=10):
        users = dict()
        for user_id in self.create_uuids(user_num, bytes=True):
            users[user_id] = 0

        for i in xrange(block_num):
            choosed_user = random.choice(users.keys())
            block = choosed_user, uuid_generator.create('post').bytes, users[choosed_user]
            block_id = self.index.append(*block, bytes=True)
            users[choosed_user] = block_id

        return users
Exemple #5
0
 def create_index2(self, users=10000, posts=10 ** 6):
     Block = namedtuple('Block', 'created user_id post_id')
     users = self.create_uuids(num=users, node='user', bytes=True)
     result = []
     created_initial = int(round(time.time() * 1000))
     for i in xrange(posts):
         choosed_user = random.choice(users)
         result.append( Block( created=created_initial + 1
                             , user_id=choosed_user
                             , post_id=uuid_generator.create('post').bytes
                             ) )
     return users, result
Exemple #6
0
    def create_index(self, users=10000, posts=100000):
        users = self.create_uuids(num=users, node='user', bytes=True)

        index = self.index

        created_initial = int(round(time.time() * 1000))

        for i in xrange(posts):
            choosed_user = random.choice(users)
            index.append(self.block_class(created_initial + i, choosed_user, uuid_generator.create('post').bytes, _bytes=True))
        index.storage.commit()

        return users, created_initial, created_initial + posts
 def create_uuids(self, num=1000, node='user', bytes=False):
     result = []
     for i in xrange(num):
         result.append(bytes and uuid_generator.create(node).bytes or uuid_generator.create(node))
     return result
    def test_by_search_sortedblist_algo(self):
        u1 = uuid_generator.create('user').bytes
        u2 = uuid_generator.create('user').bytes
        u3 = uuid_generator.create('user').bytes

        p1 = uuid_generator.create('post').bytes
        p2 = uuid_generator.create('post').bytes
        p3 = uuid_generator.create('post').bytes
        p4 = uuid_generator.create('post').bytes
        p5 = uuid_generator.create('post').bytes
        p6 = uuid_generator.create('post').bytes
        p7 = uuid_generator.create('post').bytes
        p8 = uuid_generator.create('post').bytes
        p9 = uuid_generator.create('post').bytes

        self.index.append(u1, p1, 0, bytes=True)
        self.index.append(u2, p2, 0, bytes=True)
        self.index.append(u3, p3, 0, bytes=True)
        self.index.append(u1, p4, 1, bytes=True)
        self.index.append(u2, p5, 2, bytes=True)
        self.index.append(u3, p6, 3, bytes=True)
        self.index.append(u3, p7, 6, bytes=True)
        self.index.append(u2, p8, 5, bytes=True)
        self.index.append(u2, p9, 8, bytes=True)

        user_last_post = blist.sortedlist([9, 7, 4])

        result = list()

        while user_last_post:
            b = self.index.get_block(user_last_post.pop())
            result.append(b.id)
            b.prev_p and user_last_post.add(b.prev_p)

        self.assertListEqual([9, 8, 7, 6, 5, 4, 3, 2, 1], result)
    def test_by_search_list_algo(self):
        u1 = uuid_generator.create('user').bytes
        u2 = uuid_generator.create('user').bytes
        u3 = uuid_generator.create('user').bytes

        p1 = uuid_generator.create('post').bytes
        p2 = uuid_generator.create('post').bytes
        p3 = uuid_generator.create('post').bytes
        p4 = uuid_generator.create('post').bytes
        p5 = uuid_generator.create('post').bytes
        p6 = uuid_generator.create('post').bytes
        p7 = uuid_generator.create('post').bytes
        p8 = uuid_generator.create('post').bytes
        p9 = uuid_generator.create('post').bytes

        self.index.append(u1, p1, 0, bytes=True)
        self.index.append(u2, p2, 0, bytes=True)
        self.index.append(u3, p3, 0, bytes=True)
        self.index.append(u1, p4, 1, bytes=True)
        self.index.append(u2, p5, 2, bytes=True)
        self.index.append(u3, p6, 3, bytes=True)
        self.index.append(u3, p7, 6, bytes=True)
        self.index.append(u2, p8, 5, bytes=True)
        self.index.append(u2, p9, 8, bytes=True)

        user_last_post = \
            [ [u1, 4]
            , [u2, 9]
            , [u3, 7]
            ]

        user_last_post.sort(key=lambda v: v[1], reverse=True)
        user_last_post_len = len(user_last_post)

        result = list()

        while user_last_post_len:
            b = self.index.get_block(user_last_post[0][1])
            result.append(b.id)

            if not b.prev_p:
                del user_last_post[0]
                user_last_post_len -= 1
                continue

            user_last_post[0][1] = b.prev_p
            if user_last_post_len > 1 and b.prev_p < user_last_post[1][1]:
                user_last_post.sort(key=lambda v: v[1], reverse=True)


        self.assertListEqual([9, 8, 7, 6, 5, 4, 3, 2, 1], result)
Exemple #10
0
 def test_datetime(self):
     u = uuid_generator.create('user')
     print uuid_to_dt(u)
Exemple #11
0
 def test_create(self):
     u = uuid_generator.create('user')
     self.assertEqual(u.node, 1)