Remove process_timeouts() method in favor of timeout(<Timeout>) and a helper for tests
This commit is contained in:
parent
65c35bfa69
commit
d007dfe3ff
@ -154,8 +154,8 @@ class WorkflowExecution(object):
|
|||||||
# workflow execution timeout
|
# workflow execution timeout
|
||||||
_timeout = self.first_timeout()
|
_timeout = self.first_timeout()
|
||||||
if _timeout:
|
if _timeout:
|
||||||
self.execute_timeout(_timeout)
|
self.timeout(_timeout)
|
||||||
# TODO: process child policy on child workflows here or in process_timeouts()
|
# TODO: process child policy on child workflows here or in timeout()
|
||||||
self._add_event(
|
self._add_event(
|
||||||
"WorkflowExecutionTimedOut",
|
"WorkflowExecutionTimedOut",
|
||||||
child_policy=self.child_policy,
|
child_policy=self.child_policy,
|
||||||
@ -168,7 +168,7 @@ class WorkflowExecution(object):
|
|||||||
_timeout = task.first_timeout()
|
_timeout = task.first_timeout()
|
||||||
if task.state == "STARTED" and _timeout:
|
if task.state == "STARTED" and _timeout:
|
||||||
self.should_schedule_decision_next = True
|
self.should_schedule_decision_next = True
|
||||||
task.process_timeouts()
|
task.timeout(_timeout)
|
||||||
self._add_event(
|
self._add_event(
|
||||||
"DecisionTaskTimedOut",
|
"DecisionTaskTimedOut",
|
||||||
event_timestamp=_timeout.timestamp,
|
event_timestamp=_timeout.timestamp,
|
||||||
@ -182,7 +182,7 @@ class WorkflowExecution(object):
|
|||||||
_timeout = task.first_timeout()
|
_timeout = task.first_timeout()
|
||||||
if task.open and _timeout:
|
if task.open and _timeout:
|
||||||
self.should_schedule_decision_next = True
|
self.should_schedule_decision_next = True
|
||||||
task.process_timeouts()
|
task.timeout(_timeout)
|
||||||
self._add_event(
|
self._add_event(
|
||||||
"ActivityTaskTimedOut",
|
"ActivityTaskTimedOut",
|
||||||
details=task.details,
|
details=task.details,
|
||||||
@ -538,16 +538,11 @@ class WorkflowExecution(object):
|
|||||||
if _timeout.reached:
|
if _timeout.reached:
|
||||||
return _timeout
|
return _timeout
|
||||||
|
|
||||||
def execute_timeout(self, timeout):
|
def timeout(self, timeout):
|
||||||
self.execution_status = "CLOSED"
|
self.execution_status = "CLOSED"
|
||||||
self.close_status = "TIMED_OUT"
|
self.close_status = "TIMED_OUT"
|
||||||
self.timeout_type = timeout.kind
|
self.timeout_type = timeout.kind
|
||||||
|
|
||||||
def process_timeouts(self):
|
|
||||||
_timeout = self.first_timeout()
|
|
||||||
if _timeout:
|
|
||||||
self.execute_timeout(_timeout)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def open(self):
|
def open(self):
|
||||||
return self.execution_status == "OPEN"
|
return self.execution_status == "OPEN"
|
||||||
|
@ -8,7 +8,11 @@ from moto.swf.models import (
|
|||||||
Timeout,
|
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():
|
def test_activity_task_creation():
|
||||||
@ -101,7 +105,7 @@ def test_activity_task_first_timeout():
|
|||||||
# activity task timeout is 300s == 5mins
|
# activity task timeout is 300s == 5mins
|
||||||
with freeze_time("2015-01-01 12:06:00"):
|
with freeze_time("2015-01-01 12:06:00"):
|
||||||
task.first_timeout().should.be.a(Timeout)
|
task.first_timeout().should.be.a(Timeout)
|
||||||
task.process_timeouts()
|
process_first_timeout(task)
|
||||||
task.state.should.equal("TIMED_OUT")
|
task.state.should.equal("TIMED_OUT")
|
||||||
task.timeout_type.should.equal("HEARTBEAT")
|
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"):
|
with freeze_time("2015-01-01 14:10:00"):
|
||||||
task.first_timeout().should.be.a(Timeout)
|
task.first_timeout().should.be.a(Timeout)
|
||||||
wfe.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
|
task.first_timeout().should.be.none
|
||||||
|
|
||||||
def test_activity_task_cannot_change_state_on_closed_workflow_execution():
|
def test_activity_task_cannot_change_state_on_closed_workflow_execution():
|
||||||
|
@ -4,7 +4,7 @@ from sure import expect
|
|||||||
from moto.swf.exceptions import SWFWorkflowExecutionClosedError
|
from moto.swf.exceptions import SWFWorkflowExecutionClosedError
|
||||||
from moto.swf.models import DecisionTask, Timeout
|
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():
|
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"):
|
with freeze_time("2015-01-01 14:10:00"):
|
||||||
dt.first_timeout().should.be.a(Timeout)
|
dt.first_timeout().should.be.a(Timeout)
|
||||||
wfe.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
|
dt.first_timeout().should.be.none
|
||||||
|
|
||||||
def test_decision_task_cannot_change_state_on_closed_workflow_execution():
|
def test_decision_task_cannot_change_state_on_closed_workflow_execution():
|
||||||
|
@ -82,3 +82,10 @@ def setup_workflow():
|
|||||||
wfe = conn.start_workflow_execution("test-domain", "uid-abcd1234", "test-workflow", "v1.0")
|
wfe = conn.start_workflow_execution("test-domain", "uid-abcd1234", "test-workflow", "v1.0")
|
||||||
conn.run_id = wfe["runId"]
|
conn.run_id = wfe["runId"]
|
||||||
return conn
|
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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user