Skip to content

Instantly share code, notes, and snippets.

@djmaze
Created December 23, 2013 19:06
Show Gist options
  • Save djmaze/8102717 to your computer and use it in GitHub Desktop.
Save djmaze/8102717 to your computer and use it in GitHub Desktop.
Tests for Net::HTTP issues with SSL in Ruby 1.9/2.0 and JRuby
#/usr/bin/env ruby
RUBY_VERSIONS = %w[1.9.3-p327-perf 2.0.0-p247 jruby-1.7.6]
RUBY_MODES = %w[1.9 2.0]
URL = ARGV[0] || 'https://github.com/'
def run(*additional_params)
puts "[example 1]"
run_ruby_with_code(<<-EOC, additional_params)
require 'net/http'
response = Net::HTTP.get_response(URI.parse('#{URL}'))
puts "\#{response.code} - \#{response.body.size}"
EOC
puts "[example 2]"
run_ruby_with_code(<<-EOC, additional_params)
require "net/https"
uri = URI.parse('#{URL}')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
puts "\#{response.code} - \#{response.body.size}"
EOC
end
def run_ruby_with_code(code, additional_params)
system('rbenv', 'exec', 'ruby', *additional_params, '-e', code)
end
RUBY_VERSIONS.each do |version|
puts "\n### #{version} ###"
ENV['RBENV_VERSION'] = version
if version =~ /^jruby\-/
RUBY_MODES.each do |language_version|
puts "*** #{language_version} mode ***"
run "--#{language_version}"
end
else
run
end
end
$ ruby test.rb https://github.com/
### 1.9.3-p327-perf ###
[example 1]
/home/martin/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/net/protocol.rb:141:in `read_nonblock': end of file reached (EOFError)
from /home/martin/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/net/protocol.rb:141:in `rbuf_fill'
from /home/martin/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
from /home/martin/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
from /home/martin/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line'
from /home/martin/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/net/http.rb:2551:in `read_new'
from /home/martin/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/net/http.rb:1319:in `block in transport_request'
from /home/martin/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/net/http.rb:1316:in `catch'
from /home/martin/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/net/http.rb:1316:in `transport_request'
from /home/martin/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/net/http.rb:1293:in `request'
from /home/martin/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/net/http.rb:1195:in `request_get'
from /home/martin/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/net/http.rb:455:in `block in get_response'
from /home/martin/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/net/http.rb:745:in `start'
from /home/martin/.rbenv/versions/1.9.3-p327-perf/lib/ruby/1.9.1/net/http.rb:454:in `get_response'
from -e:2:in `<main>'
[example 2]
200 - 12578
### 2.0.0-p247 ###
[example 1]
200 - 12578
[example 2]
200 - 12578
### jruby-1.7.6 ###
*** 1.9 mode ***
[example 1]
EOFError: End of file reached
read_nonblock at org/jruby/RubyIO.java:2818
rbuf_fill at /home/martin/.rbenv/versions/jruby-1.7.6/lib/ruby/1.9/net/protocol.rb:141
readuntil at /home/martin/.rbenv/versions/jruby-1.7.6/lib/ruby/1.9/net/protocol.rb:122
readline at /home/martin/.rbenv/versions/jruby-1.7.6/lib/ruby/1.9/net/protocol.rb:132
read_status_line at /home/martin/.rbenv/versions/jruby-1.7.6/lib/ruby/1.9/net/http.rb:2570
read_new at /home/martin/.rbenv/versions/jruby-1.7.6/lib/ruby/1.9/net/http.rb:2559
transport_request at /home/martin/.rbenv/versions/jruby-1.7.6/lib/ruby/1.9/net/http.rb:1327
catch at org/jruby/RubyKernel.java:1282
transport_request at /home/martin/.rbenv/versions/jruby-1.7.6/lib/ruby/1.9/net/http.rb:1324
request at /home/martin/.rbenv/versions/jruby-1.7.6/lib/ruby/1.9/net/http.rb:1301
request_get at /home/martin/.rbenv/versions/jruby-1.7.6/lib/ruby/1.9/net/http.rb:1203
get_response at /home/martin/.rbenv/versions/jruby-1.7.6/lib/ruby/1.9/net/http.rb:455
start at /home/martin/.rbenv/versions/jruby-1.7.6/lib/ruby/1.9/net/http.rb:745
get_response at /home/martin/.rbenv/versions/jruby-1.7.6/lib/ruby/1.9/net/http.rb:454
(root) at -e:2
[example 2]
200 - 12578
*** 2.0 mode ***
[example 1]
200 - 0
[example 2]
200 - 0

$ ruby test.rb https://rubygems.org/

### 1.9.3-p327-perf ### [example 1] 400 - 264 [example 2] 200 - 9189

### 2.0.0-p247 ### [example 1] 200 - 9189 [example 2] 200 - 9189

### jruby-1.7.6 ###

1.9 mode ***

[example 1] 400 - 264 [example 2] 200 - 9189

2.0 mode ***

[example 1] 200 - 0 [example 2] 200 - 0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment