cookbook-openstack-telemetry/spec/common_spec.rb

189 lines
5.2 KiB
Ruby

require_relative 'spec_helper'
describe 'openstack-telemetry::common' do
describe 'ubuntu' do
let(:runner) { ChefSpec::SoloRunner.new(UBUNTU_OPTS) }
let(:node) { runner.node }
cached(:chef_run) { runner.converge(described_recipe) }
include_context 'telemetry-stubs'
context 'with logging enabled' do
cached(:chef_run) do
node.override['openstack']['telemetry']['syslog']['use'] = true
runner.converge(described_recipe)
end
it 'runs logging recipe' do
expect(chef_run).to include_recipe 'openstack-common::logging'
end
end
it 'installs mysql python packages by default' do
expect(chef_run).to upgrade_package 'python3-mysqldb'
end
it 'installs the common packages' do
expect(chef_run).to upgrade_package %w(ceilometer-common python3-ceilometer)
end
describe '/etc/ceilometer/pipeline.yaml' do
pipeline_yaml = <<-EOL
publishers:
- gnocchi://
EOL
it do
expect(chef_run).to create_template('/etc/ceilometer/pipeline.yaml')
.with(
source: 'pipeline.yaml.erb',
owner: 'ceilometer',
group: 'ceilometer',
mode: '640'
)
end
it do
expect(chef_run).to render_file('/etc/ceilometer/pipeline.yaml').with_content(pipeline_yaml)
end
end
describe '/etc/ceilometer/polling.yaml' do
polling_yaml = <<-EOL
# This file is automatically generated by Chef
# Any changes will be overwritten
---
sources:
- name: some_pollsters
interval: 300
meters:
- cpu
- cpu_l3_cache
- memory.usage
- network.incoming.bytes
- network.incoming.packets
- network.outgoing.bytes
- network.outgoing.packets
- disk.device.read.bytes
- disk.device.read.requests
- disk.device.write.bytes
- disk.device.write.requests
- hardware.cpu.util
- hardware.memory.used
- hardware.memory.total
- hardware.memory.buffer
- hardware.memory.cached
- hardware.memory.swap.avail
- hardware.memory.swap.total
- hardware.system_stats.io.outgoing.blocks
- hardware.system_stats.io.incoming.blocks
- hardware.network.ip.incoming.datagrams
- hardware.network.ip.outgoing.datagrams
EOL
it do
expect(chef_run).to create_template('/etc/ceilometer/polling.yaml')
.with(
source: 'polling.yaml.erb',
owner: 'ceilometer',
group: 'ceilometer',
mode: '640'
)
end
it do
expect(chef_run).to render_file('/etc/ceilometer/polling.yaml').with_content(polling_yaml)
end
end
describe '/etc/ceilometer' do
let(:dir) { chef_run.directory('/etc/ceilometer') }
it 'creates the /etc/ceilometer directory' do
expect(chef_run).to create_directory(dir.name).with(
user: 'ceilometer',
group: 'ceilometer',
mode: '750'
)
end
end
describe 'ceilometer.conf' do
let(:file) { chef_run.template('/etc/ceilometer/ceilometer.conf') }
it 'creates the file' do
expect(chef_run).to create_template(file.name).with(
source: 'openstack-service.conf.erb',
cookbook: 'openstack-common',
user: 'ceilometer',
group: 'ceilometer',
mode: '640',
sensitive: true
)
end
it do
[
/^username = ceilometer$/,
/^project_name = service$/,
/^user_domain_name = Default/,
/^project_domain_name = Default/,
/^auth_type = v3password$/,
/^region_name = RegionOne$/,
%r{auth_url = http://127\.0\.0\.1:5000/v3},
/^password = ceilometer-pass$/,
].each do |line|
expect(chef_run).to render_config_file(file.name)
.with_section_content('keystone_authtoken', line)
end
end
it do
[
/^username = ceilometer$/,
/^project_name = service$/,
/^user_domain_name = Default/,
/^project_domain_name = Default/,
/^auth_type = v3password$/,
/^interface = internal$/,
/^region_name = RegionOne$/,
%r{auth_url = http://127\.0\.0\.1:5000/v3},
/^password = ceilometer-pass$/,
].each do |line|
expect(chef_run).to render_config_file(file.name)
.with_section_content('service_credentials', line)
end
end
it do
[
%r{url = http://127\.0\.0\.1:8041},
/^filter_project = service$/,
].each do |line|
expect(chef_run).to render_config_file(file.name)
.with_section_content('dispatcher_gnocchi', line)
end
end
it do
[
%r{^transport_url = rabbit://guest:mypass@127.0.0.1:5672$},
].each do |line|
expect(chef_run).to render_config_file(file.name)
.with_section_content('DEFAULT', line)
end
end
it do
expect(chef_run).to render_config_file(file.name)
.with_section_content(
'database',
%(connection = mysql+pymysql://ceilometer:ceilometer-dbpass@127.0.0.1:3306/ceilometer?charset=utf8)
)
end
end
end
end