Skip to content

Commit 25b96e4

Browse files
committed
Update metrics_spec.rb test
* explicitly start and stop MetricsWebserver with Prometheus middleware
1 parent 1629778 commit 25b96e4

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

lib/cloud_controller/metrics_webserver.rb

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,26 @@ module VCAP
55
module CloudController
66
class MetricsWebserver
77
attr_reader :app
8+
@server
89

910
def initialize
1011
@app = build_app
1112
end
1213

1314
def start(config)
14-
server = Puma::Server.new(@app)
15+
@server = Puma::Server.new(@app)
1516

1617
if config.get(:nginx, :metrics_socket).nil? || config.get(:nginx, :metrics_socket).empty?
17-
server.add_tcp_listener('127.0.0.1', 9395)
18+
@server.add_tcp_listener('127.0.0.1', 9395)
1819
else
19-
server.add_unix_listener(config.get(:nginx, :metrics_socket))
20+
@server.add_unix_listener(config.get(:nginx, :metrics_socket))
2021
end
2122

22-
server.run
23+
@server.run
24+
end
25+
26+
def stop
27+
@server.stop(true)
2328
end
2429

2530
private

spec/request/internal/metrics_spec.rb

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@
33
RSpec.describe 'Metrics' do
44
let(:user) { VCAP::CloudController::User.make }
55
let(:user_header) { headers_for(user) }
6-
76
let(:metrics_webserver) { VCAP::CloudController::MetricsWebserver.new }
7+
88
delegate :app, to: :metrics_webserver
99

10-
# FIXME: PrometheusUpdater methods are not called -> returned values are almost all 0
1110
before do
12-
prom_client = Prometheus::Client::Registry.new
13-
Prometheus::Client.config.data_store = Prometheus::Client::DataStores::DirectFileStore.new(dir: Dir.mktmpdir)
14-
VCAP::CloudController::Metrics::PrometheusUpdater.new(registry: prom_client)
15-
11+
allow_any_instance_of(VCAP::CloudController::Metrics::PeriodicUpdater).to receive(:update_webserver_stats)
1612
metrics_webserver.start(TestConfig.config_instance)
1713
end
1814

15+
after do
16+
metrics_webserver.stop
17+
end
18+
1919
it 'can be called several times' do
2020
get '/internal/v4/metrics', nil
2121

@@ -36,6 +36,7 @@
3636
10.times do
3737
VCAP::CloudController::User.make
3838
end
39+
CloudController::DependencyLocator.instance.periodic_updater.update!
3940
end
4041

4142
it 'reports the total number of users' do
@@ -49,6 +50,7 @@
4950

5051
context 'cc_vitals' do
5152
it 'reports vitals' do
53+
CloudController::DependencyLocator.instance.periodic_updater.update!
5254
get '/internal/v4/metrics', nil
5355

5456
expect(last_response.body).to match(/cc_vitals_num_cores [1-9][0-9]*\.\d+/)
@@ -64,6 +66,8 @@
6466
before do
6567
Delayed::Job.enqueue(VCAP::CloudController::Jobs::Runtime::EventsCleanup.new(1), { queue: 'cc_api_0', run_at: Time.now + 1.day })
6668
Delayed::Job.enqueue(VCAP::CloudController::Jobs::Runtime::EventsCleanup.new(1), { queue: 'cc_generic', run_at: Time.now + 1.day })
69+
70+
CloudController::DependencyLocator.instance.periodic_updater.update!
6771
end
6872

6973
after do
@@ -82,6 +86,8 @@
8286
before do
8387
Delayed::Job.enqueue(VCAP::CloudController::Jobs::Runtime::EventsCleanup.new(1), { queue: 'cc_api_0', run_at: Time.now })
8488
Delayed::Job.enqueue(VCAP::CloudController::Jobs::Runtime::EventsCleanup.new(1), { queue: 'cc_generic', run_at: Time.now })
89+
90+
CloudController::DependencyLocator.instance.periodic_updater.update!
8591
end
8692

8793
after do
@@ -100,6 +106,8 @@
100106
before do
101107
Delayed::Job.enqueue(VCAP::CloudController::Jobs::Runtime::EventsCleanup.new(1), { queue: 'cc_api_0', run_at: Time.now + 1.minute })
102108
Delayed::Job.enqueue(VCAP::CloudController::Jobs::Runtime::EventsCleanup.new(1), { queue: 'cc_generic', run_at: Time.now + 1.minute })
109+
110+
CloudController::DependencyLocator.instance.periodic_updater.update!
103111
end
104112

105113
after do
@@ -118,8 +126,9 @@
118126
before do
119127
Delayed::Job.enqueue(VCAP::CloudController::Jobs::Runtime::EventsCleanup.new(1), { queue: 'cc_api_0', run_at: Time.now + 1.day })
120128
Delayed::Job.enqueue(VCAP::CloudController::Jobs::Runtime::EventsCleanup.new(1), { queue: 'cc_generic', run_at: Time.now + 1.day })
121-
122129
Delayed::Job.dataset.update(failed_at: Time.now.utc)
130+
131+
CloudController::DependencyLocator.instance.periodic_updater.update!
123132
end
124133

125134
after do

0 commit comments

Comments
 (0)