Example #1
0
class TestIconScoreDatabase(unittest.TestCase):
    def setUp(self):
        state_db_root_path = 'state_db'
        self.state_db_root_path = state_db_root_path
        rmtree(state_db_root_path)
        os.mkdir(state_db_root_path)

        address = Address.from_data(AddressPrefix.CONTRACT, b'0')
        context_factory = IconScoreContextFactory(max_size=2)

        db_path = os.path.join(state_db_root_path, 'db')
        context_db = ContextDatabase.from_path(db_path, True)

        self.db = IconScoreDatabase(address, context_db=context_db, prefix=b'')
        self.address = address
        self.context_factory = context_factory

    def tearDown(self):
        self.db.close()
        rmtree(self.state_db_root_path)

    def test_address(self):
        self.assertEqual(self.address, self.db.address)

    def test_put_and_get(self):
        db = self.db
        key = self.address.body
        value = 100

        self.assertIsNone(db.get(key))

        db.put(key, value.to_bytes(32, DATA_BYTE_ORDER))
        self.assertEqual(value.to_bytes(32, DATA_BYTE_ORDER), db.get(key))
Example #2
0
class TestIconScoreDatabase(unittest.TestCase):
    def setUp(self):
        state_db_root_path = 'state_db'
        self.state_db_root_path = state_db_root_path
        rmtree(state_db_root_path)
        os.mkdir(state_db_root_path)

        address = Address.from_data(AddressPrefix.CONTRACT, b'0')

        db_path = os.path.join(state_db_root_path, 'db')
        context_db = ContextDatabase.from_path(db_path, True)

        self.db = IconScoreDatabase(address, context_db=context_db, prefix=b'')
        self.address = address

    def tearDown(self):
        self.db.close()
        rmtree(self.state_db_root_path)

    def test_address(self):
        self.assertEqual(self.address, self.db.address)

    @patch('iconservice.iconscore.context.context.ContextGetter._context')
    def test_put_and_get(self, context):
        context.current_address = self.address
        db = self.db
        key = self.address.body
        value = 100

        self.assertIsNone(db.get(key))

        context.readonly = False
        context.type = IconScoreContextType.DIRECT
        db.put(key, value.to_bytes(32, DATA_BYTE_ORDER))
        self.assertEqual(value.to_bytes(32, DATA_BYTE_ORDER), db.get(key))
Example #3
0
    def setUp(self):
        state_db_root_path = 'state_db'
        self.state_db_root_path = state_db_root_path
        rmtree(state_db_root_path)
        os.mkdir(state_db_root_path)

        address = Address.from_data(AddressPrefix.CONTRACT, b'0')

        db_path = os.path.join(state_db_root_path, 'db')
        context_db = ContextDatabase.from_path(db_path, True)

        self.db = IconScoreDatabase(address, context_db=context_db, prefix=b'')
        self.address = address
Example #4
0
 def intercept_query(*args, **kwargs):
     ContextContainer._push_context(args[0])
     context_db = self._inner_task._icon_service_engine._icx_context_db
     score = SampleScore(IconScoreDatabase(to_, context_db))
     ret = score.query_db()
     ContextContainer._pop_context()
     return ret
Example #5
0
        def intercept_invoke(*args, **kwargs):
            ContextContainer._push_context(args[0])

            context_db = self._inner_task._icon_service_engine._icx_context_db
            score = SampleScore(IconScoreDatabase(to_, context_db))
            score.hash_readonly(data_to_hash)

            ContextContainer._pop_context()
Example #6
0
 def intercept_invoke(*args, **kwargs):
     ContextContainer._push_context(args[0])
     context_db = self._inner_task._icon_service_engine._icx_context_db
     ori_func = IconScoreContextUtil.get_owner
     IconScoreContextUtil.get_owner = Mock()
     score = SampleScore(IconScoreDatabase(to_, context_db))
     IconScoreContextUtil.get_owner = ori_func
     score.remove_db()
     ContextContainer._pop_context()
Example #7
0
        def intercept_invoke(*args, **kwargs):
            ContextContainer._push_context(args[0])
            context_db = inner_task._icon_service_engine._icx_context_db

            score_address = create_address(AddressPrefix.CONTRACT, b'address')
            score = SampleScore(IconScoreDatabase(score_address, context_db))

            address = create_address(AddressPrefix.EOA, b'address')
            score.SampleEvent(b'i_data', address, 10, b'data', 'text')
