| Index: third_party/gsutil/third_party/boto/tests/unit/swf/test_layer2_actors.py
|
| diff --git a/third_party/gsutil/third_party/boto/tests/unit/swf/test_layer2_actors.py b/third_party/gsutil/third_party/boto/tests/unit/swf/test_layer2_actors.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..cedf895b72d63e46fb4555212dd8870f47d1687f
|
| --- /dev/null
|
| +++ b/third_party/gsutil/third_party/boto/tests/unit/swf/test_layer2_actors.py
|
| @@ -0,0 +1,87 @@
|
| +import boto.swf.layer2
|
| +from boto.swf.layer2 import Decider, ActivityWorker
|
| +from tests.unit import unittest
|
| +from mock import Mock
|
| +
|
| +
|
| +class TestActors(unittest.TestCase):
|
| +
|
| + def setUp(self):
|
| + boto.swf.layer2.Layer1 = Mock()
|
| + self.worker = ActivityWorker(name='test-worker', domain='test', task_list='test_list')
|
| + self.decider = Decider(name='test-worker', domain='test', task_list='test_list')
|
| + self.worker._swf = Mock()
|
| + self.decider._swf = Mock()
|
| +
|
| + def test_decider_pass_tasktoken(self):
|
| + self.decider._swf.poll_for_decision_task.return_value = {
|
| + 'events': [{'eventId': 1,
|
| + 'eventTimestamp': 1379019427.953,
|
| + 'eventType': 'WorkflowExecutionStarted',
|
| + 'workflowExecutionStartedEventAttributes': {
|
| + 'childPolicy': 'TERMINATE',
|
| + 'executionStartToCloseTimeout': '3600',
|
| + 'parentInitiatedEventId': 0,
|
| + 'taskList': {'name': 'test_list'},
|
| + 'taskStartToCloseTimeout': '123',
|
| + 'workflowType': {'name': 'test_workflow_name',
|
| + 'version': 'v1'}}},
|
| + {'decisionTaskScheduledEventAttributes':
|
| + {'startToCloseTimeout': '123',
|
| + 'taskList': {'name': 'test_list'}},
|
| + 'eventId': 2,
|
| + 'eventTimestamp': 1379019427.953,
|
| + 'eventType': 'DecisionTaskScheduled'},
|
| + {'decisionTaskStartedEventAttributes': {'scheduledEventId': 2},
|
| + 'eventId': 3, 'eventTimestamp': 1379019495.585,
|
| + 'eventType': 'DecisionTaskStarted'}],
|
| + 'previousStartedEventId': 0, 'startedEventId': 3,
|
| + 'taskToken': 'my_specific_task_token',
|
| + 'workflowExecution': {'runId': 'fwr243dsa324132jmflkfu0943tr09=',
|
| + 'workflowId': 'test_workflow_name-v1-1379019427'},
|
| + 'workflowType': {'name': 'test_workflow_name', 'version': 'v1'}}
|
| +
|
| + self.decider.poll()
|
| + self.decider.complete()
|
| +
|
| + self.decider._swf.respond_decision_task_completed.assert_called_with('my_specific_task_token', None)
|
| + self.assertEqual('my_specific_task_token', self.decider.last_tasktoken)
|
| +
|
| + def test_worker_pass_tasktoken(self):
|
| + task_token = 'worker_task_token'
|
| + self.worker._swf.poll_for_activity_task.return_value = {
|
| + 'activityId': 'SomeActivity-1379020713',
|
| + 'activityType': {'name': 'SomeActivity', 'version': '1.0'},
|
| + 'startedEventId': 6,
|
| + 'taskToken': task_token,
|
| + 'workflowExecution': {'runId': '12T026NzGK5c4eMti06N9O3GHFuTDaNyA+8LFtoDkAwfE=',
|
| + 'workflowId': 'MyWorkflow-1.0-1379020705'}}
|
| +
|
| + self.worker.poll()
|
| +
|
| + self.worker.cancel(details='Cancelling!')
|
| + self.worker.complete(result='Done!')
|
| + self.worker.fail(reason='Failure!')
|
| + self.worker.heartbeat()
|
| +
|
| + self.worker._swf.respond_activity_task_canceled.assert_called_with(task_token, 'Cancelling!')
|
| + self.worker._swf.respond_activity_task_completed.assert_called_with(task_token, 'Done!')
|
| + self.worker._swf.respond_activity_task_failed.assert_called_with(task_token, None, 'Failure!')
|
| + self.worker._swf.record_activity_task_heartbeat.assert_called_with(task_token, None)
|
| +
|
| + def test_actor_poll_without_tasklist_override(self):
|
| + self.worker.poll()
|
| + self.decider.poll()
|
| + self.worker._swf.poll_for_activity_task.assert_called_with('test', 'test_list')
|
| + self.decider._swf.poll_for_decision_task.assert_called_with('test', 'test_list')
|
| +
|
| + def test_worker_override_tasklist(self):
|
| + self.worker.poll(task_list='some_other_tasklist')
|
| + self.worker._swf.poll_for_activity_task.assert_called_with('test', 'some_other_tasklist')
|
| +
|
| + def test_decider_override_tasklist(self):
|
| + self.decider.poll(task_list='some_other_tasklist')
|
| + self.decider._swf.poll_for_decision_task.assert_called_with('test', 'some_other_tasklist')
|
| +
|
| +if __name__ == '__main__':
|
| + unittest.main()
|
|
|