aws-flow 1.0.7 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/aws/decider/history_helper.rb +1 -0
- data/lib/aws/decider/task_poller.rb +3 -2
- data/lib/aws/decider/version.rb +1 -1
- data/test/aws/decider_spec.rb +175 -13
- data/test/aws/integration_spec.rb +8 -8
- metadata +2 -2
| @@ -131,6 +131,7 @@ module AWS | |
| 131 131 | 
             
                    decision_start_to_completion_events, decision_completion_to_start_events = [], []
         | 
| 132 132 | 
             
                    next_replay_current_time_milliseconds = -1
         | 
| 133 133 | 
             
                    last_decision_index = -1
         | 
| 134 | 
            +
                    concurrent_to_decision = true
         | 
| 134 135 | 
             
                    while @events.events.length > 0
         | 
| 135 136 | 
             
                      event = @events.events.shift
         | 
| 136 137 | 
             
                      event_type = event.event_type.to_sym
         | 
| @@ -89,7 +89,6 @@ module AWS | |
| 89 89 | 
             
                    @logger = options.logger if options
         | 
| 90 90 | 
             
                    @logger ||= Utilities::LogFactory.make_logger(self, "debug")
         | 
| 91 91 | 
             
                    @executor = executor
         | 
| 92 | 
            -
             | 
| 93 92 | 
             
                  end
         | 
| 94 93 |  | 
| 95 94 | 
             
                  def execute(task)
         | 
| @@ -166,11 +165,13 @@ module AWS | |
| 166 165 | 
             
                  end
         | 
| 167 166 |  | 
| 168 167 | 
             
                  def poll_and_process_single_task(use_forking = true)
         | 
| 169 | 
            -
             | 
| 170 168 | 
             
                    @poll_semaphore ||= SuspendableSemaphore.new
         | 
| 171 169 | 
             
                    @poll_semaphore.acquire
         | 
| 172 170 | 
             
                    semaphore_needs_release = true
         | 
| 173 171 | 
             
                    @logger.debug "before the poll\n\n"
         | 
| 172 | 
            +
                    # This is to warm the lazily loaded clients in the @service, so we don't
         | 
| 173 | 
            +
                    # pay for their loading in every forked client
         | 
| 174 | 
            +
                    @service.config.to_h
         | 
| 174 175 | 
             
                    begin
         | 
| 175 176 | 
             
                      if use_forking
         | 
| 176 177 | 
             
                        @executor.block_on_max_workers
         | 
    
        data/lib/aws/decider/version.rb
    CHANGED
    
    
    
        data/test/aws/decider_spec.rb
    CHANGED
    
    | @@ -17,10 +17,43 @@ require 'yaml' | |
| 17 17 |  | 
| 18 18 | 
             
            require 'aws/decider'
         | 
| 19 19 | 
             
            include AWS::Flow
         | 
| 20 | 
            +
            class FakeConfig
         | 
| 21 | 
            +
              def to_h
         | 
| 20 22 |  | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
| 21 25 |  | 
| 22 26 | 
             
            $RUBYFLOW_DECIDER_DOMAIN = "rubyflow_decider_domain_06-12-2012"
         | 
| 23 27 | 
             
            $RUBYFLOW_DECIDER_TASK_LIST = 'test_task_list'
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            class FakeAttribute
         | 
| 30 | 
            +
              def initialize(data); @data = data; end
         | 
| 31 | 
            +
              def method_missing(method_name, *args, &block)
         | 
| 32 | 
            +
                if @data.keys.include? method_name
         | 
| 33 | 
            +
                  return @data[method_name]
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
                super
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
              def keys; @data.keys; end
         | 
| 38 | 
            +
              def [](key); @data[key]; end
         | 
| 39 | 
            +
              def to_h; @data; end
         | 
| 40 | 
            +
              def []=(key, val); @data[key] = val; end
         | 
| 41 | 
            +
            end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            class FakeEvents
         | 
| 44 | 
            +
              def initialize(args)
         | 
| 45 | 
            +
                @events = []
         | 
| 46 | 
            +
                args.each_with_index do |event, index|
         | 
| 47 | 
            +
                  event, attr = event if event.is_a? Array
         | 
| 48 | 
            +
                  attr ||= {}
         | 
| 49 | 
            +
                  @events << TestHistoryEvent.new(event, index + 1, FakeAttribute.new(attr))
         | 
| 50 | 
            +
                end
         | 
