From 1581a4bace12c47927b3d970ce4a88853c36935c Mon Sep 17 00:00:00 2001 From: Roberto Miranda Date: Thu, 15 Aug 2024 16:12:53 +0100 Subject: [PATCH] Add listener_address as Instance attributes of Promenade::Raindrops::Stats --- lib/promenade/raindrops/stats.rb | 13 +++++++------ spec/promenade/raindrops/stats_spec.rb | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/promenade/raindrops/stats.rb b/lib/promenade/raindrops/stats.rb index 005f2b1..b1cbb86 100644 --- a/lib/promenade/raindrops/stats.rb +++ b/lib/promenade/raindrops/stats.rb @@ -16,14 +16,15 @@ module Raindrops class Stats - attr_reader :active_workers, :queued_requests + attr_reader :active_workers, :queued_requests, :listener_address - def initialize + def initialize(listener_address: nil) return unless defined?(::Raindrops) return unless defined?(::Raindrops::Linux.tcp_listener_stats) - listener_address = "0.0.0.0:#{ENV.fetch('PORT', 3000)}" - stats = ::Raindrops::Linux.tcp_listener_stats([listener_address])[listener_address] + @listener_address = listener_address || "127.0.0.1:#{ENV.fetch('PORT', 3000)}" + + stats = ::Raindrops::Linux.tcp_listener_stats([@listener_address])[@listener_address] @active_workers = stats.active @queued_requests = stats.queued @@ -34,8 +35,8 @@ def instrument Promenade.metric(:rack_queued_requests).set({}, queued_requests) end - def self.instrument - new.instrument + def self.instrument(listener_address: nil) + new(listener_address: listener_address).instrument end end end diff --git a/spec/promenade/raindrops/stats_spec.rb b/spec/promenade/raindrops/stats_spec.rb index edf2412..596ae38 100644 --- a/spec/promenade/raindrops/stats_spec.rb +++ b/spec/promenade/raindrops/stats_spec.rb @@ -3,7 +3,7 @@ RSpec.describe Promenade::Raindrops::Stats do let(:listen_stats) { instance_double("Raindrops::Linux::ListenStats", active: 1, queued: 1) } - let(:listener_address) { "0.0.0.0:#{ENV.fetch('PORT', 3000)}" } + let(:listener_address) { "127.0.0.1:#{ENV.fetch('PORT', 3000)}" } before do allow(Raindrops::Linux).to receive(:tcp_listener_stats).and_return({ listener_address => listen_stats })