mperham--sidekiq/test/sidekiqmon_test.rb

107 lines
2.8 KiB
Ruby

# frozen_string_literal: true
require_relative "helper"
require "sidekiq/monitor"
def capture_stdout
$stdout = StringIO.new
yield
$stdout.string.chomp
ensure
$stdout = STDOUT
end
def output(section = "all")
capture_stdout do
Sidekiq::Monitor::Status.new.display(section)
end
end
describe Sidekiq::Monitor do
before do
@config = reset!
end
describe "status" do
describe "version" do
it "displays the current Sidekiq version" do
assert_includes output, "Sidekiq #{Sidekiq::VERSION}"
end
it "displays the current time" do
Time.stub(:now, Time.at(0)) do
assert_includes output, Time.at(0).utc.to_s
end
end
end
describe "overview" do
it "has a heading" do
assert_includes output, "---- Overview ----"
end
it "displays the correct output" do
mock_stats = OpenStruct.new(
processed: 420710,
failed: 12,
workers_size: 34,
enqueued: 56,
retry_size: 78,
scheduled_size: 90,
dead_size: 666
)
Sidekiq::Stats.stub(:new, mock_stats) do
assert_includes output, "Processed: 420,710"
assert_includes output, "Failed: 12"
assert_includes output, "Busy: 34"
assert_includes output, "Enqueued: 56"
assert_includes output, "Retries: 78"
assert_includes output, "Scheduled: 90"
assert_includes output, "Dead: 666"
end
end
end
describe "processes" do
it "has a heading" do
assert_includes output, "---- Processes (0) ----"
end
it "displays the correct output" do
mock_processes = [{
"identity" => "foobar",
"tag" => "baz",
"started_at" => Time.now,
"concurrency" => 5,
"busy" => 2,
"queues" => %w[low medium high]
}]
Sidekiq::ProcessSet.stub(:new, mock_processes) do
assert_includes output, "foobar [baz]"
assert_includes output, "Started: #{mock_processes.first["started_at"]} (just now)"
assert_includes output, "Threads: 5 (2 busy)"
assert_includes output, "Queues: high, low, medium"
end
end
end
describe "queues" do
it "has a heading" do
assert_includes output, "---- Queues (0) ----"
end
it "displays the correct output" do
mock_queues = [
OpenStruct.new(name: "foobar", size: 12, latency: 12.3456),
OpenStruct.new(name: "a_long_queue_name", size: 234, latency: 567.89999)
]
Sidekiq::Queue.stub(:all, mock_queues) do
assert_includes output, "NAME SIZE LATENCY"
assert_includes output, "foobar 12 12.35"
assert_includes output, "a_long_queue_name 234 567.90"
end
end
end
end
end