Example #1
0
 def test_committed_unknown(self, _log_mock):
     fpc = msg_factories.concents.ForcePaymentCommittedFactory(
         amount_pending=31337,
         recipient_type=None,
     )
     with self.assertRaises(ValueError):
         library.interpret(fpc)
Example #2
0
    def test_force_get_task_result_download(self):
        fgtrd = self._get_correct_message()

        library.interpret(fgtrd)

        ep = ExtractedPackageFactory()

        extract = \
            self.task_server.task_manager.task_result_manager.extract_zip = \
            mock.Mock(return_value=ep)

        verify_results = self.task_server.verify_results = mock.Mock()

        with mock.patch(
                'golem.network.concent.filetransfers'
                '.ConcentFiletransferService.download', ) as download_mock:
            self.cft._run()

        download_mock.assert_called_once()
        self.assertEqual(download_mock.call_args[0][0].file_transfer_token,
                         fgtrd.file_transfer_token)

        extract.assert_called_once()
        verify_results.assert_called_once_with(report_computed_task=self.rct,
                                               extracted_package=ep)
Example #3
0
 def test_committed_provider(self, log_mock):
     fpc = msg_factories.concents.ForcePaymentCommittedFactory.to_provider(
         amount_pending=31337, )
     library.interpret(fpc)
     self.assertIn(
         "Forced payment from",
         log_mock.call_args[0][0],
     )
Example #4
0
 def test_force_subtask_results_response_empty(self):
     msg = message.concents.ForceSubtaskResultsResponse()
     # pylint: disable=no-member
     self.assertIsNone(msg.subtask_results_accepted)
     self.assertIsNone(msg.subtask_results_rejected)
     # pylint: enable=no-member
     with self.assertRaises(RuntimeError):
         library.interpret(msg)
Example #5
0
 def test_fgtr_service_refused(self, tcf):
     fgtr = msg_factories.concents.ForceGetTaskResultFactory()
     sr = msg_factories.concents.ServiceRefusedFactory(
         task_to_compute__subtask_id=fgtr.subtask_id)
     library.interpret(sr, response_to=fgtr)
     tcf.assert_called_once_with(
         fgtr.subtask_id,
         'Concent refused to assist in forced results download')
Example #6
0
 def test_committed_requestor(self, log_mock):
     fpc = msg_factories.concents.ForcePaymentCommittedFactory.to_requestor(
     )
     library.interpret(fpc)
     log_mock.assert_called_once()
     self.assertIn(
         "Our deposit was used to cover payment",
         log_mock.call_args[0][0],
     )
Example #7
0
 def test_ack_subtask_results_verify_no_resources(self, upload_mock,
                                                  log_mock):
     self.task_server.results_to_send[self.wtr.subtask_id] = self.wtr
     asrv = self.get_asrv()
     library.interpret(asrv)
     self.cft._run()
     self.cft._run()
     self.assertEqual(upload_mock.call_count, 1)
     self.assertIn('Cannot upload resources', log_mock.call_args[0][0])
Example #8
0
    def test_settled(self):
        srs = msg_factories.concents.SubtaskResultsSettledFactory()
        self.task_server.client.node.key = srs.task_to_compute.provider_id

        library.interpret(srs)
        self.client.transaction_system.settle_income.assert_called_once_with(
            srs.task_to_compute.requestor_id,
            srs.subtask_id,
            srs.timestamp,
        )
Example #9
0
 def test_positive_path(self, last_resort_mock, get_mock):
     get_mock.return_value = msg_factories \
         .tasks \
         .SubtaskResultsAcceptedFactory()
     library.interpret(self.msg)
     last_resort_mock.assert_not_called()
     self.task_server.client.concent_service.submit_task_message \
         .assert_called_once_with(
             get_mock().subtask_id,
             mock.ANY)
Example #10
0
 def test_ack_subtask_results_verify_no_results(self, upload_mock,
                                                log_mock):
     self.task_server.task_manager.comp_task_keeper.add_package_paths(
         self.wtr.task_id, [self.path])
     asrv = self.get_asrv()
     library.interpret(asrv)
     self.cft._run()
     self.cft._run()
     self.assertEqual(upload_mock.call_count, 1)
     self.assertIn('Cannot find the subtask', log_mock.call_args[0][0])
Example #11
0
 def test_subtask_timeout(self, add_mock):
     self.msg.ack_report_computed_task = None
     self.msg.reject_report_computed_task = None
     self.msg.reason = self.reasons.SubtaskTimeout
     library.interpret(self.msg)
     add_mock.assert_called_once_with(
         msg=self.msg,
         node_id=None,
         local_role=Actor.Provider,
         remote_role=Actor.Concent,
     )
Example #12
0
 def test_verdict_report_computed_task_diff_ttc(self, verify_mock):
     msg = msg_factories.concents.VerdictReportComputedTaskFactory()
     msg.ack_report_computed_task.report_computed_task.task_to_compute = \
         msg_factories.tasks.TaskToComputeFactory()
     self.assertNotEqual(
         msg.ack_report_computed_task.task_to_compute,
         msg.force_report_computed_task.report_computed_task.
         task_to_compute,
     )
     library.interpret(msg)
     verify_mock.assert_not_called()
Example #13
0
 def test_force_subtask_results_response_rejected(self, rejected_mock,
                                                  add_mock):
     msg = msg_factories.concents.\
         ForceSubtaskResultsResponseFactory.with_rejected()
     library.interpret(msg)
     rejected_mock.assert_called_once_with(subtask_id=msg.subtask_id, )
     add_mock.assert_called_once_with(
         msg=msg.subtask_results_rejected,
         node_id=mock.ANY,
         local_role=Actor.Provider,
         remote_role=Actor.Requestor,
     )
Example #14
0
def process_messages_received_from_concent(concent_service):
    # Process first 50 messages only in one sync
    for _ in range(50):
        try:
            msg = concent_service.received_messages.get_nowait()
        except queue.Empty:
            break

        try:
            library.interpret(msg)
        except Exception:  # pylint: disable=broad-except
            logger.exception('Problem interpreting: %r', msg)

        concent_service.received_messages.task_done()
Example #15
0
 def test_force_report_computed_task(self, pull_mock, _mdt_mock,
                                     helper_mock):
     msg = msg_factories.concents.ForceReportComputedTaskFactory()
     helper_mock.return_value = returned_msg = object()
     library.interpret(msg)
     helper_mock.assert_called_once_with(
         msg=msg.report_computed_task,
         ecc=mock.ANY,
     )
     self.task_server.client.concent_service.submit_task_message \
         .assert_any_call(
             msg.report_computed_task.subtask_id,
             returned_msg)
     pull_mock.assert_called()
Example #16
0
 def test_reject_from_requestor(self, add_mock):
     self.msg.reason = self.reasons.RejectFromRequestor
     library.interpret(self.msg)
     ttc = self.msg.task_to_compute
     self.assertEqual(add_mock.call_count, 2)
     call_inner = mock.call(
         msg=self.msg.reject_report_computed_task,
         node_id=ttc.requestor_id,
         local_role=Actor.Provider,
         remote_role=Actor.Requestor,
     )
     add_mock.assert_has_calls([
         self.call_response,
         call_inner,
     ])
Example #17
0
    def test_force_get_task_result_download_failed(self, log_mock):
        fgtrd = self._get_correct_message()

        library.interpret(fgtrd)

        exception = Exception()

        with mock.patch(
                'golem.network.concent.filetransfers'
                '.ConcentFiletransferService.download',
                mock.Mock(side_effect=exception)):
            self.cft._run()

        log_mock.assert_called_with("Concent download failed: %r, %s",
                                    self.rct.subtask_id, exception)
Example #18
0
 def test_concent_ack(self, add_mock):
     self.msg.reason = self.reasons.ConcentAck
     library.interpret(self.msg)
     ttc = self.msg.task_to_compute
     call_inner = mock.call(
         msg=self.msg.ack_report_computed_task,
         node_id=ttc.requestor_id,
         local_role=Actor.Provider,
         remote_role=Actor.Concent,
     )
     self.assertEqual(add_mock.call_count, 2)
     add_mock.assert_has_calls([
         self.call_response,
         call_inner,
     ])
Example #19
0
    def test_force_get_task_result_upload_failed(self, log_mock):
        fgtru = self._get_correct_message()
        self.task_server.results_to_send[self.wtr.subtask_id] = self.wtr

        library.interpret(fgtru)

        exception = Exception()

        with mock.patch(
                'golem.network.concent.filetransfers'
                '.ConcentFiletransferService.upload',
                mock.Mock(side_effect=exception)):
            self.cft._run()

        log_mock.assert_called_with("Concent results upload failed: %r, %s",
                                    fgtru.subtask_id, exception)
Example #20
0
    def test_force_get_task_result_failed(self, tcf):
        fgtrf = msg_factories.concents.ForceGetTaskResultFailedFactory()
        fgtrf._fake_sign()
        library.interpret(fgtrf)

        msg = history.MessageHistoryService.get_sync_as_message(
            task=fgtrf.task_id,
            subtask=fgtrf.subtask_id,
            node=fgtrf.task_to_compute.provider_id,
            msg_cls='ForceGetTaskResultFailed',
        )

        self.assertIsInstance(msg, message.concents.ForceGetTaskResultFailed)
        tcf.assert_called_once_with(
            fgtrf.subtask_id,
            'Error downloading the task result through the Concent')
