Skip to content

Commit

Permalink
Merge pull request #184 from golemfactory/117-include-factories-in-th…
Browse files Browse the repository at this point in the history
…e-library

include factories in the library
  • Loading branch information
shadeofblue authored Apr 9, 2018
2 parents f02004c + 71d08d8 commit b2ef63b
Show file tree
Hide file tree
Showing 11 changed files with 291 additions and 262 deletions.
2 changes: 2 additions & 0 deletions golem_messages/factories/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import concents
from . import tasks
121 changes: 29 additions & 92 deletions tests/factories.py → golem_messages/factories/concents.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
import time
# pylint: disable=too-few-public-methods,unnecessary-lambda
import random
import time

from ethereum.utils import denoms
import factory
import faker

from golem_messages.message import concents
from golem_messages.message import tasks

# pylint: disable=too-few-public-methods,unnecessary-lambda
from .tasks import (
SubtaskResultsAcceptedFactory, SubtaskResultsRejectedFactory
)


class FileInfoFactory(factory.DictFactory):
Expand All @@ -20,78 +22,20 @@ class Meta:
size = factory.Faker('random_int', min=1 << 20, max=10 << 20)


class TaskOwnerFactory(factory.DictFactory):
key = factory.Faker('binary', length=64)
node_name = factory.Faker('name')


class ComputeTaskDefFactory(factory.DictFactory):
class Meta:
model = tasks.ComputeTaskDef

task_id = factory.Faker('uuid4')
subtask_id = factory.Faker('uuid4')


class TaskToComputeFactory(factory.Factory):
class Meta:
model = tasks.TaskToCompute

requestor_id = factory.Sequence(lambda n: 'requestor {}'.format(n))
requestor_public_key = factory.Sequence(
lambda n: 'requestor pubkey {}'.format(n)
)
requestor_ethereum_public_key = factory.Faker('binary', length=64)
provider_id = factory.Sequence(lambda n: 'provider {}'.format(n))
provider_public_key = factory.Sequence(
lambda n: 'provider pubkey {}'.format(n)
)
provider_ethereum_public_key = factory.Faker('binary', length=64)

compute_task_def = factory.SubFactory(ComputeTaskDefFactory)

price = factory.Faker('random_int', min=1 << 20, max=10 << 20)


class SubtaskResultsAcceptedFactory(factory.Factory):
class Meta:
model = tasks.SubtaskResultsAccepted

task_to_compute = factory.SubFactory(
'tests.factories.TaskToComputeFactory')


class SubtaskResultsRejectedFactory(factory.Factory):
"""
Produces a regular `SubtaskResultsRejected` message, containing the earlier
`ReportComputedTask` message
"""
class Meta:
model = tasks.SubtaskResultsRejected

report_computed_task = factory.SubFactory(
'tests.factories.ReportComputedTaskFactory')


class ReportComputedTaskFactory(factory.Factory):
class Meta:
model = tasks.ReportComputedTask

task_to_compute = factory.SubFactory(TaskToComputeFactory)


class ForceReportComputedTaskFactory(factory.Factory):
class Meta:
model = concents.ForceReportComputedTask

report_computed_task = factory.SubFactory(ReportComputedTaskFactory)
report_computed_task = factory.SubFactory(
'golem_messages.factories.tasks.ReportComputedTaskFactory')


class SubtaskResultsVerifyFactory(factory.Factory):
class Meta:
model = concents.SubtaskResultsVerify

subtask_results_rejected = factory.SubFactory(SubtaskResultsRejectedFactory)
subtask_results_rejected = factory.SubFactory(
'golem_messages.factories.tasks.SubtaskResultsRejectedFactory')


class AckSubtaskResultsVerifyFactory(factory.Factory):
Expand All @@ -100,13 +44,13 @@ class Meta:

subtask_results_verify = factory.SubFactory(SubtaskResultsVerifyFactory)


class SubtaskResultsSettledFactory(factory.Factory):
class Meta:
model = concents.SubtaskResultsSettled