| 51 | 
            +
                @events
         | 
| 52 | 
            +
              end
         | 
| 53 | 
            +
              def to_a
         | 
| 54 | 
            +
                @events
         | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
            end
         | 
| 24 57 | 
             
            class TrivialConverter
         | 
| 25 58 | 
             
              def dump(x)
         | 
| 26 59 | 
             
                x
         | 
| @@ -44,9 +77,11 @@ class FakePage | |
| 44 77 | 
             
            end
         | 
| 45 78 |  | 
| 46 79 | 
             
            class FakeWorkflowExecution
         | 
| 47 | 
            -
              def run_id
         | 
| 48 | 
            -
                 | 
| 80 | 
            +
              def initialize(run_id = "1", workflow_id = "1")
         | 
| 81 | 
            +
                @run_id = run_id
         | 
| 82 | 
            +
                @workflow_id = workflow_id
         | 
| 49 83 | 
             
              end
         | 
| 84 | 
            +
              attr_accessor :run_id, :workflow_id
         | 
| 50 85 | 
             
            end
         | 
| 51 86 |  | 
| 52 87 | 
             
            class FakeWorkflowExecutionCollecton
         | 
| @@ -142,6 +177,7 @@ describe Activity do | |
| 142 177 | 
             
            end
         | 
| 143 178 |  | 
| 144 179 | 
             
            describe WorkflowClient do
         | 
| 180 | 
            +
             | 
| 145 181 | 
             
              class FakeServiceClient
         | 
| 146 182 | 
             
                attr_accessor :trace
         | 
| 147 183 | 
             
                def respond_decision_task_completed(task_completed_request)
         | 
| @@ -155,6 +191,7 @@ describe WorkflowClient do | |
| 155 191 | 
             
                end
         | 
| 156 192 | 
             
                def register_workflow_type(options)
         | 
| 157 193 | 
             
                end
         | 
| 194 | 
            +
             | 
| 158 195 | 
             
              end
         | 
| 159 196 | 
             
              class TestWorkflow
         | 
| 160 197 | 
             
                extend Decider
         | 
| @@ -414,6 +451,9 @@ describe "FakeHistory" do | |
| 414 451 | 
             
                  def start_workflow_execution(options)
         | 
| 415 452 | 
             
                    {"runId" => "blah"}
         | 
| 416 453 | 
             
                  end
         | 
| 454 | 
            +
                  def config
         | 
| 455 | 
            +
                    FakeConfig.new
         | 
| 456 | 
            +
                  end
         | 
| 417 457 | 
             
                end
         | 
| 418 458 |  | 
| 419 459 | 
             
                class Hash
         | 
| @@ -1198,17 +1238,6 @@ describe "FakeHistory" do | |
| 1198 1238 | 
             
              end
         | 
| 1199 1239 |  | 
| 1200 1240 | 
             
              it "ensures that CompleteWorkflowExecutionFailed is correctly handled" do
         | 
| 1201 | 
            -
                class FakeAttribute
         | 
| 1202 | 
            -
                  def initialize(data)
         | 
| 1203 | 
            -
                    @data = data
         | 
| 1204 | 
            -
                  end
         | 
| 1205 | 
            -
                  def method_missing(method_name, *args, &block)
         | 
| 1206 | 
            -
                    if @data.keys.include? method_name
         | 
| 1207 | 
            -
                      return @data[method_name]
         | 
| 1208 | 
            -
                    end
         | 
| 1209 | 
            -
                    super
         | 
| 1210 | 
            -
                  end
         | 
| 1211 | 
            -
                end
         | 
| 1212 1241 |  | 
| 1213 1242 | 
             
                class SynchronousWorkflowTaskPoller < WorkflowTaskPoller
         | 
| 1214 1243 | 
             
                  def get_decision_tasks
         | 
| @@ -1275,6 +1304,139 @@ describe "FakeHistory" do | |
| 1275 1304 | 
             
                worker.start
         | 
| 1276 1305 | 
             
                swf_client.trace.first[:decisions].first[:decision_type].should == "CompleteWorkflowExecution"
         | 
| 1277 1306 | 
             
              end
         | 
| 1307 | 
            +
             | 
| 1308 | 
            +
              it "ensures that time outs do not cause problems" do
         | 
| 1309 | 
            +
                class SynchronousWorkflowTaskPoller < WorkflowTaskPoller
         | 
| 1310 | 
            +
                  def get_decision_tasks
         | 
