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. In addition: - Add missing swift_store RHEL ChefSpec test Speed was improved from 40.38 seconds to 28.25 seconds Change-Id: I42a56190cc090bd25900a1fbd5b5f160e5468533
This commit is contained in:
parent
12bfe6e13e
commit
b27882b9c0
|
@ -5,7 +5,7 @@ describe 'openstack-image::api' 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
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ require_relative 'spec_helper'
|
|||
describe 'openstack-image::identity_registration' 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
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ describe 'openstack-image::image_upload' do
|
|||
describe 'ubuntu' do
|
||||
let(:runner) { ChefSpec::SoloRunner.new(UBUNTU_OPTS.merge(step_into: ['openstack_image_image'])) }
|
||||
let(:node) { runner.node }
|
||||
let(:chef_run) do
|
||||
cached(:chef_run) do
|
||||
runner.converge(described_recipe)
|
||||
end
|
||||
|
||||
|
@ -31,62 +31,81 @@ describe 'openstack-image::image_upload' do
|
|||
)
|
||||
end
|
||||
|
||||
it 'raises error for unsupported image extension type' do
|
||||
node.override['openstack']['image']['upload_images'] = ['image1']
|
||||
node.override['openstack']['image']['upload_image']['image1'] = 'http://download.net/image.xxx'
|
||||
expect { chef_run }.to raise_error(ArgumentError)
|
||||
context 'raises error for unsupported image extension type' do
|
||||
cached(:chef_run) do
|
||||
node.override['openstack']['image']['upload_images'] = ['image1']
|
||||
node.override['openstack']['image']['upload_image']['image1'] = 'http://download.net/image.xxx'
|
||||
runner.converge(described_recipe)
|
||||
end
|
||||
it do
|
||||
expect { chef_run }.to raise_error(ArgumentError)
|
||||
end
|
||||
end
|
||||
|
||||
it 'uploads the tar image' do
|
||||
node.override['openstack']['image']['upload_images'] = ['imageName']
|
||||
node.override['openstack']['image']['upload_image']['imageName'] = 'http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-uec.tar.gz'
|
||||
stub_command('glance --insecure --os-username admin --os-password admin-pass --os-project-name admin --os-image-url http://127.0.0.1:9292 --os-auth-url http://127.0.0.1:5000/v3 --os-user-domain-name Default --os-project-domain-name Default image-list | grep imageName').and_return(false)
|
||||
expect(chef_run).to upload_openstack_image_image('Image setup for imageName').with(
|
||||
image_url: 'http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-uec.tar.gz',
|
||||
image_name: 'imageName',
|
||||
image_type: 'unknown',
|
||||
image_public: true
|
||||
)
|
||||
expect(chef_run).to run_bash('Uploading AMI image imageName')
|
||||
context 'uploads the tar image' do
|
||||
cached(:chef_run) do
|
||||
node.override['openstack']['image']['upload_images'] = ['imageName']
|
||||
node.override['openstack']['image']['upload_image']['imageName'] = 'http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-uec.tar.gz'
|
||||
runner.converge(described_recipe)
|
||||
end
|
||||
it do
|
||||
stub_command('glance --insecure --os-username admin --os-password admin-pass --os-project-name admin --os-image-url http://127.0.0.1:9292 --os-auth-url http://127.0.0.1:5000/v3 --os-user-domain-name Default --os-project-domain-name Default image-list | grep imageName').and_return(false)
|
||||
expect(chef_run).to upload_openstack_image_image('Image setup for imageName').with(
|
||||
image_url: 'http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-uec.tar.gz',
|
||||
image_name: 'imageName',
|
||||
image_type: 'unknown',
|
||||
image_public: true
|
||||
)
|
||||
expect(chef_run).to run_bash('Uploading AMI image imageName')
|
||||
end
|
||||
end
|
||||
|
||||
%w(vhd vmdk vdi iso raw).each do |image_type|
|
||||
it "uploads the #{image_type} image" do
|
||||
node.override['openstack']['image']['upload_images'] = ["#{image_type}_imageName"]
|
||||
node.override['openstack']['image']['upload_image']["#{image_type}_imageName"] = "image_file.#{image_type}"
|
||||
node.override['openstack']['image']['upload_image_type']["#{image_type}_imageName"] = image_type.to_s
|
||||
stub_command("glance --insecure --os-username admin --os-password admin-pass --os-project-name admin --os-image-url http://127.0.0.1:9292 --os-auth-url http://127.0.0.1:5000/v3 --os-user-domain-name Default --os-project-domain-name Default image-list | grep #{image_type}_imageName").and_return(false)
|
||||
expect(chef_run).to upload_openstack_image_image("Image setup for #{image_type}_imageName").with(
|
||||
image_url: "image_file.#{image_type}",
|
||||
image_name: "#{image_type}_imageName",
|
||||
image_type: image_type.to_s,
|
||||
context "uploads the #{image_type} image" do
|
||||
cached(:chef_run) do
|
||||
node.override['openstack']['image']['upload_images'] = ["#{image_type}_imageName"]
|
||||
node.override['openstack']['image']['upload_image']["#{image_type}_imageName"] = "image_file.#{image_type}"
|
||||
node.override['openstack']['image']['upload_image_type']["#{image_type}_imageName"] = image_type.to_s
|
||||
runner.converge(described_recipe)
|
||||
end
|
||||
it do
|
||||
stub_command("glance --insecure --os-username admin --os-password admin-pass --os-project-name admin --os-image-url http://127.0.0.1:9292 --os-auth-url http://127.0.0.1:5000/v3 --os-user-domain-name Default --os-project-domain-name Default image-list | grep #{image_type}_imageName").and_return(false)
|
||||
expect(chef_run).to upload_openstack_image_image("Image setup for #{image_type}_imageName").with(
|
||||
image_url: "image_file.#{image_type}",
|
||||
image_name: "#{image_type}_imageName",
|
||||
image_type: image_type.to_s,
|
||||
image_public: true
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'uploads the raw and vdi images' do
|
||||
cached(:chef_run) do
|
||||
node.override['openstack']['image']['upload_images'] = ['raw_imageName', 'vdi_imageName']
|
||||
node.override['openstack']['image']['upload_image']['raw_imageName'] = 'image_file.raw'
|
||||
node.override['openstack']['image']['upload_image_type']['raw_imageName'] = 'raw'
|
||||
node.override['openstack']['image']['upload_image']['vdi_imageName'] = 'image_file.vdi'
|
||||
node.override['openstack']['image']['upload_image_type']['vdi_imageName'] = 'vdi'
|
||||
runner.converge(described_recipe)
|
||||
end
|
||||
it do
|
||||
stub_command('glance --insecure --os-username admin --os-password admin-pass --os-project-name admin --os-image-url http://127.0.0.1:9292 --os-auth-url http://127.0.0.1:5000/v3 --os-user-domain-name Default --os-project-domain-name Default image-list | grep raw_imageName').and_return(false)
|
||||
stub_command('glance --insecure --os-username admin --os-password admin-pass --os-project-name admin --os-image-url http://127.0.0.1:9292 --os-auth-url http://127.0.0.1:5000/v3 --os-user-domain-name Default --os-project-domain-name Default image-list | grep vdi_imageName').and_return(false)
|
||||
expect(chef_run).to upload_openstack_image_image('Image setup for raw_imageName').with(
|
||||
image_url: 'image_file.raw',
|
||||
image_name: 'raw_imageName',
|
||||
image_type: 'raw',
|
||||
image_public: true
|
||||
)
|
||||
expect(chef_run).to upload_openstack_image_image('Image setup for vdi_imageName').with(
|
||||
image_url: 'image_file.vdi',
|
||||
image_name: 'vdi_imageName',
|
||||
image_type: 'vdi',
|
||||
image_public: true
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
it 'uploads the raw and vdi images' do
|
||||
node.override['openstack']['image']['upload_images'] = ['raw_imageName', 'vdi_imageName']
|
||||
node.override['openstack']['image']['upload_image']['raw_imageName'] = 'image_file.raw'
|
||||
node.override['openstack']['image']['upload_image_type']['raw_imageName'] = 'raw'
|
||||
node.override['openstack']['image']['upload_image']['vdi_imageName'] = 'image_file.vdi'
|
||||
node.override['openstack']['image']['upload_image_type']['vdi_imageName'] = 'vdi'
|
||||
stub_command('glance --insecure --os-username admin --os-password admin-pass --os-project-name admin --os-image-url http://127.0.0.1:9292 --os-auth-url http://127.0.0.1:5000/v3 --os-user-domain-name Default --os-project-domain-name Default image-list | grep raw_imageName').and_return(false)
|
||||
stub_command('glance --insecure --os-username admin --os-password admin-pass --os-project-name admin --os-image-url http://127.0.0.1:9292 --os-auth-url http://127.0.0.1:5000/v3 --os-user-domain-name Default --os-project-domain-name Default image-list | grep vdi_imageName').and_return(false)
|
||||
expect(chef_run).to upload_openstack_image_image('Image setup for raw_imageName').with(
|
||||
image_url: 'image_file.raw',
|
||||
image_name: 'raw_imageName',
|
||||
image_type: 'raw',
|
||||
image_public: true
|
||||
)
|
||||
expect(chef_run).to upload_openstack_image_image('Image setup for vdi_imageName').with(
|
||||
image_url: 'image_file.vdi',
|
||||
image_name: 'vdi_imageName',
|
||||
image_type: 'vdi',
|
||||
image_public: true
|
||||
)
|
||||
end
|
||||
|
||||
# TODO(MRV) Need to add provider method testers in here.
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,24 +1,21 @@
|
|||
# encoding: UTF-8
|
||||
require 'chefspec'
|
||||
require 'chefspec/berkshelf'
|
||||
|
||||
ChefSpec::Coverage.start! { add_filter 'openstack-image' }
|
||||
|
||||
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
|
||||
|
||||
# Helper methods
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
# encoding: UTF-8
|
||||
require_relative 'spec_helper'
|
||||
|
||||
describe 'openstack-image::swift_store' do
|
||||
describe 'ubuntu' do
|
||||
let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) }
|
||||
let(:node) { runner.node }
|
||||
cached(:chef_run) do
|
||||
runner.converge(described_recipe)
|
||||
end
|
||||
include_context 'image-stubs'
|
||||
it do
|
||||
expect(chef_run).to upgrade_package('openstack-swift')
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue