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
let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) }
let(:node) { runner.node }
let(:chef_run) do
cached(:chef_run) do
runner.converge(described_recipe)
end
include_context 'tempest-stubs'
it 'installs tempest dependencies' do
%w(git curl libxslt-devel
libxml2-devel python-testrepository
libffi-devel python-devel
python-gabbi python-testscenarios
python-ddt).each do |pkg|
%w(
curl
git
libffi-devel
libxml2-devel
libxslt-devel
python-ddt
python-devel
python-gabbi
python-testrepository
python-testscenarios
).each do |pkg|
expect(chef_run).to upgrade_package(pkg)
end
end

View File

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

View File

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