mirror of
https://github.com/puma/puma.git
synced 2022-11-09 13:48:40 -05:00
parent
2deaf77a38
commit
a3e18cb3a6
5 changed files with 11 additions and 8 deletions
|
@ -1,6 +1,7 @@
|
|||
## Master
|
||||
|
||||
* Features
|
||||
* Instrument started_at in /stats (#1844)
|
||||
* Add log_formatter configuration (#1816)
|
||||
|
||||
* Bugfixes
|
||||
|
|
|
@ -95,12 +95,13 @@ module Puma
|
|||
@signal = "TERM"
|
||||
@options = options
|
||||
@first_term_sent = nil
|
||||
@started_at = Time.now
|
||||
@last_checkin = Time.now
|
||||
@last_status = '{}'
|
||||
@dead = false
|
||||
end
|
||||
|
||||
attr_reader :index, :pid, :phase, :signal, :last_checkin, :last_status
|
||||
attr_reader :index, :pid, :phase, :signal, :last_checkin, :last_status, :started_at
|
||||
|
||||
def booted?
|
||||
@stage == :booted
|
||||
|
@ -376,8 +377,8 @@ module Puma
|
|||
def stats
|
||||
old_worker_count = @workers.count { |w| w.phase != @phase }
|
||||
booted_worker_count = @workers.count { |w| w.booted? }
|
||||
worker_status = '[' + @workers.map { |w| %Q!{ "pid": #{w.pid}, "index": #{w.index}, "phase": #{w.phase}, "booted": #{w.booted?}, "last_checkin": "#{w.last_checkin.utc.iso8601}", "last_status": #{w.last_status} }!}.join(",") + ']'
|
||||
%Q!{ "workers": #{@workers.size}, "phase": #{@phase}, "booted_workers": #{booted_worker_count}, "old_workers": #{old_worker_count}, "worker_status": #{worker_status} }!
|
||||
worker_status = '[' + @workers.map { |w| %Q!{ "started_at": "#{w.started_at.utc.iso8601}", "pid": #{w.pid}, "index": #{w.index}, "phase": #{w.phase}, "booted": #{w.booted?}, "last_checkin": "#{w.last_checkin.utc.iso8601}", "last_status": #{w.last_status} }!}.join(",") + ']'
|
||||
%Q!{ "started_at": "#{@started_at.utc.iso8601}", "workers": #{@workers.size}, "phase": #{@phase}, "booted_workers": #{booted_worker_count}, "old_workers": #{old_worker_count}, "worker_status": #{worker_status} }!
|
||||
end
|
||||
|
||||
def preload?
|
||||
|
|
|
@ -14,6 +14,7 @@ module Puma
|
|||
@options = cli.options
|
||||
@app = nil
|
||||
@control = nil
|
||||
@started_at = Time.now
|
||||
end
|
||||
|
||||
def daemon?
|
||||
|
|
|
@ -18,7 +18,7 @@ module Puma
|
|||
r = @server.running || 0
|
||||
t = @server.pool_capacity || 0
|
||||
m = @server.max_threads || 0
|
||||
%Q!{ "backlog": #{b}, "running": #{r}, "pool_capacity": #{t}, "max_threads": #{m} }!
|
||||
%Q!{ "started_at": "#{@started_at.utc.iso8601}", "backlog": #{b}, "running": #{r}, "pool_capacity": #{t}, "max_threads": #{m} }!
|
||||
end
|
||||
|
||||
def restart
|
||||
|
|
|
@ -62,8 +62,8 @@ class TestCLI < Minitest::Test
|
|||
body = s.read
|
||||
s.close
|
||||
|
||||
assert_equal '{ "backlog": 0, "running": 0, "pool_capacity": 16, "max_threads": 16 }', body.split(/\r?\n/).last
|
||||
assert_equal '{ "backlog": 0, "running": 0, "pool_capacity": 16, "max_threads": 16 }', Puma.stats
|
||||
assert_match /{ "started_at": "\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z", "backlog": 0, "running": 0, "pool_capacity": 16, "max_threads": 16 }/, body.split(/\r?\n/).last
|
||||
assert_match /{ "started_at": "\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z", "backlog": 0, "running": 0, "pool_capacity": 16, "max_threads": 16 }/, Puma.stats
|
||||
|
||||
ensure
|
||||
cli.launcher.stop
|
||||
|
@ -101,7 +101,7 @@ class TestCLI < Minitest::Test
|
|||
s = UNIXSocket.new @tmp_path
|
||||
s << "GET /stats HTTP/1.0\r\n\r\n"
|
||||
body = s.read
|
||||
assert_match(/\{ "workers": 2, "phase": 0, "booted_workers": 2, "old_workers": 0, "worker_status": \[\{ "pid": \d+, "index": 0, "phase": 0, "booted": true, "last_checkin": "[^"]+", "last_status": \{ "backlog":0, "running":2, "pool_capacity":2, "max_threads": 2 \} \},\{ "pid": \d+, "index": 1, "phase": 0, "booted": true, "last_checkin": "[^"]+", "last_status": \{ "backlog":0, "running":2, "pool_capacity":2, "max_threads": 2 \} \}\] \}/, body.split("\r\n").last)
|
||||
assert_match(/\{ "started_at": "\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z", "workers": 2, "phase": 0, "booted_workers": 2, "old_workers": 0, "worker_status": \[\{ "started_at": "\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z", "pid": \d+, "index": 0, "phase": 0, "booted": true, "last_checkin": "[^"]+", "last_status": \{ "backlog":0, "running":2, "pool_capacity":2, "max_threads": 2 \} \},\{ "started_at": "\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z", "pid": \d+, "index": 1, "phase": 0, "booted": true, "last_checkin": "[^"]+", "last_status": \{ "backlog":0, "running":2, "pool_capacity":2, "max_threads": 2 \} \}\] \}/, body.split("\r\n").last)
|
||||
|
||||
cli.launcher.stop
|
||||
t.join
|
||||
|
@ -125,7 +125,7 @@ class TestCLI < Minitest::Test
|
|||
s << "GET /stats HTTP/1.0\r\n\r\n"
|
||||
body = s.read
|
||||
|
||||
assert_equal '{ "backlog": 0, "running": 0, "pool_capacity": 16, "max_threads": 16 }', body.split("\r\n").last
|
||||
assert_match /{ "started_at": "\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z", "backlog": 0, "running": 0, "pool_capacity": 16, "max_threads": 16 }/, body.split("\r\n").last
|
||||
|
||||
cli.launcher.stop
|
||||
t.join
|
||||
|
|
Loading…
Add table
Reference in a new issue