From d20cf39c64ecde8cc2b54ffc6f13ccfd402c9e21 Mon Sep 17 00:00:00 2001 From: Yanis Guenane Date: Tue, 20 May 2014 08:54:45 -0400 Subject: [PATCH] telemetry: Refactor unit test to reflect recent split Split telemtry classes into telemetry::* in the test to reflect recent changes. --- .../cloud_telemetry_alarmevaluator_spec.rb | 84 ++++++++++++ .../cloud_telemetry_alarmnotifier_spec.rb | 83 ++++++++++++ spec/classes/cloud_telemetry_api_spec.rb | 112 +++++++++++++++ .../cloud_telemetry_centralagent_spec.rb | 22 +-- .../classes/cloud_telemetry_collector_spec.rb | 84 ++++++++++++ .../cloud_telemetry_notification_spec.rb | 84 ++++++++++++ spec/classes/cloud_telemetry_spec.rb | 128 ++++++++++++++++++ 7 files changed, 587 insertions(+), 10 deletions(-) create mode 100644 spec/classes/cloud_telemetry_alarmevaluator_spec.rb create mode 100644 spec/classes/cloud_telemetry_alarmnotifier_spec.rb create mode 100644 spec/classes/cloud_telemetry_api_spec.rb create mode 100644 spec/classes/cloud_telemetry_collector_spec.rb create mode 100644 spec/classes/cloud_telemetry_notification_spec.rb create mode 100644 spec/classes/cloud_telemetry_spec.rb diff --git a/spec/classes/cloud_telemetry_alarmevaluator_spec.rb b/spec/classes/cloud_telemetry_alarmevaluator_spec.rb new file mode 100644 index 00000000..22cb729b --- /dev/null +++ b/spec/classes/cloud_telemetry_alarmevaluator_spec.rb @@ -0,0 +1,84 @@ +# +# Copyright (C) 2014 eNovance SAS +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# Unit tests for cloud::telemetry::alarmevaluator class +# + +require 'spec_helper' + +describe 'cloud::telemetry::alarmevaluator' do + + shared_examples_for 'openstack telemetry alarmevaluator' do + + let :pre_condition do + "class { 'cloud::telemetry': + ceilometer_secret => 'secrete', + rabbit_hosts => ['10.0.0.1'], + rabbit_password => 'secrete', + ks_keystone_internal_host => '10.0.0.1', + ks_keystone_internal_port => '5000', + ks_keystone_internal_proto => 'http', + ks_ceilometer_password => 'secrete', + region => 'MyRegion', + log_facility => 'LOG_LOCAL0', + use_syslog => true, + verbose => true, + debug => true }" + end + + it 'configure ceilometer common' do + should contain_class('ceilometer').with( + :verbose => true, + :debug => true, + :rabbit_userid => 'ceilometer', + :rabbit_hosts => ['10.0.0.1'], + :rabbit_password => 'secrete', + :metering_secret => 'secrete', + :use_syslog => true, + :log_facility => 'LOG_LOCAL0', + :log_dir => false + ) + should contain_class('ceilometer::agent::auth').with( + :auth_password => 'secrete', + :auth_url => 'http://10.0.0.1:5000/v2.0', + :auth_region => 'MyRegion' + ) + end + + it 'configure ceilometer alarm evaluator' do + should contain_class('ceilometer::alarm::evaluator') + end + + end + + context 'on Debian platforms' do + let :facts do + { :osfamily => 'Debian', + :hostname => 'node1' } + end + + it_configures 'openstack telemetry alarmevaluator' + end + + context 'on RedHat platforms' do + let :facts do + { :osfamily => 'RedHat', + :hostname => 'node1' } + end + + it_configures 'openstack telemetry alarmevaluator' + end + +end diff --git a/spec/classes/cloud_telemetry_alarmnotifier_spec.rb b/spec/classes/cloud_telemetry_alarmnotifier_spec.rb new file mode 100644 index 00000000..8da61d56 --- /dev/null +++ b/spec/classes/cloud_telemetry_alarmnotifier_spec.rb @@ -0,0 +1,83 @@ +# +# Copyright (C) 2014 eNovance SAS +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# Unit tests for cloud::telemetry::alarmnotifier class +# + +require 'spec_helper' + +describe 'cloud::telemetry::alarmnotifier' do + + shared_examples_for 'openstack telemetry alarmnotifier' do + + let :pre_condition do + "class { 'cloud::telemetry': + ceilometer_secret => 'secrete', + rabbit_hosts => ['10.0.0.1'], + rabbit_password => 'secrete', + ks_keystone_internal_host => '10.0.0.1', + ks_keystone_internal_port => '5000', + ks_keystone_internal_proto => 'http', + ks_ceilometer_password => 'secrete', + region => 'MyRegion', + log_facility => 'LOG_LOCAL0', + use_syslog => true, + verbose => true, + debug => true }" + end + + it 'configure ceilometer common' do + should contain_class('ceilometer').with( + :verbose => true, + :debug => true, + :rabbit_userid => 'ceilometer', + :rabbit_hosts => ['10.0.0.1'], + :rabbit_password => 'secrete', + :metering_secret => 'secrete', + :use_syslog => true, + :log_facility => 'LOG_LOCAL0', + :log_dir => false + ) + should contain_class('ceilometer::agent::auth').with( + :auth_password => 'secrete', + :auth_url => 'http://10.0.0.1:5000/v2.0', + :auth_region => 'MyRegion' + ) + end + + it 'configure ceilometer alarm notifier' do + should contain_class('ceilometer::alarm::notifier') + end + end + + context 'on Debian platforms' do + let :facts do + { :osfamily => 'Debian', + :hostname => 'node1' } + end + + it_configures 'openstack telemetry alarmnotifier' + end + + context 'on RedHat platforms' do + let :facts do + { :osfamily => 'RedHat', + :hostname => 'node1' } + end + + it_configures 'openstack telemetry alarmnotifier' + end + +end diff --git a/spec/classes/cloud_telemetry_api_spec.rb b/spec/classes/cloud_telemetry_api_spec.rb new file mode 100644 index 00000000..ad32ccaf --- /dev/null +++ b/spec/classes/cloud_telemetry_api_spec.rb @@ -0,0 +1,112 @@ +# +# Copyright (C) 2014 eNovance SAS +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# Unit tests for cloud::telemetry::api class +# + +require 'spec_helper' + +describe 'cloud::telemetry::api' do + + shared_examples_for 'openstack telemetry api' do + + let :pre_condition do + "class { 'cloud::telemetry': + ceilometer_secret => 'secrete', + rabbit_hosts => ['10.0.0.1'], + rabbit_password => 'secrete', + ks_keystone_internal_host => '10.0.0.1', + ks_keystone_internal_port => '5000', + ks_keystone_internal_proto => 'http', + ks_ceilometer_password => 'secrete', + region => 'MyRegion', + log_facility => 'LOG_LOCAL0', + use_syslog => true, + verbose => true, + debug => true }" + end + + let :params do + { :ks_keystone_internal_host => '127.0.0.1', + :ks_keystone_internal_proto => 'http', + :ks_ceilometer_internal_port => '8777', + :ks_ceilometer_password => 'rabbitpassword', + :api_eth => '127.0.0.1', + :mongo_nodes => ['node1', 'node2', 'node3'] } + end + + it 'configure ceilometer common' do + should contain_class('ceilometer').with( + :verbose => true, + :debug => true, + :rabbit_userid => 'ceilometer', + :rabbit_hosts => ['10.0.0.1'], + :rabbit_password => 'secrete', + :metering_secret => 'secrete', + :use_syslog => true, + :log_facility => 'LOG_LOCAL0', + :log_dir => false + ) + should contain_class('ceilometer::agent::auth').with( + :auth_password => 'secrete', + :auth_url => 'http://10.0.0.1:5000/v2.0', + :auth_region => 'MyRegion' + ) + end + + it 'configure ceilometer-api' do + should contain_class('ceilometer::api').with( + :keystone_password => 'rabbitpassword', + :keystone_host => '127.0.0.1', + :keystone_protocol => 'http', + :host => '127.0.0.1' + ) + end + + it 'configure ceilometer-expirer' do + should contain_class('ceilometer::expirer').with( + :time_to_live => '2592000', + :minute => '0', + :hour => '0' + ) + end + + it 'synchronize ceilometer db indexes' do + should contain_class('ceilometer::db').with( + :sync_db => true, + :database_connection => 'mongodb://node1,node2,node3/ceilometer?replicaSet=ceilometer' + ) + end + end + + context 'on Debian platforms' do + let :facts do + { :osfamily => 'Debian', + :hostname => 'node1' } + end + + it_configures 'openstack telemetry api' + end + + context 'on RedHat platforms' do + let :facts do + { :osfamily => 'RedHat', + :hostname => 'node1' } + end + + it_configures 'openstack telemetry api' + end + +end diff --git a/spec/classes/cloud_telemetry_centralagent_spec.rb b/spec/classes/cloud_telemetry_centralagent_spec.rb index e05b8aea..4138584c 100644 --- a/spec/classes/cloud_telemetry_centralagent_spec.rb +++ b/spec/classes/cloud_telemetry_centralagent_spec.rb @@ -13,14 +13,14 @@ # License for the specific language governing permissions and limitations # under the License. # -# Unit tests for cloud::telemetry::server class +# Unit tests for cloud::telemetry::centralagent class # require 'spec_helper' describe 'cloud::telemetry::centralagent' do - shared_examples_for 'openstack telemetry central agent' do + shared_examples_for 'openstack telemetry centralagent' do let :pre_condition do "class { 'cloud::telemetry': @@ -39,7 +39,7 @@ describe 'cloud::telemetry::centralagent' do end let :params do - { :enabled => true } + { :enabled => 'true', } end it 'configure ceilometer common' do @@ -62,27 +62,29 @@ describe 'cloud::telemetry::centralagent' do end it 'configure ceilometer central agent' do - should contain_class('ceilometer::agent::central').with( - :enabled => true - ) + should contain_class('ceilometer::agent::central').with({ + 'enabled' => 'true', + }) end end context 'on Debian platforms' do let :facts do - { :osfamily => 'Debian' } + { :osfamily => 'Debian', + :hostname => 'node1' } end - it_configures 'openstack telemetry central agent' + it_configures 'openstack telemetry centralagent' end context 'on RedHat platforms' do let :facts do - { :osfamily => 'RedHat' } + { :osfamily => 'RedHat', + :hostname => 'node1' } end - it_configures 'openstack telemetry central agent' + it_configures 'openstack telemetry centralagent' end end diff --git a/spec/classes/cloud_telemetry_collector_spec.rb b/spec/classes/cloud_telemetry_collector_spec.rb new file mode 100644 index 00000000..f69137ff --- /dev/null +++ b/spec/classes/cloud_telemetry_collector_spec.rb @@ -0,0 +1,84 @@ +# +# Copyright (C) 2014 eNovance SAS +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# Unit tests for cloud::telemetry::collector class +# + +require 'spec_helper' + +describe 'cloud::telemetry::collector' do + + shared_examples_for 'openstack telemetry collector' do + + let :pre_condition do + "class { 'cloud::telemetry': + ceilometer_secret => 'secrete', + rabbit_hosts => ['10.0.0.1'], + rabbit_password => 'secrete', + ks_keystone_internal_host => '10.0.0.1', + ks_keystone_internal_port => '5000', + ks_keystone_internal_proto => 'http', + ks_ceilometer_password => 'secrete', + region => 'MyRegion', + log_facility => 'LOG_LOCAL0', + use_syslog => true, + verbose => true, + debug => true }" + end + + it 'configure ceilometer common' do + should contain_class('ceilometer').with( + :verbose => true, + :debug => true, + :rabbit_userid => 'ceilometer', + :rabbit_hosts => ['10.0.0.1'], + :rabbit_password => 'secrete', + :metering_secret => 'secrete', + :use_syslog => true, + :log_facility => 'LOG_LOCAL0', + :log_dir => false + ) + should contain_class('ceilometer::agent::auth').with( + :auth_password => 'secrete', + :auth_url => 'http://10.0.0.1:5000/v2.0', + :auth_region => 'MyRegion' + ) + end + + it 'configure ceilometer collector' do + should contain_class('ceilometer::collector') + end + + end + + context 'on Debian platforms' do + let :facts do + { :osfamily => 'Debian', + :hostname => 'node1' } + end + + it_configures 'openstack telemetry collector' + end + + context 'on RedHat platforms' do + let :facts do + { :osfamily => 'RedHat', + :hostname => 'node1' } + end + + it_configures 'openstack telemetry collector' + end + +end diff --git a/spec/classes/cloud_telemetry_notification_spec.rb b/spec/classes/cloud_telemetry_notification_spec.rb new file mode 100644 index 00000000..e62fa7d3 --- /dev/null +++ b/spec/classes/cloud_telemetry_notification_spec.rb @@ -0,0 +1,84 @@ +# +# Copyright (C) 2014 eNovance SAS +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# Unit tests for cloud::telemetry::notification class +# + +require 'spec_helper' + +describe 'cloud::telemetry::notification' do + + shared_examples_for 'openstack telemetry notification' do + + let :pre_condition do + "class { 'cloud::telemetry': + ceilometer_secret => 'secrete', + rabbit_hosts => ['10.0.0.1'], + rabbit_password => 'secrete', + ks_keystone_internal_host => '10.0.0.1', + ks_keystone_internal_port => '5000', + ks_keystone_internal_proto => 'http', + ks_ceilometer_password => 'secrete', + region => 'MyRegion', + log_facility => 'LOG_LOCAL0', + use_syslog => true, + verbose => true, + debug => true }" + end + + it 'configure ceilometer common' do + should contain_class('ceilometer').with( + :verbose => true, + :debug => true, + :rabbit_userid => 'ceilometer', + :rabbit_hosts => ['10.0.0.1'], + :rabbit_password => 'secrete', + :metering_secret => 'secrete', + :use_syslog => true, + :log_facility => 'LOG_LOCAL0', + :log_dir => false + ) + should contain_class('ceilometer::agent::auth').with( + :auth_password => 'secrete', + :auth_url => 'http://10.0.0.1:5000/v2.0', + :auth_region => 'MyRegion' + ) + end + + it 'configure ceilometer notification agent' do + should contain_class('ceilometer::agent::notification') + end + + end + + context 'on Debian platforms' do + let :facts do + { :osfamily => 'Debian', + :hostname => 'node1' } + end + + it_configures 'openstack telemetry notification' + end + + context 'on RedHat platforms' do + let :facts do + { :osfamily => 'RedHat', + :hostname => 'node1' } + end + + it_configures 'openstack telemetry notification' + end + +end diff --git a/spec/classes/cloud_telemetry_spec.rb b/spec/classes/cloud_telemetry_spec.rb new file mode 100644 index 00000000..f1539868 --- /dev/null +++ b/spec/classes/cloud_telemetry_spec.rb @@ -0,0 +1,128 @@ +# +# Copyright (C) 2014 eNovance SAS +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# Unit tests for cloud::telemetry::server class +# + +require 'spec_helper' + +describe 'cloud::telemetry::server' do + + shared_examples_for 'openstack telemetry server' do + + let :pre_condition do + "class { 'cloud::telemetry': + ceilometer_secret => 'secrete', + rabbit_hosts => ['10.0.0.1'], + rabbit_password => 'secrete', + ks_keystone_internal_host => '10.0.0.1', + ks_keystone_internal_port => '5000', + ks_keystone_internal_proto => 'http', + ks_ceilometer_password => 'secrete', + region => 'MyRegion', + log_facility => 'LOG_LOCAL0', + use_syslog => true, + verbose => true, + debug => true }" + end + + let :params do + { :ks_keystone_internal_host => '10.0.0.1', + :ks_keystone_internal_proto => 'http', + :ks_ceilometer_internal_port => '8777', + :ks_ceilometer_password => 'secrete', + :api_eth => '10.0.0.1', + :mongo_nodes => ['node1', 'node2', 'node3'] } + end + + it 'configure ceilometer common' do + should contain_class('ceilometer').with( + :verbose => true, + :debug => true, + :rabbit_userid => 'ceilometer', + :rabbit_hosts => ['10.0.0.1'], + :rabbit_password => 'secrete', + :metering_secret => 'secrete', + :use_syslog => true, + :log_facility => 'LOG_LOCAL0', + :log_dir => false + ) + should contain_class('ceilometer::agent::auth').with( + :auth_password => 'secrete', + :auth_url => 'http://10.0.0.1:5000/v2.0', + :auth_region => 'MyRegion' + ) + end + + it 'configure ceilometer collector' do + should contain_class('ceilometer::collector') + end + + it 'configure ceilometer notification agent' do + should contain_class('ceilometer::agent::notification') + end + + it 'configure ceilometer alarm evaluator' do + should contain_class('ceilometer::alarm::evaluator') + end + + it 'configure ceilometer alarm notifier' do + should contain_class('ceilometer::alarm::notifier') + end + + it 'configure ceilometer-api' do + should contain_class('ceilometer::api').with( + :keystone_password => 'secrete', + :keystone_host => '10.0.0.1', + :keystone_protocol => 'http', + :host => '10.0.0.1' + ) + end + + it 'configure ceilometer-expirer' do + should contain_class('ceilometer::expirer').with( + :time_to_live => '2592000', + :minute => '0', + :hour => '0' + ) + end + + it 'synchronize ceilometer db indexes' do + should contain_class('ceilometer::db').with( + :sync_db => true, + :database_connection => 'mongodb://node1,node2,node3/ceilometer?replicaSet=ceilometer' + ) + end + end + + context 'on Debian platforms' do + let :facts do + { :osfamily => 'Debian', + :hostname => 'node1' } + end + + it_configures 'openstack telemetry server' + end + + context 'on RedHat platforms' do + let :facts do + { :osfamily => 'RedHat', + :hostname => 'node1' } + end + + it_configures 'openstack telemetry server' + end + +end