Remove process_timeouts() method in favor of timeout(<Timeout>) and a helper for tests

This commit is contained in:
Jean-Baptiste Barth 2015-11-05 02:47:05 +01:00
parent 65c35bfa69
commit d007dfe3ff
4 changed files with 21 additions and 15 deletions

View File

@ -154,8 +154,8 @@ class WorkflowExecution(object):
# workflow execution timeout
_timeout = self.first_timeout()
if _timeout:
self.execute_timeout(_timeout)
# TODO: process child policy on child workflows here or in process_timeouts()
self.timeout(_timeout)
# TODO: process child policy on child workflows here or in timeout()
self._add_event(
"WorkflowExecutionTimedOut",
child_policy=self.child_policy,
@ -168,7 +168,7 @@ class WorkflowExecution(object):
_timeout = task.first_timeout()
if task.state == "STARTED" and _timeout:
self.should_schedule_decision_next = True
task.process_timeouts()
task.timeout(_timeout)
self._add_event(
"DecisionTaskTimedOut",
event_timestamp=_timeout.timestamp,
@ -182,7 +182,7 @@ class WorkflowExecution(object):
_timeout = task.first_timeout()
if task.open and _timeout:
self.should_schedule_decision_next = True
task.process_timeouts()
task.timeout(_timeout)
self._add_event(
"ActivityTaskTimedOut",
details=task.details,
@ -538,16 +538,11 @@ class WorkflowExecution(object):
if _timeout.reached:
return _timeout
def execute_timeout(self, timeout):
def timeout(self, timeout):
self.execution_status = "CLOSED"
self.close_status = "TIMED_OUT"
self.timeout_type = timeout.kind
def process_timeouts(self):
_timeout = self.first_timeout()
if _timeout:
self.execute_timeout(_timeout)
@property
def open(self):
return self.execution_status == "OPEN"

View File

@ -8,7 +8,11 @@ from moto.swf.models import (
Timeout,
)
from ..utils import make_workflow_execution, ACTIVITY_TASK_TIMEOUTS
from ..utils import (
ACTIVITY_TASK_TIMEOUTS,
make_workflow_execution,
process_first_timeout,
)
def test_activity_task_creation():
@ -101,7 +105,7 @@ def test_activity_task_first_timeout():
# activity task timeout is 300s == 5mins
with freeze_time("2015-01-01 12:06:00"):
task.first_timeout().should.be.a(Timeout)
task.process_timeouts()
process_first_timeout(task)
task.state.should.equal("TIMED_OUT")
task.timeout_type.should.equal("HEARTBEAT")
@ -123,7 +127,7 @@ def test_activity_task_cannot_timeout_on_closed_workflow_execution():
with freeze_time("2015-01-01 14:10:00"):
task.first_timeout().should.be.a(Timeout)
wfe.first_timeout().should.be.a(Timeout)
wfe.process_timeouts()
process_first_timeout(wfe)
task.first_timeout().should.be.none
def test_activity_task_cannot_change_state_on_closed_workflow_execution():

View File

@ -4,7 +4,7 @@ from sure import expect
from moto.swf.exceptions import SWFWorkflowExecutionClosedError
from moto.swf.models import DecisionTask, Timeout
from ..utils import make_workflow_execution
from ..utils import make_workflow_execution, process_first_timeout
def test_decision_task_creation():
@ -60,7 +60,7 @@ def test_decision_task_cannot_timeout_on_closed_workflow_execution():
with freeze_time("2015-01-01 14:10:00"):
dt.first_timeout().should.be.a(Timeout)
wfe.first_timeout().should.be.a(Timeout)
wfe.process_timeouts()
process_first_timeout(wfe)
dt.first_timeout().should.be.none
def test_decision_task_cannot_change_state_on_closed_workflow_execution():

View File

@ -82,3 +82,10 @@ def setup_workflow():
wfe = conn.start_workflow_execution("test-domain", "uid-abcd1234", "test-workflow", "v1.0")
conn.run_id = wfe["runId"]
return conn
# A helper for processing the first timeout on a given object
def process_first_timeout(obj):
_timeout = obj.first_timeout()
if _timeout:
obj.timeout(_timeout)