1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
# -*- encoding: utf-8 -*-
begin
require 'simplecov'
require 'simplecov-rcov'
SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
SimpleCov.start
rescue LoadError
end
require 'test/unit'
require 'httpclient'
require 'webrick'
require 'webrick/httpproxy.rb'
require 'logger'
require 'stringio'
require 'cgi'
require 'webrick/httputils'
module Helper
Port = 17171
ProxyPort = 17172
def serverport
@serverport
end
def proxyport
@proxyport
end
def serverurl
"http://localhost:#{serverport}/"
end
def proxyurl
"http://localhost:#{proxyport}/"
end
def setup
@logger = Logger.new(STDERR)
@logger.level = Logger::Severity::FATAL
@proxyio = StringIO.new
@proxylogger = Logger.new(@proxyio)
@proxylogger.level = Logger::Severity::DEBUG
@server = @proxyserver = @client = nil
@server_thread = @proxyserver_thread = nil
@serverport = Port
@proxyport = ProxyPort
end
def teardown
teardown_client if @client
teardown_proxyserver if @proxyserver
teardown_server if @server
end
def setup_client
@client = HTTPClient.new
end
def escape_noproxy
backup = HTTPClient::NO_PROXY_HOSTS.dup
HTTPClient::NO_PROXY_HOSTS.clear
yield
ensure
HTTPClient::NO_PROXY_HOSTS.replace(backup)
end
def setup_proxyserver
@proxyserver = WEBrick::HTTPProxyServer.new(
:BindAddress => "localhost",
:Logger => @proxylogger,
:Port => 50001,
:AccessLog => []
)
@proxyport = @proxyserver.config[:Port]
@proxyserver_thread = start_server_thread(@proxyserver)
end
def teardown_client
@client.reset_all
end
def teardown_server
@server.shutdown
#@server_thread.kill
end
def teardown_proxyserver
@proxyserver.shutdown
#@proxyserver_thread.kill
end
def start_server_thread(server)
t = Thread.new {
Thread.current.abort_on_exception = true
server.start
}
while server.status != :Running
Thread.pass
unless t.alive?
t.join
raise
end
end
t
end
def params(str)
HTTP::Message.parse(str).inject({}) { |r, (k, v)| r[k] = v.first; r }
end
def silent
begin
back, $VERBOSE = $VERBOSE, nil
yield
ensure
$VERBOSE = back
end
end
def escape_env
env = {}
env.update(ENV)
yield
ensure
ENV.clear
ENV.update(env)
end
end
|