summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksei Lipniagov <alipniagov@gitlab.com>2019-07-25 14:45:22 +0300
committerAleksei Lipniagov <alipniagov@gitlab.com>2019-07-25 16:13:42 +0300
commit7da24518741c135393b1651e1a4829e8632e15fa (patch)
tree85e1496e7c52ed1a9951093b4337c380360f0cb8
parent29b2fdaa75b2437bad4c190a3df8521e46fd66c0 (diff)
downloadgitlab-ce-64972-fix-unicorn-workers-metric.tar.gz
Update specs: prod/dev environment examples64972-fix-unicorn-workers-metric
-rw-r--r--lib/prometheus/pid_provider.rb9
-rw-r--r--spec/lib/prometheus/pid_provider_spec.rb46
2 files changed, 41 insertions, 14 deletions
diff --git a/lib/prometheus/pid_provider.rb b/lib/prometheus/pid_provider.rb
index 3c791147ccb..2e15e947799 100644
--- a/lib/prometheus/pid_provider.rb
+++ b/lib/prometheus/pid_provider.rb
@@ -1,7 +1,5 @@
# frozen_string_literal: true
-require 'prometheus/client/support/unicorn'
-
module Prometheus
module PidProvider
extend self
@@ -21,10 +19,11 @@ module Prometheus
private
def unicorn_worker_id
- if process_name =~ /unicorn_rails master/
+ # The master process is being renamed, check the specs for examples
+ if process_name =~ /(unicorn|unicorn_rails)( master|\z)/
'unicorn_master'
- elsif match = process_name.match(/unicorn_rails worker\[([0-9]+)\]/)
- "unicorn_#{match[1]}"
+ elsif match = process_name.match(/(unicorn|unicorn_rails) worker\[([0-9]+)\]/)
+ "unicorn_#{match[2]}"
else
unknown_process_id
end
diff --git a/spec/lib/prometheus/pid_provider_spec.rb b/spec/lib/prometheus/pid_provider_spec.rb
index 32e03f5b4a5..9a501ef769f 100644
--- a/spec/lib/prometheus/pid_provider_spec.rb
+++ b/spec/lib/prometheus/pid_provider_spec.rb
@@ -25,28 +25,56 @@ describe Prometheus::PidProvider do
before do
stub_const('Unicorn::Worker', Class.new)
hide_const('Puma')
+
+ expect(described_class).to receive(:process_name).at_least(:once).and_return(process_name)
end
context 'when unicorn master is specified in process name' do
- before do
- expect(described_class).to receive(:process_name).at_least(:once).and_return('unicorn_rails master')
+ context 'when in production env' do
+ context 'before the process was renamed' do
+ let(:process_name) { "/opt/gitlab/embedded/bin/unicorn"}
+
+ it { is_expected.to eq 'unicorn_master' }
+ end
+
+ context 'after the process was renamed' do
+ let(:process_name) { "unicorn master -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru" }
+
+ it { is_expected.to eq 'unicorn_master' }
+ end
end
- it { is_expected.to eq 'unicorn_master' }
+ context 'when in development env' do
+ context 'before the process was renamed' do
+ let(:process_name) { "path_to_bindir/bin/unicorn_rails"}
+
+ it { is_expected.to eq 'unicorn_master' }
+ end
+
+ context 'after the process was renamed' do
+ let(:process_name) { "unicorn_rails master -c /gitlab_dir/config/unicorn.rb -E development" }
+
+ it { is_expected.to eq 'unicorn_master' }
+ end
+ end
end
context 'when unicorn worker id is specified in process name' do
- before do
- expect(described_class).to receive(:process_name).at_least(:once).and_return('unicorn_rails worker[1]')
+ context 'when in production env' do
+ let(:process_name) { "unicorn worker[1] -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru" }
+
+ it { is_expected.to eq 'unicorn_1' }
end
- it { is_expected.to eq 'unicorn_1' }
+ context 'when in development env' do
+ let(:process_name) { "unicorn_rails worker[1] -c gitlab_dir/config/unicorn.rb -E development" }
+
+ it { is_expected.to eq 'unicorn_1' }
+ end
end
context 'when no specified unicorn master or worker id in process name' do
- before do
- expect(described_class).to receive(:process_name).at_least(:once).and_return('bin/unicorn_rails')
- end
+ let(:process_name) { "bin/unknown_unicorn_instance"}
it { is_expected.to eq "process_#{Process.pid}" }
end