| 1311 | 
            +
                    fake_workflow_type = FakeWorkflowType.new(nil, "TimeOutWorkflow.entry_point", "1")
         | 
| 1312 | 
            +
                    TestHistoryWrapper.new(fake_workflow_type,
         | 
| 1313 | 
            +
                                           FakeEvents.new(["WorkflowExecutionStarted",
         | 
| 1314 | 
            +
                                                           "DecisionTaskScheduled",
         | 
| 1315 | 
            +
                                                           "DecisionTaskStarted",
         | 
| 1316 | 
            +
                                                           "DecisionTaskCompleted",
         | 
| 1317 | 
            +
                                                           ["StartChildWorkflowExecutionInitiated", {:workflow_id => "child_workflow_test"}],
         | 
| 1318 | 
            +
                                                           ["ChildWorkflowExecutionStarted", {:workflow_execution => FakeWorkflowExecution.new("1", "child_workflow_test"), :workflow_id => "child_workflow_test"}],
         | 
| 1319 | 
            +
                                                           "DecisionTaskScheduled",
         | 
| 1320 | 
            +
                                                           "DecisionTaskStarted",
         | 
| 1321 | 
            +
                                                           ["ChildWorkflowExecutionCompleted", {:workflow_execution => FakeWorkflowExecution.new("1", "child_workflow_test"), :workflow_id => "child_workflow_test"}],
         | 
| 1322 | 
            +
                                                           "DecisionTaskScheduled",
         | 
| 1323 | 
            +
                                                           "DecisionTaskTimedOut",
         | 
| 1324 | 
            +
                                                           "DecisionTaskStarted",
         | 
| 1325 | 
            +
                                                           "DecisionTaskCompleted",
         | 
| 1326 | 
            +
                                                           ["ActivityTaskScheduled", {:activity_id => "Activity1"}],
         | 
| 1327 | 
            +
                                                           "ActivityTaskStarted",
         | 
| 1328 | 
            +
                                                           ["ActivityTaskCompleted", {:scheduled_event_id => 14}],
         | 
| 1329 | 
            +
                                                           "DecisionTaskScheduled",
         | 
| 1330 | 
            +
                                                           "DecisionTaskStarted"
         | 
| 1331 | 
            +
                                                          ]))
         | 
| 1332 | 
            +
                  end
         | 
| 1333 | 
            +
                end
         | 
| 1334 | 
            +
                workflow_type_object = double("workflow_type", :name => "TimeOutWorkflow.entry_point", :start_execution => "" )
         | 
| 1335 | 
            +
             | 
| 1336 | 
            +
             | 
| 1337 | 
            +
                domain = FakeDomain.new(workflow_type_object)
         | 
| 1338 | 
            +
                swf_client = FakeServiceClient.new
         | 
| 1339 | 
            +
                $my_workflow_client  = workflow_client(swf_client, domain) {{:prefix_name => "TimeOutWorkflow", :execution_method => "entry_point", :version => "1"}}
         | 
| 1340 | 
            +
                class TimeOutActivity
         | 
| 1341 | 
            +
                  extend Activity
         | 
| 1342 | 
            +
                  activity :run_activity1
         | 
| 1343 | 
            +
                  def run_activity1; nil; end
         | 
| 1344 | 
            +
                end
         | 
| 1345 | 
            +
                class TimeOutWorkflow
         | 
| 1346 | 
            +
                  extend Workflows
         | 
| 1347 | 
            +
                  workflow(:entry_point) { {:version => "1"} }
         | 
| 1348 | 
            +
                  activity_client(:activity) { {:version => "1", :prefix_name => "TimeOutActivity" } }
         | 
| 1349 | 
            +
             | 
| 1350 | 
            +
                  def entry_point
         | 
| 1351 | 
            +
                    $my_workflow_client.start_execution() { {:task_list => "nonsense_task_list", :workflow_id => "child_workflow_test"}}
         | 
| 1352 | 
            +
                    activity_client.run_activity1
         | 
| 1353 | 
            +
                    p "yay"
         | 
| 1354 | 
            +
                  end
         | 
| 1355 | 
            +
             | 
| 1356 | 
            +
                end
         | 
| 1357 | 
            +
             | 
| 1358 | 
            +
                task_list = "TimeOutWorkflow_tasklist"
         | 
| 1359 | 
            +
                my_workflow_factory = workflow_factory(swf_client, domain) do |options|
         | 
