示例#1
0
    def test_revert_paginated_data2(self, mock_dev_config):
        with set_qrl_dir('no_data'):
            state = State()
            p = PaginatedData(b'p_tx_hash', True, state._db)
            alice_address_state = OptimizedAddressState.get_default(
                address=self.alice.address)

            for i in range(0, 25):
                p.insert(
                    alice_address_state, b'p_tx_hash_' +
                    i.to_bytes(8, byteorder='big', signed=False))

            p.put_paginated_data(None)

            full_hash = []
            for i in range(0, (25 // config.dev.data_per_page) + 1):
                data = p.get_paginated_data(
                    self.alice.address, (i + 1) * config.dev.data_per_page - 1)
                full_hash.extend(data)

            for tx_hash in full_hash[-1::-1]:
                p.remove(alice_address_state, tx_hash)
            p.put_paginated_data(None)

            self.assertEqual(
                alice_address_state.get_counter_by_name(b'p_tx_hash'), 0)

            self.assertEqual(
                len(p.get_paginated_data(alice_address_state.address, 22)), 0)

            self.assertEqual(
                len(p.get_paginated_data(alice_address_state.address, 12)), 0)

            self.assertEqual(
                len(p.get_paginated_data(alice_address_state.address, 2)), 0)
示例#2
0
    def test_remove(self, mock_dev_config):
        with set_qrl_dir('no_data'):
            state = State()
            p = PaginatedData(b'p_tx_hash', True, state._db)
            key = b'test_key'
            value = [b'hello world']
            storage_key = p.generate_key(key, 11)
            p.put(storage_key, value, None)
            found_value = p.get_paginated_data(key, 11)
            self.assertEqual(value, found_value)

            p.delete(storage_key, None)
            found_value = p.get_paginated_data(key, 11)
            self.assertEqual([], found_value)
示例#3
0
    def test_get_paginated_data(self, mock_dev_config):
        with set_qrl_dir('no_data'):
            state = State()
            p = PaginatedData(b'p_tx_hash', True, state._db)
            alice_address_state = OptimizedAddressState.get_default(
                address=self.alice.address)

            total_hashes = 25
            expected_full_hash = []
            for i in range(0, total_hashes):
                tx_hash = b'p_tx_hash_' + i.to_bytes(
                    8, byteorder='big', signed=False)
                p.insert(alice_address_state, tx_hash)
                expected_full_hash.append(tx_hash)

            p.put_paginated_data(None)

            found_full_hash = []
            expected_data_count = [10, 10, 5]
            for i in range(0, (total_hashes // config.dev.data_per_page) + 1):
                data = p.get_paginated_data(
                    self.alice.address, (i + 1) * config.dev.data_per_page - 1)
                self.assertEqual(len(data), expected_data_count[i])
                found_full_hash.extend(data)

            self.assertEqual(expected_full_hash, found_full_hash)
示例#4
0
    def test_put_paginated_data(self, mock_dev_config):
        with set_qrl_dir('no_data'):
            state = State()
            p = PaginatedData(b'p_tx_hash', True, state._db)
            alice_address_state = OptimizedAddressState.get_default(
                address=self.alice.address)

            for i in range(0, 10):
                p.insert(
                    alice_address_state, b'p_tx_hash_' +
                    i.to_bytes(8, byteorder='big', signed=False))
                self.assertEqual(
                    alice_address_state.get_counter_by_name(p.name), i + 1)

            p.put_paginated_data(None)
            self.assertEqual(alice_address_state.get_counter_by_name(p.name),
                             10)

            for i in range(10, 25):
                p.insert(
                    alice_address_state, b'p_tx_hash_' +
                    i.to_bytes(8, byteorder='big', signed=False))
                self.assertEqual(
                    alice_address_state.get_counter_by_name(p.name), i + 1)

            p.put_paginated_data(None)
            self.assertEqual(alice_address_state.get_counter_by_name(p.name),
                             25)
            self.assertEqual(len(p.key_value), 0)

            pages_data = []
            for i in range(0, (25 // config.dev.data_per_page) + 1):
                data = p.get_paginated_data(
                    self.alice.address, (i + 1) * config.dev.data_per_page - 1)
                pages_data.append(data)

            self.assertEqual(len(pages_data), 3)

            self.assertEqual(len(pages_data[0]), 10)
            for i in range(0, 10):
                self.assertEqual(
                    pages_data[0][i], b'p_tx_hash_' +
                    i.to_bytes(8, byteorder='big', signed=False))

            self.assertEqual(len(pages_data[1]), 10)
            for i in range(10, 20):
                self.assertEqual(
                    pages_data[1][i - 10], b'p_tx_hash_' +
                    i.to_bytes(8, byteorder='big', signed=False))

            self.assertEqual(len(pages_data[2]), 5)
            for i in range(20, 25):
                self.assertEqual(
                    pages_data[2][i - 20], b'p_tx_hash_' +
                    i.to_bytes(8, byteorder='big', signed=False))