Sha256: b3361aa47aee8bc4307bedc0851a38f14b7ea3413cbd89413ebb8f13dc23cf78

Contents?: true

Size: 867 Bytes

Versions: 4

Compression:

Stored size: 867 Bytes

Contents

Given /^a client "([^"]*)"$/ do |client|
  @clients = {}
end

When /^client "([^"]*)" makes a "([^"]*)" seconds? request$/ do |client,speed|
  @responses = {}
  filename = "test_objects/#{speed}.rb"
  File.delete filename if File.exists? filename
  File.open(filename, 'w') { |f| f.write "sleep(#{speed}); p 'complete: #{speed}s'\n" }

  @clients[client] = Thread.new do 
    result = get "/#{speed}.rb"
    @responses[client] = result.body
  end
end

Then /^client "([^"]*)" receives a response before client "([^"]*)"$/ do |c1,c2|
  @success = false
  response_listener = Thread.new do
    while !@success do
      if @responses[c1] =~ /complete/ && !@responses[c2]
        @success = true
        break
      elsif @responses[c2] =~ /complete/
        @success = false
        break
      end
    end
  end

  response_listener.join

  @success.should be_true
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
yarn-0.1.0 features/step_definitions/concurrency_steps.rb
yarn-0.0.9 features/step_definitions/concurrency_steps.rb
yarn-0.0.2 features/step_definitions/concurrency_steps.rb
yarn-0.0.1 features/step_definitions/concurrency_steps.rb