vmpooler/spec/unit/env_config.rb
kirby@puppetlabs.com 09a382a10f Make it possible to disable linked clones
This commit adds a new configuration parameter to allow setting whether to create linked clones on a global, or per pool basis. Without this change vmpooler would always attempt to create linked clones. The default behavior of creating linked clones is preserved.
2019-08-06 14:29:31 -07:00

223 lines
6.5 KiB
Ruby

require 'vmpooler'
require 'climate_control'
require 'mock_redis'
describe 'Vmpooler' do
describe 'config' do
describe 'environment variables' do
test_integer = '5'
test_string = 'test_string'
test_bool = 'true'
test_cases = [
['migration_limit', test_integer, nil],
['task_limit', test_integer, 10],
['vm_checktime', test_integer, 1],
['vm_lifetime', test_integer, 24],
['timeout', test_integer, nil],
['vm_lifetime_auth', test_integer, nil],
['max_tries', test_integer, nil],
['retry_factor', test_integer, nil],
['prefix', test_string, ""],
['logfile', test_string, nil],
['site_name', test_string, nil],
['domain', test_string, nil],
['clone_target', test_string, nil],
['create_folders', test_bool, nil],
['create_template_delta_disks', test_bool, nil],
['create_linked_clones', test_bool, nil],
['experimental_features', test_bool, nil],
['purge_unconfigured_folders', test_bool, nil],
['usage_stats', test_bool, nil],
]
test_cases.each do |key, value, default|
it "should set a value for #{key}" do
with_modified_env "#{key.upcase}": value do
test_value = value
test_value = Integer(value) if value =~ /\d/
config = Vmpooler.config
expect(config[:config][key]).to eq(test_value)
end
end
it "should set a default value for each #{key}" do
config = Vmpooler.config
expect(config[:config][key]).to eq(default)
end
if value =~ /\d/
it "should not set bad_data as a value for #{key}" do
with_modified_env "#{key.upcase}": 'bad_data' do
config = Vmpooler.config
expect(config[:config][key]).to eq(default)
end
end
end
end
end
describe 'redis environment variables' do
let(:redis) { MockRedis.new }
test_cases = [
['server', 'redis', 'localhost'],
['port', '4567', nil],
['password', 'testpass', nil],
['data_ttl', '500', 168],
]
test_cases.each do |key, value, default|
it "should set a value for #{key}" do
allow(Vmpooler).to receive(:new_redis).and_return(redis)
with_modified_env "REDIS_#{key.upcase}": value do
test_value = value
test_value = Integer(value) if value =~ /\d/
config = Vmpooler.config
expect(config[:redis][key]).to eq(test_value)
end
end
it "should set a default value for each #{key}" do
config = Vmpooler.config
expect(config[:redis][key]).to eq(default)
end
if value =~ /\d/
it "should not set bad_data as a value for #{key}" do
with_modified_env "#{key.upcase}": 'bad_data' do
config = Vmpooler.config
expect(config[:redis][key]).to eq(default)
end
end
end
end
end
describe 'statsd environment variables' do
test_cases = [
['prefix', 'vmpooler', nil],
['port', '4567', nil],
]
test_cases.each do |key, value, default|
it "should set a value for #{key}" do
with_modified_env STATSD_SERVER: 'test', "STATSD_#{key.upcase}": value do
test_value = value
test_value = Integer(value) if value =~ /\d/
config = Vmpooler.config
expect(config[:statsd][key]).to eq(test_value) end
end
it "should set a default value for each #{key}" do
with_modified_env STATSD_SERVER: 'test' do
config = Vmpooler.config
expect(config[:statsd][key]).to eq(default)
end
end
if value =~ /\d/
it "should not set bad_data as a value for #{key}" do
with_modified_env STATSD_SERVER: 'test', "STATSD_#{key.upcase}": 'bad_data' do
config = Vmpooler.config
expect(config[:statsd][key]).to eq(default)
end
end
end
end
end
describe 'graphite environment variables' do
test_cases = [
['prefix', 'vmpooler', nil],
['port', '4567', nil],
]
test_cases.each do |key, value, default|
it "should set a value for #{key}" do
with_modified_env GRAPHITE_SERVER: 'test', "GRAPHITE_#{key.upcase}": value do
test_value = value
test_value = Integer(value) if value =~ /\d/
config = Vmpooler.config
expect(config[:graphite][key]).to eq(test_value)
end
end
it "should set a default value for each #{key}" do
with_modified_env GRAPHITE_SERVER: 'test' do
config = Vmpooler.config
expect(config[:graphite][key]).to eq(default)
end
end
if value =~ /\d/
it "should not set bad_data as a value for #{key}" do
with_modified_env GRAPHITE_SERVER: 'test', "GRAPHITE_#{key.upcase}": 'bad_data' do
config = Vmpooler.config
expect(config[:graphite][key]).to eq(default)
end
end
end
end
end
describe 'ldap environment variables' do
test_cases = [
['host', 'test', nil],
['port', '4567', nil],
['base', 'dc=example,dc=com', nil],
['user_object', 'uid', nil],
]
test_cases.each do |key, value, default|
it "should set a value for #{key}" do
with_modified_env AUTH_PROVIDER: 'ldap', "LDAP_#{key.upcase}": value do
test_value = value
test_value = Integer(value) if value =~ /\d/
config = Vmpooler.config
expect(config[:auth][:ldap][key]).to eq(test_value)
end
end
it "should set a default value for each #{key}" do
with_modified_env AUTH_PROVIDER: 'ldap' do
config = Vmpooler.config
expect(config[:auth][:ldap][key]).to eq(default)
end
end
if value =~ /\d/
it "should not set bad_data as a value for #{key}" do
with_modified_env AUTH_PROVIDER: 'ldap', "LDAP_#{key.upcase}": 'bad_data' do
config = Vmpooler.config
expect(config[:auth][:ldap][key]).to eq(default)
end
end
end
end
end
end
def with_modified_env(options, &block)
ClimateControl.modify(options, &block)
end
end