Project

General

Profile

Bug #286 ยป openuritest.rb

Anonymous, 07/18/2008 09:26 AM

 
require 'net/http'
require 'uri'
require 'open-uri'

# can use 'lsof -p PID | wc -l' to watch file handles leak
# sleep is included to help track open file handles as script processes
class Leaker
def initialize
while(true)
sleep(10)
use_net_http("http://www.amazon.com/gp/offer-listing/B000OHBBS4/") # 404, no leak
sleep(10)
use_open_uri("http://www.amazon.com/gp/offer-listing/B000OHBBS4/") # 404, leaks
sleep(10)
use_open_uri("http://www.example.com/invalid/") # 404, no leak
sleep(10)
use_open_uri("http://www.amazon.com/gp/offer-listing/0974514055/") # 200, no leak
end
end
def use_net_http(uri)
url = URI.parse(uri)
Net::HTTP.version_1_1
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) { |http|
http.request(req)
}
if res.kind_of?(Net::HTTPSuccess)
puts "Retrieved response at #{url}"
else
puts "Failure retrieving response at #{url}: #{res.code}"
end
rescue => ex
puts "Error with Net::HTTP retrieving response at #{url}: #{ex}"
end
def use_open_uri(url)
open(url, "User-Agent" => "Open-uri for Ruby(Leaky Lib)") do |handle|
html = handle.read
puts "Retrieved response at #{url}"
end
rescue => ex
puts "Error with open-uri retrieving response at #{url}: #{ex}"
end
end

Leaker.new
    (1-1/1)