diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-12-20 18:12:25 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-12-20 18:12:25 +0300 |
commit | 068b3a417794ab8506b2e149301b3a60c01df078 (patch) | |
tree | 26ce51b45ae535a6fc47fb04cad8da42ec408a2f /spec/metrics_server | |
parent | 62c78157be8fe8888787162293f13945a5fa5d3e (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/metrics_server')
-rw-r--r-- | spec/metrics_server/metrics_server_spec.rb | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/spec/metrics_server/metrics_server_spec.rb b/spec/metrics_server/metrics_server_spec.rb index 4e3c6900875..4f0d5bc5bb2 100644 --- a/spec/metrics_server/metrics_server_spec.rb +++ b/spec/metrics_server/metrics_server_spec.rb @@ -8,18 +8,24 @@ require_relative '../support/helpers/next_instance_of' RSpec.describe MetricsServer do # rubocop:disable RSpec/FilePath include NextInstanceOf + let(:metrics_dir) { Dir.mktmpdir } + before do # We do not want this to have knock-on effects on the test process. allow(Gitlab::ProcessManagement).to receive(:modify_signals) end + after do + FileUtils.rm_rf(metrics_dir, secure: true) + end + describe '.spawn' do context 'when in parent process' do it 'forks into a new process and detaches it' do expect(Process).to receive(:fork).and_return(99) expect(Process).to receive(:detach).with(99) - described_class.spawn('sidekiq', metrics_dir: 'path/to/metrics') + described_class.spawn('sidekiq', metrics_dir: metrics_dir) end end @@ -35,13 +41,13 @@ RSpec.describe MetricsServer do # rubocop:disable RSpec/FilePath expect(server).to receive(:start) end - described_class.spawn('sidekiq', metrics_dir: 'path/to/metrics') + described_class.spawn('sidekiq', metrics_dir: metrics_dir) end it 'resets signal handlers from parent process' do expect(Gitlab::ProcessManagement).to receive(:modify_signals).with(%i[A B], 'DEFAULT') - described_class.spawn('sidekiq', metrics_dir: 'path/to/metrics', trapped_signals: %i[A B]) + described_class.spawn('sidekiq', metrics_dir: metrics_dir, trapped_signals: %i[A B]) end end end @@ -50,9 +56,9 @@ RSpec.describe MetricsServer do # rubocop:disable RSpec/FilePath let(:exporter_class) { Class.new(Gitlab::Metrics::Exporter::BaseExporter) } let(:exporter_double) { double('fake_exporter', start: true) } let(:prometheus_config) { ::Prometheus::Client.configuration } - let(:metrics_dir) { Dir.mktmpdir } let(:settings) { { "fake_exporter" => { "enabled" => true } } } let!(:old_metrics_dir) { prometheus_config.multiprocess_files_dir } + let(:ruby_sampler_double) { double(Gitlab::Metrics::Samplers::RubySampler) } subject(:metrics_server) { described_class.new('fake', metrics_dir, true)} @@ -60,11 +66,13 @@ RSpec.describe MetricsServer do # rubocop:disable RSpec/FilePath stub_const('Gitlab::Metrics::Exporter::FakeExporter', exporter_class) expect(exporter_class).to receive(:instance).with(settings['fake_exporter'], synchronous: true).and_return(exporter_double) expect(Settings).to receive(:monitoring).and_return(settings) + + allow(Gitlab::Metrics::Samplers::RubySampler).to receive(:initialize_instance).and_return(ruby_sampler_double) + allow(ruby_sampler_double).to receive(:start) end after do Gitlab::Metrics.reset_registry! - FileUtils.rm_rf(metrics_dir, secure: true) prometheus_config.multiprocess_files_dir = old_metrics_dir end @@ -72,6 +80,7 @@ RSpec.describe MetricsServer do # rubocop:disable RSpec/FilePath metrics_server.start expect(prometheus_config.multiprocess_files_dir).to eq metrics_dir + expect(::Prometheus::Client.configuration.pid_provider.call).to eq 'fake_exporter' end it 'ensures that metrics directory exists in correct mode (0700)' do @@ -105,5 +114,11 @@ RSpec.describe MetricsServer do # rubocop:disable RSpec/FilePath metrics_server.start end + + it 'starts a RubySampler instance' do + expect(ruby_sampler_double).to receive(:start) + + subject.start + end end end |