109 lines
2.7 KiB
Ruby
109 lines
2.7 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'spec_helper'
|
||
|
|
||
|
describe Gitlab::Prometheus::Internal do
|
||
|
let(:listen_address) { 'localhost:9090' }
|
||
|
|
||
|
let(:prometheus_settings) do
|
||
|
{
|
||
|
enable: true,
|
||
|
listen_address: listen_address
|
||
|
}
|
||
|
end
|
||
|
|
||
|
before do
|
||
|
stub_config(prometheus: prometheus_settings)
|
||
|
end
|
||
|
|
||
|
describe '.uri' do
|
||
|
shared_examples 'returns valid uri' do |uri_string|
|
||
|
it do
|
||
|
expect(described_class.uri).to eq(uri_string)
|
||
|
expect { Addressable::URI.parse(described_class.uri) }.not_to raise_error
|
||
|
end
|
||
|
end
|
||
|
|
||
|
it_behaves_like 'returns valid uri', 'http://localhost:9090'
|
||
|
|
||
|
context 'with non default prometheus address' do
|
||
|
let(:listen_address) { 'https://localhost:9090' }
|
||
|
|
||
|
it_behaves_like 'returns valid uri', 'https://localhost:9090'
|
||
|
|
||
|
context 'with :9090 symbol' do
|
||
|
let(:listen_address) { :':9090' }
|
||
|
|
||
|
it_behaves_like 'returns valid uri', 'http://localhost:9090'
|
||
|
end
|
||
|
|
||
|
context 'with 0.0.0.0:9090' do
|
||
|
let(:listen_address) { '0.0.0.0:9090' }
|
||
|
|
||
|
it_behaves_like 'returns valid uri', 'http://localhost:9090'
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when listen_address is nil' do
|
||
|
let(:listen_address) { nil }
|
||
|
|
||
|
it 'does not fail' do
|
||
|
expect(described_class.uri).to eq(nil)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when prometheus listen address is blank in gitlab.yml' do
|
||
|
let(:listen_address) { '' }
|
||
|
|
||
|
it 'does not configure prometheus' do
|
||
|
expect(described_class.uri).to eq(nil)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe 'prometheus_enabled?' do
|
||
|
it 'returns correct value' do
|
||
|
expect(described_class.prometheus_enabled?).to eq(true)
|
||
|
end
|
||
|
|
||
|
context 'when prometheus setting is disabled in gitlab.yml' do
|
||
|
let(:prometheus_settings) do
|
||
|
{
|
||
|
enable: false,
|
||
|
listen_address: listen_address
|
||
|
}
|
||
|
end
|
||
|
|
||
|
it 'returns correct value' do
|
||
|
expect(described_class.prometheus_enabled?).to eq(false)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when prometheus setting is not present in gitlab.yml' do
|
||
|
before do
|
||
|
allow(Gitlab.config).to receive(:prometheus).and_raise(Settingslogic::MissingSetting)
|
||
|
end
|
||
|
|
||
|
it 'does not fail' do
|
||
|
expect(described_class.prometheus_enabled?).to eq(false)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe '.listen_address' do
|
||
|
it 'returns correct value' do
|
||
|
expect(described_class.listen_address).to eq(listen_address)
|
||
|
end
|
||
|
|
||
|
context 'when prometheus setting is not present in gitlab.yml' do
|
||
|
before do
|
||
|
allow(Gitlab.config).to receive(:prometheus).and_raise(Settingslogic::MissingSetting)
|
||
|
end
|
||
|
|
||
|
it 'does not fail' do
|
||
|
expect(described_class.listen_address).to eq(nil)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|