Example #8
0
    def get_score_db(score_address: Optional['Address'] = None):
        """Get db of SCORE that having score_address.
        create cx prefixed address and set it as SCORE's address if score_address is None

        :param score_address: address of score.
        :return: db SCORE use
        """
        if not score_address:
            score_address = create_address(AddressPrefix.CONTRACT)
        score_db = IconScoreDatabase(score_address, context_db)
        return score_db
    def setUp(self):
        self.key_value_mock = MockKeyValueDatabase({})
        self.db = IconScoreDatabase(self.sender,
                                    ContextDatabase(self.key_value_mock))
        IconScoreBase.get_owner = lambda score_object, score_address: self.sender

        self.smart_wallet = SmartWallet(self.db)
        type(self.smart_wallet).msg = PropertyMock(
            return_value=Message(sender=self.sender, value=10000))

        # print test name
        print(f"===== {self._testMethodName} ==========================")
Example #10
0
 def intercept_invoke(*args, **kwargs):
     ContextContainer._push_context(args[0])
     context_db = self._inner_task._icon_service_engine._icx_context_db
     address = create_address(AddressPrefix.EOA)
     score = SampleScore(IconScoreDatabase(address, context_db))
     i_data_param = b'i_data'
     data_param = b'data'
     text_param = 'text'
     score.SampleEvent(i_data_param, address, data_param, text_param)
     global event_log_data_size
     event_log_data_size = \
         len("SampleEvent(bytes,Address,bytes,str)".encode('utf-8')) + \
         len(i_data_param) + \
         len(address.body) + \
         len(data_param) + \
         len(text_param.encode('utf-8'))
Example #11
0
        def intercept_invoke(*args, **kwargs):
            args[0].revision = REVISION_3
            ContextContainer._push_context(args[0])

            context_db = self._inner_task._icon_service_engine._icx_context_db
            address = create_address(AddressPrefix.EOA)
            score = SampleScore(IconScoreDatabase(address, context_db))
            i_data_param = b'i_data'
            data_param = b'data'
            text_param = 'text'
            score.SampleEvent(i_data_param, address, data_param, text_param)
            global event_log_data_size
            event_log_data_size = \
                len("SampleEvent(bytes,Address,bytes,str)".encode('utf-8')) + \
                len(i_data_param) + \
                ICON_CONTRACT_ADDRESS_BYTES_SIZE + \
                len(data_param) + \
                len(text_param.encode('utf-8'))

            ContextContainer._pop_context()
    def setUp(self):
        self.key_value_mock = MockKeyValueDatabase({})
        self.db = IconScoreDatabase(self.sender,
                                    ContextDatabase(self.key_value_mock))
        IconScoreBase.get_owner = lambda score_object, score_address: self.sender

        self.smart_wallet = SmartWallet(self.db)
        type(self.smart_wallet).msg = PropertyMock(
            return_value=Message(sender=self.sender, value=10000))
        SmartWallet.Account = lambda _self, account: None
        self.smart_wallet.on_install(
            json.dumps({
                "id": 0,
                "tokenType": "icx",
                "balance": 3000,
                "sendLimit": 1000,
                "totalUsed": 500,
                "lastUsedDate": "2018-11-21",
                "dids": []
            }))
        # print test name
        print("=====================================================")
        print(f"{self._testMethodName}")
Example #13
0
 def intercept_invoke(*args, **kwargs):
     ContextContainer._push_context(args[0])
     context_db = self._inner_task._icon_service_engine._icx_context_db
     score = SampleScore(IconScoreDatabase(to_, context_db))
     score.hash_writable(b'1234')
Example #14
0
 def create_db():
     mock_db = MockKeyValueDatabase.create_db()
     context_db = ContextDatabase(mock_db)
     return IconScoreDatabase(create_address(), context_db)
def score_db(context_db):
    return IconScoreDatabase(create_address(), context_db)
Example #16
0
def _create_mock_db(range_cnt: int):
    mock_db = MockKeyValueDatabase.create_db()
    context_db = ContextDatabase(mock_db)
    return IconScoreDatabase(SCORE_ADDR, context_db)
Example #17
0
 def _create_plyvel_db(self, range_cnt: int):
     _db = KeyValueDatabase.from_path(f"{DB_PATH}{range_cnt}")
     context_db = ContextDatabase(_db)
     return IconScoreDatabase(SCORE_ADDR, context_db)