origin = concents.SubtaskResultsSettled.Origin.ResultsAcceptedTimeout
task_to_compute = factory.SubFactory(TaskToComputeFactory)
task_to_compute = factory.SubFactory(
'golem_messages.factories.tasks.TaskToComputeFactory')

@classmethod
def origin_acceptance_timeout(cls, *args, **kwargs):
Expand All @@ -125,7 +69,8 @@ class ForceGetTaskResultFactory(factory.Factory):
class Meta:
model = concents.ForceGetTaskResult

report_computed_task = factory.SubFactory(ReportComputedTaskFactory)
report_computed_task = factory.SubFactory(
'golem_messages.factories.tasks.ReportComputedTaskFactory')


class AckForceGetTaskResultFactory(factory.Factory):
Expand All @@ -139,7 +84,8 @@ class ForceGetTaskResultFailedFactory(factory.Factory):
class Meta:
model = concents.ForceGetTaskResultFailed

task_to_compute = factory.SubFactory(TaskToComputeFactory)
task_to_compute = factory.SubFactory(
'golem_messages.factories.tasks.TaskToComputeFactory')


class ForceGetTaskResultRejectedFactory(factory.Factory):
Expand Down Expand Up @@ -242,27 +188,12 @@ def subtask_results_rejected(obj, create, extracted, **kwargs):
# pylint: enable=no-self-argument


class AckReportComputedTaskFactory(factory.Factory):
class Meta:
model = concents.AckReportComputedTask

report_computed_task = factory.SubFactory(ReportComputedTaskFactory)


class RejectReportComputedTaskFactory(factory.Factory):
class Meta:
model = concents.RejectReportComputedTask

task_to_compute = factory.SubFactory(
TaskToComputeFactory,
)


class ForceSubtaskResultsFactory(factory.Factory):
class Meta:
model = concents.ForceSubtaskResults

ack_report_computed_task = factory.SubFactory(AckReportComputedTaskFactory)
ack_report_computed_task = factory.SubFactory(
'golem_messages.factories.tasks.AckReportComputedTaskFactory')


class ForceSubtaskResultsRejectedFactory(factory.Factory):
Expand Down Expand Up @@ -351,11 +282,16 @@ class ForceReportComputedTaskResponseFactory(factory.Factory):
class Meta:
model = concents.ForceReportComputedTaskResponse

ack_report_computed_task = factory.SubFactory(AckReportComputedTaskFactory)
ack_report_computed_task = factory.SubFactory(
'golem_messages.factories.tasks.AckReportComputedTaskFactory')
reject_report_computed_task = factory.SubFactory(
RejectReportComputedTaskFactory,
task_to_compute__compute_task_def__subtask_id=factory.SelfAttribute('....ack_report_computed_task.report_computed_task.task_to_compute.subtask_id'), # noqa pylint:disable=line-too-long
task_to_compute__compute_task_def__task_id=factory.SelfAttribute('....ack_report_computed_task.report_computed_task.task_to_compute.task_id'), # noqa pylint:disable=line-too-long
'golem_messages.factories.tasks.RejectReportComputedTaskFactory',
task_to_compute__compute_task_def__subtask_id=factory.SelfAttribute(
'....ack_report_computed_task.'
'report_computed_task.task_to_compute.subtask_id'),
task_to_compute__compute_task_def__task_id=factory.SelfAttribute(
'....ack_report_computed_task.'
'report_computed_task.task_to_compute.task_id'),
)