| 1360 | 
            +
                  options.workflow_name = "TimeOutWorkflow"
         | 
| 1361 | 
            +
                  options.execution_start_to_close_timeout = 3600
         | 
| 1362 | 
            +
                  options.task_list = task_list
         | 
| 1363 | 
            +
                end
         | 
| 1364 | 
            +
             | 
| 1365 | 
            +
                worker = SynchronousWorkflowWorker.new(swf_client, domain, task_list)
         | 
| 1366 | 
            +
                worker.add_workflow_implementation(TimeOutWorkflow)
         | 
| 1367 | 
            +
                my_workflow = my_workflow_factory.get_client
         | 
| 1368 | 
            +
                workflow_execution = my_workflow.start_execution
         | 
| 1369 | 
            +
                worker.start
         | 
| 1370 | 
            +
                swf_client.trace.first[:decisions].first[:decision_type].should == "CompleteWorkflowExecution"
         | 
| 1371 | 
            +
              end
         | 
| 1372 | 
            +
             | 
| 1373 | 
            +
              it "ensures that the other timeout issue is not a problem" do
         | 
| 1374 | 
            +
                class SynchronousWorkflowTaskPoller < WorkflowTaskPoller
         | 
| 1375 | 
            +
                  def get_decision_tasks
         | 
| 1376 | 
            +
                    fake_workflow_type = FakeWorkflowType.new(nil, "OtherTimeOutWorkflow.entry_point", "1")
         | 
| 1377 | 
            +
                    TestHistoryWrapper.new(fake_workflow_type,
         | 
| 1378 | 
            +
                                           FakeEvents.new(["WorkflowExecutionStarted",
         | 
| 1379 | 
            +
                                                           "DecisionTaskScheduled",
         | 
| 1380 | 
            +
                                                           "DecisionTaskStarted",
         | 
| 1381 | 
            +
                                                           "DecisionTaskCompleted",
         | 
| 1382 | 
            +
                                                           ["ActivityTaskScheduled", {:activity_id => "Activity1"}],
         | 
| 1383 | 
            +
                                                           ["ActivityTaskScheduled", {:activity_id => "Activity2"}],
         | 
| 1384 | 
            +
                                                           "ActivityTaskStarted",
         | 
| 1385 | 
            +
                                                           "ActivityTaskStarted",
         | 
| 1386 | 
            +
                                                           ["ActivityTaskCompleted", {:scheduled_event_id => 5}],
         | 
| 1387 | 
            +
                                                           "DecisionTaskScheduled",
         | 
| 1388 | 
            +
                                                           "DecisionTaskStarted",
         | 
| 1389 | 
            +
                                                           ["ActivityTaskCompleted", {:scheduled_event_id => 6}],
         | 
| 1390 | 
            +
                                                           "DecisionTaskScheduled",
         | 
| 1391 | 
            +
                                                           "DecisionTaskTimedOut",
         | 
| 1392 | 
            +
                                                           "DecisionTaskStarted",
         | 
| 1393 | 
            +
                                                           "DecisionTaskCompleted",
         | 
| 1394 | 
            +
                                                           ["ActivityTaskScheduled", {:activity_id => "Activity3"}],
         | 
| 1395 | 
            +
                                                           "ActivityTaskStarted",
         | 
| 1396 | 
            +
                                                           ["ActivityTaskCompleted", {:scheduled_event_id => 17}],
         | 
| 1397 | 
            +
                                                           "DecisionTaskScheduled",
         | 
| 1398 | 
            +
                                                           "DecisionTaskStarted"
         | 
| 1399 | 
            +
                                                          ]))
         | 
| 1400 | 
            +
                  end
         | 
| 1401 | 
            +
                end
         | 
| 1402 | 
            +
                workflow_type_object = double("workflow_type", :name => "OtherTimeOutWorkflow.entry_point", :start_execution => "" )
         | 
| 1403 | 
            +
                domain = FakeDomain.new(workflow_type_object)
         | 
| 1404 | 
            +
                swf_client = FakeServiceClient.new
         | 
| 1405 | 
            +
                $my_workflow_client  = workflow_client(swf_client, domain) {{:prefix_name => "OtherTimeOutWorkflow", :execution_method => "entry_point", :version => "1"}}
         | 
| 1406 | 
            +
                class OtherTimeOutActivity
         | 
| 1407 | 
            +
                  extend Activity
         | 
| 1408 | 
            +
                  activity :run_activity1
         | 
| 1409 | 
            +
                  def run_activity1; nil; end
         | 
| 1410 | 
            +
                end
         | 
| 1411 | 
            +
                class OtherTimeOutWorkflow
         | 
| 1412 | 
            +
                  extend Workflows
         | 
| 1413 | 
            +
                  workflow(:entry_point) { {:version => "1"} }
         | 
| 1414 | 
            +
                  activity_client(:activity) { {:version => "1", :prefix_name => "OtherTimeOutActivity" } }
         | 
| 1415 | 
            +
             | 
| 1416 | 
            +
                  def entry_point
         | 
| 1417 | 
            +
                    futures = []
         | 
| 1418 | 
            +
                    futures << activity_client.send_async(:run_activity1)
         | 
| 1419 | 
            +
                    futures << activity_client.send_async(:run_activity1)
         | 
| 1420 | 
            +
                    wait_for_all(futures)
         | 
| 1421 | 
            +
                    activity_client.run_activity1
         | 
| 1422 | 
            +
                  end
         | 
| 1423 | 
            +
             | 
| 1424 | 
            +
                end
         | 
| 1425 | 
            +
             | 
| 1426 | 
            +
                task_list = "OtherTimeOutWorkflow_tasklist"
         | 
| 1427 | 
            +
                my_workflow_factory = workflow_factory(swf_client, domain) do |options|
         | 
| 1428 | 
            +
                  options.workflow_name = "OtherTimeOutWorkflow"
         | 
| 1429 | 
            +
                  options.execution_start_to_close_timeout = 3600
         | 
| 1430 | 
            +
                  options.task_list = task_list
         | 
| 1431 | 
            +
                end
         | 
| 1432 | 
            +
             | 
| 1433 | 
            +
                worker = SynchronousWorkflowWorker.new(swf_client, domain, task_list)
         | 
| 1434 | 
            +
                worker.add_workflow_implementation(OtherTimeOutWorkflow)
         | 
| 1435 | 
            +
                my_workflow = my_workflow_factory.get_client
         | 
| 1436 | 
            +
                workflow_execution = my_workflow.start_execution
         | 
| 1437 | 
            +
                worker.start
         | 
| 1438 | 
            +
                swf_client.trace.first[:decisions].first[:decision_type].should == "CompleteWorkflowExecution"
         | 
| 1439 | 
            +
              end
         | 
| 1278 1440 | 
             
            end
         | 
| 1279 1441 |  | 
| 1280 1442 | 
             
            describe "Misc tests" do
         | 
| @@ -1007,6 +1007,7 @@ describe "RubyFlowDecider" do | |
| 1007 1007 | 
             
                      raise "simulated error"
         | 
| 1008 1008 | 
             
                    end
         | 
| 1009 1009 | 
             
                    def run_activity2
         | 
| 1010 | 
            +
             | 
| 1010 1011 | 
             
                    end
         | 
| 1011 1012 | 
             
                  end
         | 
| 1012 1013 | 
             
                  workflow_execution = @my_workflow_client.start_execution
         | 
| @@ -1014,8 +1015,10 @@ describe "RubyFlowDecider" do | |
| 1014 1015 | 
             
                  @activity_worker.run_once
         | 
| 1015 1016 | 
             
                  @worker.run_once
         | 
| 1016 1017 | 
             
                  @worker.run_once
         | 
| 1017 | 
            -
                  workflow_execution.events.map(&:event_type) | 
| 1018 | 
            -
                   | 
| 1018 | 
            +
                  history = workflow_execution.events.map(&:event_type)
         | 
| 1019 | 
            +
                  history.last.should == "WorkflowExecutionFailed"
         | 
| 1020 | 
            +
                  # Should look something like: ["WorkflowExecutionStarted", "DecisionTaskScheduled", "DecisionTaskStarted", "DecisionTaskCompleted", "ActivityTaskScheduled", "ActivityTaskScheduled", "ActivityTaskStarted", "ActivityTaskFailed", "DecisionTaskScheduled", "DecisionTaskStarted", "DecisionTaskCompleted", "ActivityTaskCancelRequested", "ActivityTaskCanceled", "DecisionTaskScheduled", "DecisionTaskStarted", "DecisionTaskCompleted", "WorkflowExecutionFailed"]
         | 
| 1021 | 
            +
                  history.should include "ActivityTaskCancelRequested"
         | 
| 1019 1022 | 
             
                end
         | 
