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() |