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 1 minute 14.88 to 21.64 seconds

Change-Id: Iff9c0f56d17e8f2924b4126144ed116081278842
This commit is contained in:
Lance Albertson 2019-12-17 21:18:14 -08:00
parent 8ed82d41ad
commit 4c2082764b
3 changed files with 19 additions and 16 deletions

View File

@ -5,18 +5,25 @@ describe 'openstack-integration-test::setup' do
describe 'redhat' do describe 'redhat' do
let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) } let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) }
let(:node) { runner.node } let(:node) { runner.node }
let(:chef_run) do cached(:chef_run) do
runner.converge(described_recipe) runner.converge(described_recipe)
end end
include_context 'tempest-stubs' include_context 'tempest-stubs'
it 'installs tempest dependencies' do it 'installs tempest dependencies' do
%w(git curl libxslt-devel %w(
libxml2-devel python-testrepository curl
libffi-devel python-devel git
python-gabbi python-testscenarios libffi-devel
python-ddt).each do |pkg| libxml2-devel
libxslt-devel
python-ddt
python-devel
python-gabbi
python-testrepository
python-testscenarios
).each do |pkg|
expect(chef_run).to upgrade_package(pkg) expect(chef_run).to upgrade_package(pkg)
end end
end end

View File

@ -5,7 +5,7 @@ describe 'openstack-integration-test::setup' do
describe 'ubuntu' do describe 'ubuntu' do
let(:runner) { ChefSpec::SoloRunner.new(UBUNTU_OPTS) } let(:runner) { ChefSpec::SoloRunner.new(UBUNTU_OPTS) }
let(:node) { runner.node } let(:node) { runner.node }
let(:chef_run) do cached(:chef_run) do
runner.converge(described_recipe) runner.converge(described_recipe)
end end
@ -187,9 +187,8 @@ describe 'openstack-integration-test::setup' do
end end
end end
describe 'tempest.conf with HTTPS' do context 'tempest.conf with HTTPS' do
let(:runner) { ChefSpec::SoloRunner.new(UBUNTU_OPTS) } cached(:chef_run) do
let(:chef_run) do
runner.node.override['openstack']['endpoints']['internal']['identity']['scheme'] = 'https' runner.node.override['openstack']['endpoints']['internal']['identity']['scheme'] = 'https'
runner.converge(described_recipe) runner.converge(described_recipe)
end end

View File

@ -1,24 +1,21 @@
# encoding: UTF-8 # encoding: UTF-8
require 'chefspec' require 'chefspec'
require 'chefspec/berkshelf' require 'chefspec/berkshelf'
ChefSpec::Coverage.start! { add_filter 'openstack-integration-test' }
require 'chef/application' require 'chef/application'
RSpec.configure do |config| RSpec.configure do |config|
config.color = true config.color = true
config.formatter = :documentation config.formatter = :documentation
config.log_level = :fatal config.log_level = :warn
end end
REDHAT_OPTS = { REDHAT_OPTS = {
platform: 'redhat', platform: 'redhat',
version: '7.4', version: '7',
}.freeze }.freeze
UBUNTU_OPTS = { UBUNTU_OPTS = {
platform: 'ubuntu', platform: 'ubuntu',
version: '16.04', version: '18.04',
}.freeze }.freeze
shared_context 'tempest-stubs' do shared_context 'tempest-stubs' do