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))
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))
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 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
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()
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()
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')
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} ==========================")
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'))
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}")
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')
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)
def _create_mock_db(range_cnt: int): mock_db = MockKeyValueDatabase.create_db() context_db = ContextDatabase(mock_db) return IconScoreDatabase(SCORE_ADDR, context_db)
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)