test/unit/daemon_data_tests.rb in qs-0.5.0 vs test/unit/daemon_data_tests.rb in qs-0.6.0
- old
+ new
@@ -7,77 +7,93 @@
class Qs::DaemonData
class UnitTests < Assert::Context
desc "Qs::DaemonData"
setup do
- @name = Factory.string
- @process_label = Factory.string
- @pid_file = Factory.file_path
- @min_workers = Factory.integer
- @max_workers = Factory.integer
- @start_procs = Factory.integer(3).times.map{ proc{} }
- @shutdown_procs = Factory.integer(3).times.map{ proc{} }
- @sleep_procs = Factory.integer(3).times.map{ proc{} }
- @wakeup_procs = Factory.integer(3).times.map{ proc{} }
- @logger = Factory.string
- @verbose_logging = Factory.boolean
- @shutdown_timeout = Factory.integer
- @error_procs = [ proc{ Factory.string } ]
- @queue_redis_keys = Factory.integer(3).times.map{ Factory.string }
+ @current_env_process_label = ENV['QS_PROCESS_LABEL']
+ ENV['QS_PROCESS_LABEL'] = Factory.string
+ @current_env_debug = ENV['QS_DEBUG']
+ ENV['QS_DEBUG'] = Factory.string
+
@routes = (0..Factory.integer(3)).map do
Qs::Route.new(Factory.string, TestHandler.to_s).tap(&:validate!)
end
- @daemon_data = Qs::DaemonData.new({
- :name => @name,
- :process_label => @process_label,
- :pid_file => @pid_file,
- :min_workers => @min_workers,
- :max_workers => @max_workers,
- :worker_start_procs => @start_procs,
- :worker_shutdown_procs => @shutdown_procs,
- :worker_sleep_procs => @sleep_procs,
- :worker_wakeup_procs => @wakeup_procs,
- :logger => @logger,
- :verbose_logging => @verbose_logging,
- :shutdown_timeout => @shutdown_timeout,
- :error_procs => @error_procs,
- :queue_redis_keys => @queue_redis_keys,
- :routes => @routes
- })
+ @config_hash = {
+ :name => Factory.string,
+ :pid_file => Factory.file_path,
+ :worker_class => Class.new,
+ :worker_params => { Factory.string => Factory.string },
+ :num_workers => Factory.integer,
+ :logger => Factory.string,
+ :verbose_logging => Factory.boolean,
+ :shutdown_timeout => Factory.integer,
+ :error_procs => [ proc{ Factory.string } ],
+ :queue_redis_keys => Factory.integer(3).times.map{ Factory.string },
+ :routes => @routes
+ }
+ @daemon_data = Qs::DaemonData.new(@config_hash)
end
+ teardown do
+ ENV['QS_DEBUG'] = @current_env_debug
+ ENV['QS_PROCESS_LABEL'] = @current_env_process_label
+ end
subject{ @daemon_data }
- should have_readers :name, :process_label
- should have_readers :pid_file
- should have_readers :min_workers, :max_workers
- should have_readers :worker_start_procs, :worker_shutdown_procs
- should have_readers :worker_sleep_procs, :worker_wakeup_procs
- should have_readers :logger, :verbose_logging
+ should have_readers :name, :process_label, :pid_file
+ should have_readers :worker_class, :worker_params, :num_workers
+ should have_readers :debug, :logger, :dwp_logger, :verbose_logging
should have_readers :shutdown_timeout
- should have_readers :error_procs
- should have_readers :queue_redis_keys, :routes
+ should have_readers :error_procs, :queue_redis_keys, :routes
should have_imeths :route_for
should "know its attributes" do
- assert_equal @name, subject.name
- assert_equal @process_label, subject.process_label
- assert_equal @pid_file, subject.pid_file
- assert_equal @min_workers, subject.min_workers
- assert_equal @max_workers, subject.max_workers
- assert_equal @start_procs, subject.worker_start_procs
- assert_equal @shutdown_procs, subject.worker_shutdown_procs
- assert_equal @sleep_procs, subject.worker_sleep_procs
- assert_equal @wakeup_procs, subject.worker_wakeup_procs
- assert_equal @logger, subject.logger
- assert_equal @verbose_logging, subject.verbose_logging
- assert_equal @shutdown_timeout, subject.shutdown_timeout
- assert_equal @error_procs, subject.error_procs
- assert_equal @queue_redis_keys, subject.queue_redis_keys
+ h = @config_hash
+ assert_equal h[:name], subject.name
+ assert_equal h[:pid_file], subject.pid_file
+ assert_equal h[:worker_class], subject.worker_class
+ assert_equal h[:worker_params], subject.worker_params
+ assert_equal h[:num_workers], subject.num_workers
+ assert_equal h[:logger], subject.logger
+ assert_equal h[:verbose_logging], subject.verbose_logging
+ assert_equal h[:shutdown_timeout], subject.shutdown_timeout
+ assert_equal h[:error_procs], subject.error_procs
+ assert_equal h[:queue_redis_keys], subject.queue_redis_keys
end
+ should "use process label env var if set" do
+ ENV['QS_PROCESS_LABEL'] = Factory.string
+ daemon_data = Qs::DaemonData.new(@config_hash)
+ assert_equal ENV['QS_PROCESS_LABEL'], daemon_data.process_label
+
+ ENV['QS_PROCESS_LABEL'] = ""
+ daemon_data = Qs::DaemonData.new(@config_hash)
+ assert_equal @config_hash[:name], daemon_data.process_label
+
+ ENV.delete('QS_PROCESS_LABEL')
+ daemon_data = Qs::DaemonData.new(@config_hash)
+ assert_equal @config_hash[:name], daemon_data.process_label
+ end
+
+ should "use debug env var if set" do
+ ENV['QS_DEBUG'] = Factory.string
+ daemon_data = Qs::DaemonData.new(@config_hash)
+ assert_true daemon_data.debug
+ assert_equal @config_hash[:logger], daemon_data.dwp_logger
+
+ ENV['QS_DEBUG'] = ""
+ daemon_data = Qs::DaemonData.new(@config_hash)
+ assert_false daemon_data.debug
+ assert_nil daemon_data.dwp_logger
+
+ ENV.delete('QS_DEBUG')
+ daemon_data = Qs::DaemonData.new(@config_hash)
+ assert_false daemon_data.debug
+ assert_nil daemon_data.dwp_logger
+ end
+
should "build a routes lookup hash" do
expected = @routes.inject({}){ |h, r| h.merge(r.id => r) }
assert_equal expected, subject.routes
end
@@ -95,11 +111,12 @@
should "default its attributes when they aren't provided" do
daemon_data = Qs::DaemonData.new
assert_nil daemon_data.name
assert_nil daemon_data.pid_file
- assert_nil daemon_data.min_workers
- assert_nil daemon_data.max_workers
+ assert_nil daemon_data.worker_class
+ assert_equal({}, daemon_data.worker_params)
+ assert_nil daemon_data.num_workers
assert_nil daemon_data.logger
assert_false daemon_data.verbose_logging
assert_nil daemon_data.shutdown_timeout
assert_equal [], daemon_data.error_procs
assert_equal [], daemon_data.queue_redis_keys