Ejemplo n.º 1
0
 def setUp(self):
     self._inner_task = generate_inner_task(Revision.FOUR.value)
     self.from_ = Address.from_data(AddressPrefix.EOA, os.urandom(20))
     self.to = Address.from_string('cx' + '0' * 40)
     self.score = Address.from_string('cx' + '1' * 40)
     IconScoreContext.engine.icx.transfer = Mock()
     IconScoreContext.engine.icx.get_balance = Mock(return_value=5000)
     IconScoreContext.engine.prep.preps = Mock()
    def setUp(self):
        self._inner_task = generate_inner_task()

        factory = self._inner_task._icon_service_engine._step_counter_factory
        self.step_counter = Mock(spec=IconScoreStepCounter)
        factory.create = Mock(return_value=self.step_counter)
        self.step_counter.step_used = 0
        self.step_counter.step_price = 0
        self.step_counter.step_limit = 5000000
Ejemplo n.º 3
0
    def test_request(self, score_invoke):
        inner_task = generate_inner_task(3)
        IconScoreContext.engine.prep.preps = Mock()

        # noinspection PyUnusedLocal
        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')

            ContextContainer._pop_context()

        score_invoke.side_effect = intercept_invoke

        from_ = create_address(AddressPrefix.EOA, b'from')
        to_ = create_address(AddressPrefix.CONTRACT, b'score')

        request = create_request([
            ReqData(bytes.hex(create_tx_hash(b'tx1')), from_, to_, 0, 'call',
                    {}),
            ReqData(bytes.hex(create_tx_hash(b'tx2')), from_, to_, 0, 'call',
                    {})
        ])
        response = inner_task._invoke(request)

        step_total = 0

        for tx_hash in response['txResults'].keys():
            result = response['txResults'][tx_hash]
            step_total += int(result['stepUsed'], 16)
            self.assertIn('status', result)
            self.assertIn('txHash', result)
            self.assertIn('txIndex', result)
            self.assertIn('blockHeight', result)
            self.assertIn('blockHash', result)
            self.assertIn('cumulativeStepUsed', result)
            self.assertIn('stepUsed', result)
            self.assertEqual(1, len(result['eventLogs']))
            self.assertEqual(step_total, int(result['cumulativeStepUsed'], 16))

        clear_inner_task()
Ejemplo n.º 4
0
    def setUp(self):
        self._inner_task = generate_inner_task()

        self._inner_task._icon_service_engine._icon_pre_validator = \
            Mock(spec=IconPreValidator)

        factory = self._inner_task._icon_service_engine._step_counter_factory
        self.step_counter = Mock(spec=IconScoreStepCounter)
        factory.create = Mock(return_value=self.step_counter)
        self.step_counter.step_used = 0
        self.step_counter.step_price = 0
        self.step_counter.step_limit = 5000000
        self.step_cost_dict = self._init_step_cost()
        prep_engine = PRepEngine()
        prep_engine.preps = Mock()
        fee_engine = FeeEngine()
        icx_engine = IcxEngine()
        IconScoreContext.engine = ContextEngine(deploy=Mock(),
                                                fee=fee_engine,
                                                icx=icx_engine,
                                                iiss=None,
                                                prep=prep_engine,
                                                issue=None)