Accepts incoming events and correctly parses them into events. GeoLite2 integration complete"
This commit is contained in:
124
test/services/hub_load_test.rb
Normal file
124
test/services/hub_load_test.rb
Normal file
@@ -0,0 +1,124 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "test_helper"
|
||||
|
||||
class HubLoadTest < ActiveSupport::TestCase
|
||||
test "normal load level with low queue depth" do
|
||||
HubLoad.stub :queue_depth, 500 do
|
||||
assert_equal :normal, HubLoad.calculate_load_level
|
||||
end
|
||||
end
|
||||
|
||||
test "moderate load level with moderate queue depth" do
|
||||
HubLoad.stub :queue_depth, 3000 do
|
||||
assert_equal :moderate, HubLoad.calculate_load_level
|
||||
end
|
||||
end
|
||||
|
||||
test "high load level with high queue depth" do
|
||||
HubLoad.stub :queue_depth, 7500 do
|
||||
assert_equal :high, HubLoad.calculate_load_level
|
||||
end
|
||||
end
|
||||
|
||||
test "critical load level with very high queue depth" do
|
||||
HubLoad.stub :queue_depth, 15000 do
|
||||
assert_equal :critical, HubLoad.calculate_load_level
|
||||
end
|
||||
end
|
||||
|
||||
test "current_sampling returns correct rates for normal load" do
|
||||
HubLoad.stub :queue_depth, 500 do
|
||||
sampling = HubLoad.current_sampling
|
||||
|
||||
assert_equal 1.0, sampling[:allowed_requests]
|
||||
assert_equal 1.0, sampling[:blocked_requests]
|
||||
assert_equal 1.0, sampling[:rate_limited_requests]
|
||||
assert_equal :normal, sampling[:load_level]
|
||||
assert_equal 500, sampling[:queue_depth]
|
||||
assert sampling[:effective_until].present?
|
||||
end
|
||||
end
|
||||
|
||||
test "current_sampling reduces allowed requests under moderate load" do
|
||||
HubLoad.stub :queue_depth, 3000 do
|
||||
sampling = HubLoad.current_sampling
|
||||
|
||||
assert_equal 0.5, sampling[:allowed_requests]
|
||||
assert_equal 1.0, sampling[:blocked_requests]
|
||||
assert_equal 1.0, sampling[:rate_limited_requests]
|
||||
assert_equal :moderate, sampling[:load_level]
|
||||
end
|
||||
end
|
||||
|
||||
test "current_sampling reduces allowed requests under high load" do
|
||||
HubLoad.stub :queue_depth, 7500 do
|
||||
sampling = HubLoad.current_sampling
|
||||
|
||||
assert_equal 0.2, sampling[:allowed_requests]
|
||||
assert_equal 1.0, sampling[:blocked_requests]
|
||||
assert_equal 1.0, sampling[:rate_limited_requests]
|
||||
assert_equal :high, sampling[:load_level]
|
||||
end
|
||||
end
|
||||
|
||||
test "current_sampling minimizes allowed requests under critical load" do
|
||||
HubLoad.stub :queue_depth, 15000 do
|
||||
sampling = HubLoad.current_sampling
|
||||
|
||||
assert_equal 0.05, sampling[:allowed_requests]
|
||||
assert_equal 1.0, sampling[:blocked_requests]
|
||||
assert_equal 1.0, sampling[:rate_limited_requests]
|
||||
assert_equal :critical, sampling[:load_level]
|
||||
end
|
||||
end
|
||||
|
||||
test "effective_until is approximately 10 seconds in future" do
|
||||
sampling = HubLoad.current_sampling
|
||||
effective_until = Time.parse(sampling[:effective_until])
|
||||
|
||||
time_diff = effective_until - Time.current
|
||||
assert time_diff > 9, "effective_until should be ~10 seconds in future"
|
||||
assert time_diff < 11, "effective_until should be ~10 seconds in future"
|
||||
end
|
||||
|
||||
test "overloaded? returns false for normal and moderate load" do
|
||||
HubLoad.stub :queue_depth, 500 do
|
||||
assert_not HubLoad.overloaded?
|
||||
end
|
||||
|
||||
HubLoad.stub :queue_depth, 3000 do
|
||||
assert_not HubLoad.overloaded?
|
||||
end
|
||||
end
|
||||
|
||||
test "overloaded? returns true for high and critical load" do
|
||||
HubLoad.stub :queue_depth, 7500 do
|
||||
assert HubLoad.overloaded?
|
||||
end
|
||||
|
||||
HubLoad.stub :queue_depth, 15000 do
|
||||
assert HubLoad.overloaded?
|
||||
end
|
||||
end
|
||||
|
||||
test "stats returns complete load information" do
|
||||
HubLoad.stub :queue_depth, 3000 do
|
||||
stats = HubLoad.stats
|
||||
|
||||
assert_equal 3000, stats[:queue_depth]
|
||||
assert_equal :moderate, stats[:load_level]
|
||||
assert_equal false, stats[:overloaded]
|
||||
assert_equal 0.5, stats[:sampling_rates][:allowed]
|
||||
assert_equal 1.0, stats[:sampling_rates][:blocked]
|
||||
end
|
||||
end
|
||||
|
||||
test "handles queue depth query errors gracefully" do
|
||||
# Simulate SolidQueue error
|
||||
SolidQueue::Job.stub :where, -> (*) { raise StandardError, "DB error" } do
|
||||
depth = HubLoad.queue_depth
|
||||
assert_equal 0, depth # Should return 0 on error
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user