From eae33846262ad453870e6406a746700e3128c786 Mon Sep 17 00:00:00 2001 From: Dariusz Rybi Date: Mon, 17 Jun 2019 13:29:31 +0200 Subject: [PATCH 1/2] expect_income() patch --- golem/ethereum/transactionsystem.py | 14 +++++++++----- golem/network/concent/received_handler.py | 1 + golem/task/taskserver.py | 14 ++++++++------ golem/task/tasksession.py | 12 ++++++------ tests/golem/ethereum/test_transactionsystem.py | 10 ++++++++++ .../golem/network/concent/test_received_handler.py | 11 ++++++----- tests/golem/task/test_tasksession.py | 11 ++++++----- 7 files changed, 46 insertions(+), 27 deletions(-) diff --git a/golem/ethereum/transactionsystem.py b/golem/ethereum/transactionsystem.py index 8038eed324..01efad82d3 100644 --- a/golem/ethereum/transactionsystem.py +++ b/golem/ethereum/transactionsystem.py @@ -500,19 +500,23 @@ def unlock_funds_for_payments(self, price: int, num: int) -> None: self._payments_locked -= num # pylint: disable=too-many-arguments + @sci_required() def expect_income( self, sender_node: str, + task_id: str, subtask_id: str, payer_address: str, value: int, accepted_ts: int) -> None: self._incomes_keeper.expect( - sender_node, - subtask_id, - payer_address, - value, - accepted_ts, + sender_node=sender_node, + task_id=task_id, + subtask_id=subtask_id, + payer_address=payer_address, + my_address=self._sci.get_eth_address(), + value=value, + accepted_ts=accepted_ts, ) def settle_income( diff --git a/golem/network/concent/received_handler.py b/golem/network/concent/received_handler.py index 198b4a61da..e2e1a4e9ec 100644 --- a/golem/network/concent/received_handler.py +++ b/golem/network/concent/received_handler.py @@ -305,6 +305,7 @@ def on_force_subtask_results_response(self, msg): sub_msg = msg.subtask_results_accepted self.task_server.subtask_accepted( sender_node_id=msg.requestor_id, + task_id=msg.task_id, subtask_id=msg.subtask_id, payer_address=ttc.requestor_ethereum_address, value=ttc.price, diff --git a/golem/task/taskserver.py b/golem/task/taskserver.py index f480dfd903..cb32e23a2b 100644 --- a/golem/task/taskserver.py +++ b/golem/task/taskserver.py @@ -25,7 +25,7 @@ from apps.appsmanager import AppsManager from apps.core.task.coretask import CoreTask from golem.clientconfigdescriptor import ClientConfigDescriptor -from golem.core.common import node_info_str, short_node_id +from golem.core.common import short_node_id from golem.core.variables import MAX_CONNECT_SOCKET_ADDRESSES from golem.environments.environment import SupportStatus, UnsupportReason from golem.envs.docker.cpu import DockerCPUConfig @@ -548,6 +548,7 @@ def subtask_rejected(self, sender_node_id, subtask_id): def subtask_accepted( self, sender_node_id: str, + task_id: str, subtask_id: str, payer_address: str, value: int, @@ -556,11 +557,12 @@ def subtask_accepted( logger.debug("Subtask %r result accepted", subtask_id) self.task_result_sent(subtask_id) self.client.transaction_system.expect_income( - sender_node_id, - subtask_id, - payer_address, - value, - accepted_ts, + sender_node=sender_node_id, + task_id=task_id, + subtask_id=subtask_id, + payer_address=payer_address, + value=value, + accepted_ts=accepted_ts, ) def subtask_settled(self, sender_node_id, subtask_id, settled_ts): diff --git a/golem/task/tasksession.py b/golem/task/tasksession.py index 76d6f72d1c..7c5651a95b 100644 --- a/golem/task/tasksession.py +++ b/golem/task/tasksession.py @@ -18,7 +18,6 @@ import golem from golem.core import common from golem.core import golem_async -from golem.core.keysauth import KeysAuth from golem.core import variables from golem.docker.environment import DockerEnvironment from golem.docker.image import DockerImage @@ -759,11 +758,12 @@ def _react_to_subtask_results_accepted( ) self.task_server.subtask_accepted( - self.key_id, - msg.subtask_id, - msg.task_to_compute.requestor_ethereum_address, - msg.task_to_compute.price, - msg.payment_ts, + sender_node=self.key_id, + task_id=msg.task_id, + subtask_id=msg.subtask_id, + payer_address=msg.task_to_compute.requestor_ethereum_address, + value=msg.task_to_compute.price, + accepted_ts=msg.payment_ts, ) self.dropped() diff --git a/tests/golem/ethereum/test_transactionsystem.py b/tests/golem/ethereum/test_transactionsystem.py index 9ba75f92ad..05c0267226 100644 --- a/tests/golem/ethereum/test_transactionsystem.py +++ b/tests/golem/ethereum/test_transactionsystem.py @@ -343,6 +343,16 @@ def test_backwards_compatibility_privkey(self): # Shouldn't throw self._make_ets(datadir=self.new_path / 'other', password=password) + def test_expect_income(self): + self.ets.expect_income( + sender_node='0xadbeef' + 'deadbeef' * 15, + task_id=str(uuid.uuid4()), + subtask_id=str(uuid.uuid4()), + payer_address='0x' + 40 * '1', + value=10, + accepted_ts=1, + ) + class WithdrawTest(TransactionSystemBase): def setUp(self): diff --git a/tests/golem/network/concent/test_received_handler.py b/tests/golem/network/concent/test_received_handler.py index eb34857fc9..ca7b4b87ff 100644 --- a/tests/golem/network/concent/test_received_handler.py +++ b/tests/golem/network/concent/test_received_handler.py @@ -412,11 +412,12 @@ def test_force_subtask_results_response_accepted( library.interpret(msg) self.client.transaction_system.expect_income.assert_called_once_with( - msg.task_to_compute.requestor_id, - msg.subtask_id, - msg.task_to_compute.requestor_ethereum_address, - msg.task_to_compute.price, - msg.subtask_results_accepted.payment_ts, + sender_node=msg.task_to_compute.requestor_id, + task_id=msg.task_id, + subtask_id=msg.subtask_id, + payer_address=msg.task_to_compute.requestor_ethereum_address, + value=msg.task_to_compute.price, + accepted_ts=msg.subtask_results_accepted.payment_ts, ) add_mock.assert_called_once_with( diff --git a/tests/golem/task/test_tasksession.py b/tests/golem/task/test_tasksession.py index 45693ee769..ef7a315042 100644 --- a/tests/golem/task/test_tasksession.py +++ b/tests/golem/task/test_tasksession.py @@ -956,11 +956,12 @@ def test_react_to_subtask_results_accepted(self): # then self.task_server.subtask_accepted.assert_called_once_with( - self.requestor_key_id, - sra.subtask_id, - sra.task_to_compute.requestor_ethereum_address, # noqa pylint:disable=no-member - sra.task_to_compute.price, # noqa pylint:disable=no-member - sra.payment_ts, + sender_node=self.requestor_key_id, + task_id=sra.task_id, + subtask_id=sra.subtask_id, + payer_address=sra.task_to_compute.requestor_ethereum_address, # noqa pylint:disable=no-member + value=sra.task_to_compute.price, # noqa pylint:disable=no-member + accepted_ts=sra.payment_ts, ) cancel = self.task_session.concent_service.cancel_task_message cancel.assert_called_once_with( From 3e40e268695c5b948e5278689e82efde65225cc9 Mon Sep 17 00:00:00 2001 From: Dariusz Rybi Date: Mon, 17 Jun 2019 14:45:01 +0200 Subject: [PATCH 2/2] mypy lint --- golem/ethereum/transactionsystem.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/golem/ethereum/transactionsystem.py b/golem/ethereum/transactionsystem.py index bba608e6e5..4b20a49b98 100644 --- a/golem/ethereum/transactionsystem.py +++ b/golem/ethereum/transactionsystem.py @@ -32,7 +32,6 @@ from twisted.internet import defer from golem import model -from golem.core import common from golem.core.deferred import call_later from golem.core.service import LoopingCallService from golem.ethereum.node import NodeProcess @@ -489,7 +488,7 @@ def expect_income( task_id=task_id, subtask_id=subtask_id, payer_address=payer_address, - my_address=self._sci.get_eth_address(), + my_address=self._sci.get_eth_address(), # type: ignore value=value, accepted_ts=accepted_ts, )