From 211617191ed9e6bc9da1cee1bdd134c9b8c3cdfd Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Tue, 23 Aug 2005 09:43:36 +0000 Subject: Prevent the benchmark module from blowing up if a non-HTTP/1.1 request is processed git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2039 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_controller/benchmarking.rb | 2 +- actionpack/test/controller/benchmark_test.rb | 36 ++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 actionpack/test/controller/benchmark_test.rb diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 165417969b..62a6702ee3 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Prevent the benchmark module from blowing up if a non-HTTP/1.1 request is processed + * Added :use_short_month option to select_month helper to show month names as abbreviations * Make link_to escape the javascript in the confirm option #1964 [nicolas.pouillard@gmail.com] diff --git a/actionpack/lib/action_controller/benchmarking.rb b/actionpack/lib/action_controller/benchmarking.rb index 386a291196..52820c6908 100644 --- a/actionpack/lib/action_controller/benchmarking.rb +++ b/actionpack/lib/action_controller/benchmarking.rb @@ -42,7 +42,7 @@ module ActionController #:nodoc: log_message = "Completed in #{sprintf("%.5f", runtime)} (#{(1 / runtime).floor} reqs/sec)" log_message << rendering_runtime(runtime) if @rendering_runtime log_message << active_record_runtime(runtime) if Object.const_defined?("ActiveRecord") && ActiveRecord::Base.connected? - log_message << " [#{complete_request_uri}]" + log_message << " [#{complete_request_uri rescue "unknown"}]" logger.info(log_message) end end diff --git a/actionpack/test/controller/benchmark_test.rb b/actionpack/test/controller/benchmark_test.rb new file mode 100644 index 0000000000..7e19376101 --- /dev/null +++ b/actionpack/test/controller/benchmark_test.rb @@ -0,0 +1,36 @@ +require File.dirname(__FILE__) + '/../abstract_unit' +require 'test/unit' + +# Provide a static version of the Controllers module instead of the auto-loading version. +# We don't want these tests to fail when dependencies are to blame. +module Controllers + class BenchmarkedController < ActionController::Base + def public_action + render :nothing => true + end + + def rescue_action(e) + raise e + end + end +end + +class BenchmarkTest < Test::Unit::TestCase + class MockLogger + def method_missing(*args) + end + end + + def setup + @controller = Controllers::BenchmarkedController.new + # benchmark doesn't do anything unless a logger is set + @controller.logger = MockLogger.new + @request, @response = ActionController::TestRequest.new, ActionController::TestResponse.new + @request.host = "test.actioncontroller.i" + end + + def test_with_http_1_0_request + @request.host = nil + assert_nothing_raised { get :public_action } + end +end -- cgit v1.2.3