Tag: concurrency

通过不同的浏览器使用watir-webdriver进行多个并发浏览器测试

所以我在这里的网站上工作,我想一次运行多个浏览器测试。 我的意思是它应该同时执行我的冒烟测试,即firefox和chrome,并报告每个浏览器的结果。 我目前只使用rpsec和watir-webdriver进行测试,但希望自动化其他2个浏览器。 那里有没有现有的gem(我找不到任何gem),如果不是最好的方法来解决这个问题?

使用Thin和Sinatra异步迭代请求的响应

如果你在Sinatra中的响应返回一个’eachable’对象,那么Sinatra的事件循环将“每个”你的结果并以流式方式产生结果作为HTTP响应。 但是,如果有对Sinatra的并发请求,它将在处理另一个请求之前迭代一个响应的所有元素。 如果我们对某些数据库查询的结果有一个游标,那意味着我们必须等待所有数据在处理并发查询之前可用。 我看过async-sinatra的gem和http://macournoyer.com/blog/2009/06/04/pusher-and-async-with-thin/ ,认为这些可以解决我的问题,但我试过了出这个例子: require ‘sinatra/async’ class AsyncTest < Sinatra::Base register Sinatra::Async aget '/' do body "hello async" end aget '/delay/:n' do |n| EM.add_timer(n.to_i) { body { "delayed for #{n} seconds" } } end end 并且/delay/5请求并不像我期望的那样同时工作,即我同时发出3个请求,Chrome的调试器将响应时间记录为大约5,10和15秒。 我错过了一些设置还是有另一种方法告诉Sinatra / Thin以并发方式处理请求? 更新:这是另一个扳手(或可能清除):运行curl -i http://localhost:3000/delay/5同时具有正确的行为(每个请求在5秒内返回2个)。 运行ab -c 10 -n 50 http://locahost:3000/delay/5 (Apache基准实用程序)也会在总时间(~25秒)内返回合理的值。 Firefox表现出与Chrome相同的行为。 什么是与命令行实用程序不同的浏览器?