From 3b508052a18a75dd081eb382f58cb5806ba6308f Mon Sep 17 00:00:00 2001 From: Lance Albertson Date: Sat, 7 Dec 2019 21:30:10 -0800 Subject: [PATCH] Improve ChefSpec test speed by enabling caching This updates all references of let(:chef_run) to cached(:chef_run) to speed up tests. By doing this, we have to create a new cached(:chef_run) block whenever we need to adjust node attributes for testing. Speed was improved from 24.75 seconds to 14.75 seconds. Change-Id: Ib5bea5c649a80677b673099a55c1c965b9d38390 --- spec/rabbitmq-server-redhat_spec.rb | 2 +- spec/rabbitmq-server_spec.rb | 56 +++++++++++++++++------------ spec/spec_helper.rb | 11 +++--- 3 files changed, 41 insertions(+), 28 deletions(-) diff --git a/spec/rabbitmq-server-redhat_spec.rb b/spec/rabbitmq-server-redhat_spec.rb index 60f51be..664fd35 100644 --- a/spec/rabbitmq-server-redhat_spec.rb +++ b/spec/rabbitmq-server-redhat_spec.rb @@ -5,7 +5,7 @@ describe 'openstack-ops-messaging::rabbitmq-server' do describe 'redhat' do let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) } let(:node) { runner.node } - let(:chef_run) { runner.converge(described_recipe) } + cached(:chef_run) { runner.converge(described_recipe) } include_context 'ops_messaging_stubs' diff --git a/spec/rabbitmq-server_spec.rb b/spec/rabbitmq-server_spec.rb index 133d34b..783da02 100644 --- a/spec/rabbitmq-server_spec.rb +++ b/spec/rabbitmq-server_spec.rb @@ -5,7 +5,7 @@ describe 'openstack-ops-messaging::rabbitmq-server' do describe 'ubuntu' do let(:runner) { ChefSpec::SoloRunner.new(UBUNTU_OPTS) } let(:node) { runner.node } - let(:chef_run) { runner.converge(described_recipe) } + cached(:chef_run) { runner.converge(described_recipe) } include_context 'ops_messaging_stubs' @@ -18,22 +18,28 @@ describe 'openstack-ops-messaging::rabbitmq-server' do expect(chef_run.node['rabbitmq']['use_distro_version']).to be_truthy end - it 'overrides rabbit and openstack image attributes' do - node.override['openstack']['bind_service']['mq']['interface'] = 'enp0s3' - node.override['openstack']['bind_service']['mq']['port'] = '4242' - node.override['openstack']['endpoints']['mq']['port'] = '4242' - node.override['openstack']['mq']['user'] = 'foo' - node.override['openstack']['mq']['vhost'] = '/bar' - expect(chef_run.node['openstack']['mq']['listen']).to eq('33.44.55.66') - expect(chef_run.node['openstack']['mq']['image']['rabbit']['port']).to eq('4242') - expect(chef_run.node['openstack']['mq']['image']['rabbit']['userid']).to eq('foo') - expect(chef_run.node['openstack']['mq']['image']['rabbit']['vhost']).to eq('/bar') + context 'override rabbit and openstack image attributes' do + cached(:chef_run) do + node.override['openstack']['bind_service']['mq']['interface'] = 'enp0s3' + node.override['openstack']['bind_service']['mq']['port'] = '4242' + node.override['openstack']['endpoints']['mq']['port'] = '4242' + node.override['openstack']['mq']['user'] = 'foo' + node.override['openstack']['mq']['vhost'] = '/bar' + runner.converge(described_recipe) + end + it 'overrides rabbit and openstack image attributes' do + expect(chef_run.node['openstack']['mq']['listen']).to eq('33.44.55.66') + expect(chef_run.node['openstack']['mq']['image']['rabbit']['port']).to eq('4242') + expect(chef_run.node['openstack']['mq']['image']['rabbit']['userid']).to eq('foo') + expect(chef_run.node['openstack']['mq']['image']['rabbit']['vhost']).to eq('/bar') + end end - describe 'rabbit ssl' do - before do + context 'rabbit ssl' do + cached(:chef_run) do node.override['openstack']['mq']['rabbitmq']['use_ssl'] = true node.override['openstack']['bind_service']['mq']['port'] = '1234' + runner.converge(described_recipe) end it 'overrides rabbit ssl attributes' do @@ -41,11 +47,10 @@ describe 'openstack-ops-messaging::rabbitmq-server' do end end - describe 'cluster' do - before do - node.override['openstack']['mq'] = { - 'cluster' => true, - } + context 'cluster' do + cached(:chef_run) do + node.override['openstack']['mq'] = { 'cluster' => true } + runner.converge(described_recipe) end it 'overrides cluster' do @@ -64,9 +69,15 @@ describe 'openstack-ops-messaging::rabbitmq-server' do ) end - it 'does not search for cluster_disk_nodes' do - node.override['openstack']['mq']['search_for_cluster_disk_nodes'] = false - expect(chef_run.node['rabbitmq']['clustering']['cluster_nodes']).to eq([]) + context 'search_for_cluster_disk_nodes false' do + cached(:chef_run) do + node.override['openstack']['mq'] = { 'cluster' => true } + node.override['openstack']['mq']['search_for_cluster_disk_nodes'] = false + runner.converge(described_recipe) + end + it 'does not search for cluster_disk_nodes' do + expect(chef_run.node['rabbitmq']['clustering']['cluster_nodes']).to eq([]) + end end end @@ -77,9 +88,10 @@ describe 'openstack-ops-messaging::rabbitmq-server' do describe 'lwrps' do context 'custom mq attributes' do - before do + cached(:chef_run) do node.override['openstack']['mq']['user'] = 'not-a-guest' node.override['openstack']['mq']['vhost'] = '/foo' + runner.converge(described_recipe) end it 'adds openstack rabbit user' do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index b466c2c..b2342dc 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -2,18 +2,19 @@ require 'chefspec' require 'chefspec/berkshelf' -ChefSpec::Coverage.start! { add_filter 'openstack-ops-messaging' } +RSpec.configure do |config| + config.color = true + config.formatter = :documentation + config.log_level = :warn +end -LOG_LEVEL = :fatal REDHAT_OPTS = { platform: 'redhat', - version: '7.3', - log_level: LOG_LEVEL, + version: '7', }.freeze UBUNTU_OPTS = { platform: 'ubuntu', version: '16.04', - log_level: LOG_LEVEL, }.freeze shared_context 'ops_messaging_stubs' do