Commit Graph

106 Commits

Author SHA1 Message Date
Jean-Baptiste Barth
d007dfe3ff Remove process_timeouts() method in favor of timeout(<Timeout>) and a helper for tests 2015-11-19 11:45:27 +01:00
Jean-Baptiste Barth
65c35bfa69 Make timeout events appear at the right time in workflow history 2015-11-19 11:45:27 +01:00
Jean-Baptiste Barth
d618585790 Refactor timeouts processing so it will be easier to compute them in order 2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
61bb550052 Ensure activity and decision tasks cannot progress on a closed workflow
This is a second barrier because I'm a little nervous about this and I
don't want moto/swf to make any activity progress while in the real
world service, it's strictly impossible once the execution is closed.
Python doesn't seem to have any nice way of freezing an object so here
we go with a manual boundary...
2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
65c95ab5bc Ensure activity and decision tasks cannot timeout on a closed workflow 2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
f38d23e483 Implement start to close timeout on SWF workflow executions 2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
86973f2b87 Implement start to close timeout on SWF decision tasks 2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
e32fef50b6 Fix random list ordering bugs on python 3.x in moto/swf tests 2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
2cd3d5fb45 Fix python 3.x compatibility regarding iterations on a dict
Error on travis-ci was:

    AttributeError: 'dict' object has no attribute 'iteritems'

And actually it's been removed in python 3.x in favor of dict.items()
2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
f4feec4727 Fix timestamps in tests as Travis builds run on GMT time
When launched manually, tests should be launched with the environment
variable TZ=GMT. Maybe this could be useful to add that explicitly
somewhere in the README or in the Makefile.
2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
90c8797abd Implement heartbeat timeout on SWF activity tasks 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
f576f3765c Add SWF endpoint RecordActivityTaskHeartbeat 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
804d2e91b5 Improve workflow selection before raising a WorkflowExecutionAlreadyStartedFault 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
96d6bb056b Add SWF endpoint TerminateWorkflowExecution 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
98948a01c8 Add missing attributes in DescribeWorkflowExecution responses 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
fd12e317f8 Add SWF endpoint RespondActivityTaskFailed 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
c9e8ad03f8 Add SWF endpoint RespondActivityTaskCompleted 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
08643945df Add SWF endpoint CountPendingActivityTasks 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
761ab816f9 Add SWF endpoint PollForActivityTask 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
a0e484fa6d Move setup_workflow() test function in test utils 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
be71909a8c Rework task lists for activity/decision tasks 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
eadc07bf61 Reorganize SWF tests so they're shorter and easier to use 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
5e086223c2 Implement ScheduleActivityTask decision 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
53630dc061 Add a Domain to WorkflowExecution objects
This will be needed later for finding an activity type for instance.
2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
fa4608be98 Add basic ActivityTask model 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
49e44c8ee6 Fix openDecisionTasks counter not updated when we complete a DecisionTask 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
918cf8a4e3 Fix decision parameters: attributes are in foo*Decision*Attributes 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
417f732b53 Implement FailWorkflowExecution decision 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
558b84fb6a Add checks for *DecisionAttributes within RespondDecisionTaskCompleted 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
0749b30fb4 Add some basic checks on SWF decisions, more to come later 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
381eb5eb0f Implement CompleteWorkflowExecution decision 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
d97c770849 Add first version of SWF endpoint RespondDecisionTaskCompleted
There's just the structure for now, for now the workflow execution
doesn't know how to handle any decision type.
2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
c72c198208 Fix WorkflowExecution event ids not increasing 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
a137e5c5c9 Add SWF endpoint CountPendingDecisionTasks 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
4e223d2318 Fix PollForDecisionTask not respecting requested task list 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
aa4adbb76e Implement reverseOrder option for GetWorkflowExecutionHistory and PollForDecisionTask 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
c16da9da2d Add SWF endpoint PollForDecisionTask and associated DecisionTask model 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
8d435d8afe Refactor SWF exceptions testing so responses tests get simpler 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
464aef293c Add SWF endpoint GetWorkflowExecutionHistory and associated HistoryEvent model 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
3ce5b29356 Handle WorkflowExecution/WorkflowType options inheritance
... and potential resulting DefaultUndefinedFault errors.
2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
6a8636ad21 Remove unused import in SWF test 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
2878252816 Add SWF endpoint: DescribeWorkflowExecution 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
a589dc08b5 Make workflow_id a required property of WorkflowExecution
Given the response of DescribeWorkflowExecution endpoint, the
WorkflowExecution has to know about its own workflowId.
2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
c08c20d197 Move SWF Domain full dict representation to model 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
92cf64c2ad Add SWF endpoint: StartWorkflowExecution 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
33c478bc62 Move SWF Domain related tests with other models tests 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
036ab194ba Add 'status' to SWF *Type string representation 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
8b02c0b85e Move *Type __repr__ to GenericType 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
5c02fcd94b Abstract away SWF *Type models logic into a GenericType class 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
9483355584 Prepare SWF objects representations directly via json.dumps()
... instead of jinja2 templates that are absolutely not suited for this
purpose, and hard to test.
2015-11-19 11:45:21 +01:00
Jean-Baptiste Barth
c4e903706c Add SWF endpoints: RegisterWorkflowType, DeprecateWorkflowType, ListWorkflowTypes, DescribeWorkflowType 2015-11-19 11:45:21 +01:00
Jean-Baptiste Barth
b680b2ec3c Add SWF endpoints: RegisterActivityType, DeprecateActivityType, ListActivityType, DescribeActivityType 2015-11-19 11:45:21 +01:00
Jean-Baptiste Barth
cb46eac513 Implement naive reverseOrder option for SWF's ListDomains endpoint 2015-11-19 11:45:21 +01:00
Jean-Baptiste Barth
9440531d0c Move SWF domain related tests in their own file
It will simplify other objects integration
2015-11-19 11:45:21 +01:00
Jean-Baptiste Barth
5392978eaf Check parameters are strings on SWF endpoints
SWF endpoints raise a 400 Bad Request for non-string types, and boto
doesn't enforce it as of today, so better have some safety nets in moto
to avoid this common mistake.

Example exception raised by Boto:

    SWFResponseError: SWFResponseError: 400 Bad Request
    {u'Message': u'class java.lang.Short can not be converted to an String',
    u'__type': u'com.amazon.coral.service#SerializationException'}
2015-11-19 11:45:21 +01:00
Jean-Baptiste Barth
8e3fd6c7de Add SWF endpoints: RegisterDomain, DeprecateDomain, ListDomains, DescribeDomain 2015-11-19 11:45:20 +01:00