Example #21
0
    def test_force_get_task_result_download_extraction_failed(self, log_mock):
        fgtrd = self._get_correct_message()

        library.interpret(fgtrd)

        exception = Exception()
        extract = \
            self.task_server.task_manager.task_result_manager.extract_zip = \
            mock.Mock(side_effect=exception)

        with mock.patch(
                'golem.network.concent.filetransfers'
                '.ConcentFiletransferService.download', ):
            self.cft._run()

        extract.assert_called_once()
        log_mock.assert_called_with(
            "Concent results extraction failure: %r, %s", fgtrd.subtask_id,
            exception)
Example #22
0
    def test_force_subtask_results_response_accepted(self, add_mock):
        msg = msg_factories.concents.\
            ForceSubtaskResultsResponseFactory.with_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,
        )

        add_mock.assert_called_once_with(
            msg=msg.subtask_results_accepted,
            node_id=mock.ANY,
            local_role=Actor.Provider,
            remote_role=Actor.Requestor,
        )
Example #23
0
    def test_ack_subtask_results_verify(self, upload_mock):
        self.task_server.results_to_send[self.wtr.subtask_id] = self.wtr
        self.task_server.task_manager.comp_task_keeper.add_package_paths(
            self.wtr.task_id, [self.path])
        asrv = self.get_asrv()
        library.interpret(asrv)
        self.cft._run()
        self.cft._run()
        self.assertEqual(upload_mock.call_count, 2)
        resources_call, results_call = upload_mock.call_args_list

        self.assertEqual(resources_call[0][0].file_transfer_token,
                         asrv.file_transfer_token)
        self.assertEqual(resources_call[0][0].file_category,
                         FileTransferToken.FileInfo.Category.resources)

        self.assertEqual(results_call[0][0].file_transfer_token,
                         asrv.file_transfer_token)
        self.assertEqual(results_call[0][0].file_category,
                         FileTransferToken.FileInfo.Category.results)
Example #24
0
    def test_force_get_task_result_upload(self, log_mock):
        fgtru = self._get_correct_message()
        self.task_server.results_to_send[self.wtr.subtask_id] = self.wtr

        library.interpret(fgtru)

        response = mock.Mock(ok=True)

        with mock.patch(
                'golem.network.concent.filetransfers'
                '.ConcentFiletransferService.upload',
                mock.Mock(return_value=response)) as upload_mock:
            self.cft._run()

        upload_mock.assert_called_once()
        self.assertEqual(upload_mock.call_args[0][0].file_path,
                         self.wtr.package_path)
        self.assertEqual(upload_mock.call_args[0][0].file_transfer_token,
                         fgtru.file_transfer_token)

        log_mock.assert_called_with("Concent results upload sucessful: %r, %s",
                                    fgtru.subtask_id, response)
Example #25
0
 def test_ftt_wrong_type(self, log_mock):
     msg = self._get_message_ftt_wrong_type()
     library.interpret(msg)
     self.cf_transfer.assert_not_called()
     log_mock.assert_called_once()
     self.assertIn('File Transfer Token invalid', log_mock.call_args[0][0])
Example #26
0
 def test_force_get_task_result_upload_wtr_not_found(self, log_mock):
     fgtru = self._get_correct_message()
     library.interpret(fgtru)
     self.cf_transfer.assert_not_called()
     log_mock.assert_called_once()
     self.assertIn('Cannot find the subtask', log_mock.call_args[0][0])
Example #27
0
 def test_no_sra_nor_srr(self, last_resort_mock, get_mock):
     get_mock.return_value = None
     library.interpret(self.msg)
     last_resort_mock.assert_called_once_with(
         report_computed_task=self.msg.ack_report_computed_task.
         report_computed_task, )
Example #28
0
 def test_ack_subtask_results_verify_srv_not_ours(self, log_mock):
     asrv = self.get_asrv(sign=False)
     library.interpret(asrv)
     self.assertIn('Signature invalid', log_mock.call_args[0][0])
Example #29
0
 def test_ack_subtask_results_verify_ftt_not_upload(self, log_mock):
     asrv = self.get_asrv(file_transfer_token__operation=FileTransferToken.
                          Operation.download)
     library.interpret(asrv)
     self.assertIn('File Transfer Token invalid', log_mock.call_args[0][0])
Example #30
0
 def test_ack_subtask_results_verify_no_ftt(self, log_mock):
     asrv = self.get_asrv(file_transfer_token=None)
     library.interpret(asrv)
     self.assertIn('File Transfer Token invalid', log_mock.call_args[0][0])