| 1020 1023 |  | 
| 1021 1024 | 
             
                it "makes sure that you can use the :exponential_retry key" do
         | 
| @@ -2285,7 +2288,6 @@ describe "RubyFlowDecider" do | |
| 2285 2288 | 
             
                      version "1"
         | 
| 2286 2289 | 
             
                      entry_point :entry_point
         | 
| 2287 2290 | 
             
                      def entry_point
         | 
| 2288 | 
            -
                        "yay"
         | 
| 2289 2291 | 
             
                      end
         | 
| 2290 2292 | 
             
                    end
         | 
| 2291 2293 | 
             
                    worker = WorkflowWorker.new(swf.client, domain, "timeout_test", WorkflowIDWorkflow)
         | 
| @@ -2529,7 +2531,6 @@ describe "RubyFlowDecider" do | |
| 2529 2531 | 
             
                    version "1"
         | 
| 2530 2532 | 
             
                    entry_point :entry_point
         | 
| 2531 2533 | 
             
                    def entry_point
         | 
| 2532 | 
            -
                      "yay"
         | 
| 2533 2534 | 
             
                    end
         | 
| 2534 2535 | 
             
                  end
         | 
| 2535 2536 | 
             
                  worker = WorkflowWorker.new(@swf.client, @domain, "client_test_inheritance", OptionsWorkflow)
         | 
| @@ -2552,7 +2553,6 @@ describe "RubyFlowDecider" do | |
| 2552 2553 | 
             
                    version "1"
         | 
| 2553 2554 | 
             
                    entry_point :entry_point
         | 
| 2554 2555 | 
             
                    def entry_point
         | 
| 2555 | 
            -
                      "yay"
         | 
| 2556 2556 | 
             
                    end
         | 
| 2557 2557 | 
             
                  end
         | 
| 2558 2558 | 
             
                  worker = WorkflowWorker.new(@swf.client, @domain, "client_test_inheritance", OptionsWorkflow)
         | 
| @@ -2742,7 +2742,7 @@ describe "RubyFlowDecider" do | |
| 2742 2742 | 
             
                class WorkflowWorkflow
         | 
| 2743 2743 | 
             
                  extend Workflows
         | 
| 2744 2744 | 
             
                  workflow(:entry_point) { {:version => "1", :execution_start_to_close_timeout => 3600, :task_list => "test"} }
         | 
| 2745 | 
            -
                  def entry_point;  | 
| 2745 | 
            +
                  def entry_point; ;end
         | 
| 2746 2746 | 
             
                end
         | 
| 2747 2747 | 
             
                worker = WorkflowWorker.new(@swf.client, @domain, "test", WorkflowWorkflow)
         | 
| 2748 2748 | 
             
                worker.register
         | 
| @@ -2755,7 +2755,7 @@ describe "RubyFlowDecider" do | |
| 2755 2755 | 
             
                class WorkflowWorkflow
         | 
| 2756 2756 | 
             
                  extend Workflows
         | 
| 2757 2757 | 
             
                  workflow(:entry_point) { {:version => "1", :execution_start_to_close_timeout => 3600, :task_list => "test"} }
         | 
| 2758 | 
            -
                  def entry_point;  | 
| 2758 | 
            +
                  def entry_point; ;end
         | 
| 2759 2759 | 
             
                end
         | 
| 2760 2760 | 
             
                worker = WorkflowWorker.new(@swf.client, @domain, "Foobarbaz", WorkflowWorkflow)
         | 
| 2761 2761 | 
             
                worker.register
         | 
| @@ -2783,7 +2783,7 @@ describe "RubyFlowDecider" do | |
| 2783 2783 | 
             
                  extend Workflows
         | 
| 2784 2784 | 
             
                  workflow(:entry_point) { {:version => "1", :execution_start_to_close_timeout => 3600, :task_list => "test"} }
         | 
| 2785 2785 |  | 
| 2786 | 
            -
                  def entry_point;  | 
| 2786 | 
            +
                  def entry_point; ;end
         | 
| 2787 2787 | 
             
                end
         | 
| 2788 2788 | 
             
                worker = WorkflowWorker.new(@swf.client, @domain, "Foobarbaz", WorkflowWorkflow)
         | 
| 2789 2789 | 
             
                worker.register
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: aws-flow
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0. | 
| 4 | 
            +
              version: 1.0.8
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 12 | 
            +
            date: 2014-01-03 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: aws-sdk
         |