Expand All @@ -366,7 +302,7 @@ class Meta:
force_report_computed_task = factory.SubFactory(
ForceReportComputedTaskFactory)
ack_report_computed_task = factory.SubFactory(
AckReportComputedTaskFactory,
'golem_messages.factories.tasks.AckReportComputedTaskFactory',
report_computed_task__task_to_compute__compute_task_def__subtask_id=factory.SelfAttribute( # noqa pylint:disable=line-too-long
'.....force_report_computed_task.subtask_id'),
report_computed_task__task_to_compute__compute_task_def__task_id=factory.SelfAttribute( # noqa pylint:disable=line-too-long
Expand All @@ -385,4 +321,5 @@ class ServiceRefusedFactory(factory.Factory):
class Meta:
model = concents.ServiceRefused

task_to_compute = factory.SubFactory(TaskToComputeFactory)
task_to_compute = factory.SubFactory(
'golem_messages.factories.tasks.TaskToComputeFactory')
84 changes: 84 additions & 0 deletions golem_messages/factories/tasks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# pylint: disable=too-few-public-methods,unnecessary-lambda
import calendar
import datetime
import time

import factory

from golem_messages.message import tasks


class TaskOwnerFactory(factory.DictFactory):
key = factory.Faker('binary', length=64)
node_name = factory.Faker('name')


class ComputeTaskDefFactory(factory.DictFactory):
class Meta:
model = tasks.ComputeTaskDef

task_id = factory.Faker('uuid4')
subtask_id = factory.Faker('uuid4')
deadline = factory.LazyFunction(
lambda: calendar.timegm(time.gmtime()) +
int(datetime.timedelta(days=1).total_seconds()))
src_code = factory.Faker('text')


class TaskToComputeFactory(factory.Factory):
class Meta:
model = tasks.TaskToCompute

requestor_id = factory.Sequence(lambda n: 'requestor {}'.format(n))
requestor_public_key = factory.Sequence(
lambda n: 'requestor pubkey {}'.format(n)
)
requestor_ethereum_public_key = factory.Faker('binary', length=64)
provider_id = factory.Sequence(lambda n: 'provider {}'.format(n))
provider_public_key = factory.Sequence(
lambda n: 'provider pubkey {}'.format(n)
)
provider_ethereum_public_key = factory.Faker('binary', length=64)

compute_task_def = factory.SubFactory(ComputeTaskDefFactory)

price = factory.Faker('random_int', min=1 << 20, max=10 << 20)


class ReportComputedTaskFactory(factory.Factory):
class Meta:
model = tasks.ReportComputedTask

task_to_compute = factory.SubFactory(TaskToComputeFactory)


class AckReportComputedTaskFactory(factory.Factory):
class Meta:
model = tasks.AckReportComputedTask

report_computed_task = factory.SubFactory(ReportComputedTaskFactory)


class RejectReportComputedTaskFactory(factory.Factory):
class Meta:
model = tasks.RejectReportComputedTask

task_to_compute = factory.SubFactory(TaskToComputeFactory)


class SubtaskResultsAcceptedFactory(factory.Factory):
class Meta:
model = tasks.SubtaskResultsAccepted

task_to_compute = factory.SubFactory(TaskToComputeFactory)


class SubtaskResultsRejectedFactory(factory.Factory):
"""
Produces a regular `SubtaskResultsRejected` message, containing the earlier
`ReportComputedTask` message
"""
class Meta:
model = tasks.SubtaskResultsRejected

report_computed_task = factory.SubFactory(ReportComputedTaskFactory)
9 changes: 5 additions & 4 deletions golem_messages/message/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@
from golem_messages.message.resources import ResourceHandshakeVerdict # noqa
from golem_messages.message.concents import ServiceRefused # noqa
from golem_messages.message.concents import ForceReportComputedTask # noqa
from golem_messages.message.concents import AckReportComputedTask # noqa
from golem_messages.message.concents import RejectReportComputedTask # noqa
from golem_messages.message.tasks import AckReportComputedTask # noqa
from golem_messages.message.tasks import RejectReportComputedTask # noqa
from golem_messages.message.concents import VerdictReportComputedTask # noqa
from golem_messages.message.concents import FileTransferToken # noqa
# pylint: enable=unused-import
Expand Down Expand Up @@ -109,6 +109,9 @@ def init_messages():
tasks.SubtaskResultsRejected,
tasks.GetResource,

tasks.AckReportComputedTask,
tasks.RejectReportComputedTask,

# Resource messages
resources.PushResource,
resources.HasResource,
Expand All @@ -126,8 +129,6 @@ def init_messages():

# Concent messages
concents.ServiceRefused,
concents.AckReportComputedTask,
concents.RejectReportComputedTask,
concents.VerdictReportComputedTask,
concents.FileTransferToken,
concents.SubtaskResultsVerify,
Expand Down
Loading

0 comments on commit b2ef63b

Please sign in to comment.