mirror of
https://github.com/vagrant-libvirt/vagrant-libvirt.git
synced 2025-02-25 18:55:27 -06:00
Turn on frozen string support in all files by using a comment to avoid enabling across dependencies where it may not work. Fixes: #1177
107 lines
3.6 KiB
Ruby
107 lines
3.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
require 'support/sharedcontext'
|
|
require 'support/libvirt_context'
|
|
|
|
require 'vagrant-libvirt/action/destroy_domain'
|
|
require 'vagrant-libvirt/util/byte_number'
|
|
|
|
|
|
describe VagrantPlugins::ProviderLibvirt::Action::CreateDomainVolume do
|
|
subject { described_class.new(app, env) }
|
|
|
|
include_context 'unit'
|
|
include_context 'libvirt'
|
|
|
|
let(:libvirt_domain) { double('libvirt_domain') }
|
|
let(:libvirt_client) { double('libvirt_client') }
|
|
let(:volumes) { double('volumes') }
|
|
let(:all) { double('all') }
|
|
let(:box_volume) { double('box_volume') }
|
|
|
|
def read_test_file(name)
|
|
File.read(File.join(File.dirname(__FILE__), File.basename(__FILE__, '.rb'), name))
|
|
end
|
|
|
|
describe '#call' do
|
|
before do
|
|
allow_any_instance_of(VagrantPlugins::ProviderLibvirt::Driver)
|
|
.to receive(:connection).and_return(connection)
|
|
allow(connection).to receive(:client).and_return(libvirt_client)
|
|
allow(connection).to receive(:volumes).and_return(volumes)
|
|
allow(volumes).to receive(:all).and_return(all)
|
|
allow(all).to receive(:first).and_return(box_volume)
|
|
allow(box_volume).to receive(:id).and_return(nil)
|
|
env[:domain_name] = 'test'
|
|
end
|
|
|
|
context 'when one disk' do
|
|
before do
|
|
allow(box_volume).to receive(:path).and_return('/test/path_0.img')
|
|
env[:box_volumes] = [
|
|
{
|
|
:name=>"test_vagrant_box_image_1.1.1_0.img",
|
|
:virtual_size=>ByteNumber.new(5368709120)
|
|
}
|
|
]
|
|
end
|
|
|
|
it 'should create one disk in storage' do
|
|
expected_xml = read_test_file('one_disk_in_storage.xml')
|
|
expect(ui).to receive(:info).with('Creating image (snapshot of base box volume).')
|
|
expect(logger).to receive(:debug).with('Using pool default for base box snapshot')
|
|
expect(volumes).to receive(:create).with(
|
|
:xml => expected_xml,
|
|
:pool_name => "default"
|
|
)
|
|
expect(subject.call(env)).to be_nil
|
|
end
|
|
end
|
|
|
|
context 'when three disks' do
|
|
before do
|
|
allow(box_volume).to receive(:path).and_return(
|
|
'/test/path_0.img',
|
|
'/test/path_1.img',
|
|
'/test/path_2.img',
|
|
)
|
|
env[:box_volumes] = [
|
|
{
|
|
:name=>"test_vagrant_box_image_1.1.1_0.img",
|
|
:virtual_size=>ByteNumber.new(5368709120)
|
|
},
|
|
{
|
|
:name=>"test_vagrant_box_image_1.1.1_1.img",
|
|
:virtual_size=>ByteNumber.new(10737423360)
|
|
},
|
|
{
|
|
:name=>"test_vagrant_box_image_1.1.1_2.img",
|
|
:virtual_size=>ByteNumber.new(21474836480)
|
|
}
|
|
]
|
|
end
|
|
|
|
it 'should create three disks in storage' do
|
|
expect(ui).to receive(:info).with('Creating image (snapshot of base box volume).')
|
|
expect(logger).to receive(:debug).with('Using pool default for base box snapshot')
|
|
expect(volumes).to receive(:create).with(
|
|
:xml => read_test_file('three_disks_in_storage_disk_0.xml'),
|
|
:pool_name => "default"
|
|
)
|
|
expect(logger).to receive(:debug).with('Using pool default for base box snapshot')
|
|
expect(volumes).to receive(:create).with(
|
|
:xml => read_test_file('three_disks_in_storage_disk_1.xml'),
|
|
:pool_name => "default"
|
|
)
|
|
expect(logger).to receive(:debug).with('Using pool default for base box snapshot')
|
|
expect(volumes).to receive(:create).with(
|
|
:xml => read_test_file('three_disks_in_storage_disk_2.xml'),
|
|
:pool_name => "default"
|
|
)
|
|
expect(subject.call(env)).to be_nil
|
|
end
|
|
end
|
|
end
|
|
end
|