Sha256: fccadc71e4cf9245ef4ec81a7f3cd13d23d75480f845ff0f1cd31d5d77c802ba
Contents?: true
Size: 1.44 KB
Versions: 2
Compression:
Stored size: 1.44 KB
Contents
require './lib/dagger' require 'rspec/mocks' require 'rspec/expectations' describe 'Persistent mode' do it 'works' do fake_client = double('Client') expect(Dagger::Client).to receive(:new).once.and_return(fake_client) expect(fake_client).to receive(:open).once #.and_return(fake_resp) expect(fake_client).to receive(:close).once #.and_return(fake_resp) obj = Dagger.open('https://www.google.com') do get('/search?q=dagger+http+client') get('google.com/search?q=thank+you+ruby') end end end describe 'using threads' do def get(url) @http.get(url) end def connect(host) raise if @http @http = Dagger.open(host) end def disconnect raise if @http.nil? @http.close @http = nil end it 'works' do thread_count = 10 urls_count = 100 host = 'https://postman-echo.com' urls = urls_count.times.map { |i| "/get?page/#{i}" } result = [] mutex = Mutex.new thread_count.times.map do Thread.new(urls, result) do |urls, result| # mutex.synchronize { Dagger.open(host) } http = Dagger.open(host) while url = mutex.synchronize { urls.pop } puts "Fetching #{url}" resp = http.get(url) mutex.synchronize do result.push(resp.code) end end # mutex.synchronize { http.close } http.close end end.each(&:join) expect(result.count).to eq(urls_count) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dagger-1.9.0 | spec/persistent_spec.rb |
dagger-1.8.0 | spec/persistent_spec.rb |