2017-05-12 15:16:55 -04:00
|
|
|
require_relative "helper"
|
2011-12-07 16:42:53 -05:00
|
|
|
|
2016-11-22 10:05:49 -05:00
|
|
|
require "puma/configuration"
|
2011-12-07 16:42:53 -05:00
|
|
|
|
2016-11-22 10:05:49 -05:00
|
|
|
class TestConfigFile < Minitest::Test
|
2017-10-16 18:22:14 -04:00
|
|
|
def setup
|
|
|
|
FileUtils.mkpath("config/puma")
|
|
|
|
File.write("config/puma/fake-env.rb", "")
|
|
|
|
end
|
|
|
|
|
2015-04-29 14:51:25 -04:00
|
|
|
def test_app_from_rackup
|
2016-02-06 22:00:29 -05:00
|
|
|
conf = Puma::Configuration.new do |c|
|
2017-04-11 17:08:18 -04:00
|
|
|
c.rackup "test/rackup/hello-bind.ru"
|
2016-02-06 22:00:29 -05:00
|
|
|
end
|
2015-04-29 14:51:25 -04:00
|
|
|
conf.load
|
|
|
|
|
|
|
|
conf.app
|
|
|
|
|
|
|
|
assert_equal ["tcp://127.0.0.1:9292"], conf.options[:binds]
|
|
|
|
end
|
|
|
|
|
2011-12-07 16:42:53 -05:00
|
|
|
def test_app_from_app_DSL
|
2016-02-06 22:00:29 -05:00
|
|
|
conf = Puma::Configuration.new do |c|
|
|
|
|
c.load "test/config/app.rb"
|
|
|
|
end
|
2011-12-07 16:42:53 -05:00
|
|
|
conf.load
|
|
|
|
|
|
|
|
app = conf.app
|
|
|
|
|
2013-02-06 17:44:51 -05:00
|
|
|
assert_equal [200, {}, ["embedded app"]], app.call({})
|
2011-12-07 16:42:53 -05:00
|
|
|
end
|
2014-02-17 12:07:17 -05:00
|
|
|
|
2015-02-16 18:44:43 -05:00
|
|
|
def test_double_bind_port
|
2015-07-29 10:16:24 -04:00
|
|
|
port = (rand(10_000) + 30_000).to_s
|
2015-02-16 18:44:43 -05:00
|
|
|
with_env("PORT" => port) do
|
2017-03-03 16:11:59 -05:00
|
|
|
conf = Puma::Configuration.new do |user_config, file_config, default_config|
|
|
|
|
user_config.bind "tcp://#{Puma::Configuration::DefaultTCPHost}:#{port}"
|
|
|
|
file_config.load "test/config/app.rb"
|
2016-02-06 22:00:29 -05:00
|
|
|
end
|
|
|
|
|
2015-02-16 18:44:43 -05:00
|
|
|
conf.load
|
|
|
|
assert_equal ["tcp://0.0.0.0:#{port}"], conf.options[:binds]
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-03-19 17:05:15 -04:00
|
|
|
def test_lowlevel_error_handler_DSL
|
2016-02-06 22:00:29 -05:00
|
|
|
conf = Puma::Configuration.new do |c|
|
|
|
|
c.load "test/config/app.rb"
|
|
|
|
end
|
2014-02-17 12:07:17 -05:00
|
|
|
conf.load
|
|
|
|
|
|
|
|
app = conf.options[:lowlevel_error_handler]
|
|
|
|
|
|
|
|
assert_equal [200, {}, ["error page"]], app.call({})
|
|
|
|
end
|
2015-02-16 18:44:43 -05:00
|
|
|
|
2016-03-26 10:48:36 -04:00
|
|
|
def test_allow_users_to_override_default_options
|
|
|
|
conf = Puma::Configuration.new(restart_cmd: 'bin/rails server')
|
|
|
|
|
|
|
|
assert_equal 'bin/rails server', conf.options[:restart_cmd]
|
|
|
|
end
|
|
|
|
|
2016-11-20 14:10:34 -05:00
|
|
|
def test_overwrite_options
|
|
|
|
conf = Puma::Configuration.new do |c|
|
|
|
|
c.workers 3
|
|
|
|
end
|
|
|
|
conf.load
|
|
|
|
|
|
|
|
assert_equal conf.options[:workers], 3
|
|
|
|
conf.options[:workers] += 1
|
|
|
|
assert_equal conf.options[:workers], 4
|
|
|
|
end
|
|
|
|
|
2017-03-06 13:28:44 -05:00
|
|
|
def test_explicit_config_files
|
|
|
|
conf = Puma::Configuration.new(config_files: ['test/config/settings.rb']) do |c|
|
|
|
|
end
|
|
|
|
conf.load
|
|
|
|
assert_match(/:3000$/, conf.options[:binds].first)
|
|
|
|
end
|
|
|
|
|
2017-01-30 23:29:19 -05:00
|
|
|
def test_parameters_overwrite_files
|
|
|
|
conf = Puma::Configuration.new(config_files: ['test/config/settings.rb']) do |c|
|
|
|
|
c.port 3030
|
|
|
|
end
|
|
|
|
conf.load
|
|
|
|
|
|
|
|
assert_match(/:3030$/, conf.options[:binds].first)
|
|
|
|
assert_equal 3, conf.options[:min_threads]
|
|
|
|
assert_equal 5, conf.options[:max_threads]
|
|
|
|
end
|
|
|
|
|
2017-10-16 18:22:14 -04:00
|
|
|
def test_config_files_default
|
|
|
|
conf = Puma::Configuration.new do
|
|
|
|
end
|
|
|
|
|
|
|
|
assert_equal [nil], conf.config_files
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_config_files_with_dash
|
|
|
|
conf = Puma::Configuration.new(config_files: ['-']) do
|
|
|
|
end
|
|
|
|
|
|
|
|
assert_equal [], conf.config_files
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_config_files_with_existing_path
|
|
|
|
conf = Puma::Configuration.new(config_files: ['test/config/settings.rb']) do
|
|
|
|
end
|
|
|
|
|
|
|
|
assert_equal ['test/config/settings.rb'], conf.config_files
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_config_files_with_non_existing_path
|
|
|
|
conf = Puma::Configuration.new(config_files: ['test/config/typo/settings.rb']) do
|
|
|
|
end
|
|
|
|
|
|
|
|
assert_equal ['test/config/typo/settings.rb'], conf.config_files
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_config_files_with_rack_env
|
|
|
|
with_env('RACK_ENV' => 'fake-env') do
|
|
|
|
conf = Puma::Configuration.new do
|
|
|
|
end
|
|
|
|
|
|
|
|
assert_equal ['config/puma/fake-env.rb'], conf.config_files
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_config_files_with_specified_environment
|
|
|
|
conf = Puma::Configuration.new do
|
|
|
|
end
|
|
|
|
|
|
|
|
conf.options[:environment] = 'fake-env'
|
|
|
|
|
|
|
|
assert_equal ['config/puma/fake-env.rb'], conf.config_files
|
|
|
|
end
|
|
|
|
|
2018-03-19 17:05:15 -04:00
|
|
|
def test_config_files_with_integer_convert
|
|
|
|
conf = Puma::Configuration.new(config_files: ['test/config/with_integer_convert.rb']) do
|
|
|
|
end
|
|
|
|
conf.load
|
|
|
|
|
|
|
|
assert_equal 6, conf.options[:persistent_timeout]
|
|
|
|
assert_equal 3, conf.options[:first_data_timeout]
|
|
|
|
assert_equal 2, conf.options[:workers]
|
|
|
|
assert_equal 4, conf.options[:min_threads]
|
|
|
|
assert_equal 8, conf.options[:max_threads]
|
|
|
|
assert_equal 90, conf.options[:worker_timeout]
|
|
|
|
assert_equal 120, conf.options[:worker_boot_timeout]
|
|
|
|
assert_equal 150, conf.options[:worker_shutdown_timeout]
|
|
|
|
end
|
|
|
|
|
2017-10-16 18:22:14 -04:00
|
|
|
def teardown
|
|
|
|
FileUtils.rm_r("config/puma")
|
|
|
|
end
|
|
|
|
|
2015-02-16 18:44:43 -05:00
|
|
|
private
|
|
|
|
|
|
|
|
def with_env(env = {})
|
|
|
|
original_env = {}
|
|
|
|
env.each do |k, v|
|
|
|
|
original_env[k] = ENV[k]
|
|
|
|
ENV[k] = v
|
|
|
|
end
|
|
|
|
yield
|
|
|
|
ensure
|
|
|
|
original_env.each do |k, v|
|
|
|
|
ENV[k] = v
|
|
|
|
end
|
|
|
|
end
|
2011-12-07 16:42:53 -05:00
|
|
|
end
|