Permalink
Browse files

Prevent the benchmark module from blowing up if a non-HTTP/1.1 reques…

…t is processed

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2039 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent dca4d4e commit 211617191ed9e6bc9da1cee1bdd134c9b8c3cdfd @jamis jamis committed Aug 23, 2005
View
2 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]
View
2 actionpack/lib/action_controller/benchmarking.rb
@@ -42,7 +42,7 @@ def perform_action_with_benchmark
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
View
36 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

0 comments on commit 2116171

Please sign in to comment.