diff --git a/tests/beaker/lib/lvm_helper.rb b/tests/beaker/lib/lvm_helper.rb index 587cc5dc..06d0279b 100644 --- a/tests/beaker/lib/lvm_helper.rb +++ b/tests/beaker/lib/lvm_helper.rb @@ -36,6 +36,29 @@ def verify_if_created?(agent, resource_type, resource_name, vg=nil, properties=n end end +# Verify if a filesystem resource type is successfully created +# +# ==== Attributes +# +# * +volume_group+ - resorce type name, i.e 'VolumeGroup_1234' +# * +logical_volume+ - resorce type name, i.e 'LogicalVolume_a2b3' +# * +fromat_type+ - type of the format of the logical volume, i.e 'ext3' +# +# ==== Returns +# +# +nil+ +# +# ==== Raises +# assert_match failure message +# ==== Examples +# +# is_correct_format?(agent, VolumeGroup_1234, LogicalVolume_a2b3, ext3) +def is_correct_format?(agent, volume_group, logical_volume, format_type) + on(agent, "file -sL /dev/#{volume_group}/#{logical_volume}") do |result| + assert_match(/#{format_type}/, result.stdout, "Unexpected error was detected") + end +end + # Clean the box after each test, make sure the newly created logical volumes, volume groups, # and physical volumes are removed at the end of each test to make the server ready for the # next test case. diff --git a/tests/beaker/tests/create_filesystem_non-existing-format.rb b/tests/beaker/tests/create_filesystem_non-existing-format.rb new file mode 100755 index 00000000..8d319bf5 --- /dev/null +++ b/tests/beaker/tests/create_filesystem_non-existing-format.rb @@ -0,0 +1,55 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4615 - C97168 - create non-existing format filesystem" + +#initilize +pv = '/dev/sdc' +vg = ("VolumeGroup_" + SecureRandom.hex(2)) +lv = ("LogicalVolume_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + agents.each do |agent| + remove_all(agent, pv, vg, lv) + end + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv}': + ensure => present, +} +-> +volume_group {'#{vg}': + ensure => present, + physical_volumes => '#{pv}', +} +-> +logical_volume{'#{lv}': + ensure => present, + volume_group => '#{vg}', + size => '20M', +} +-> +filesystem {'Create_filesystem': + name => '/dev/#{vg}/#{lv}', + ensure => present, + fs_type => 'non-existing-format', +} +MANIFEST + +step 'Inject "site.pp" on Master' +site_pp = create_site_pp(master, :manifest => pp) +inject_site_pp(master, get_site_pp_path(master), site_pp) + +step 'Run Puppet Agent to create logical volumes' +confine_block(:except, :roles => %w{master dashboard database}) do + agents.each do |agent| + on(agent, puppet('agent -t --environment production'), :acceptable_exit_codes => [1,6]) do |result| + assert_match(/change from absent to present failed/, result.stderr, 'Unexpected error was detected!') + end + end +end diff --git a/tests/beaker/tests/create_filesystem_with_ensure_property_ext2.rb b/tests/beaker/tests/create_filesystem_with_ensure_property_ext2.rb new file mode 100755 index 00000000..ad82f126 --- /dev/null +++ b/tests/beaker/tests/create_filesystem_with_ensure_property_ext2.rb @@ -0,0 +1,58 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4615 - C96567 - create filesystem with property 'ensure' and ext2 format" + +#initilize +pv = '/dev/sdc' +vg = ("VolumeGroup_" + SecureRandom.hex(2)) +lv = ("LogicalVolume_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + agents.each do |agent| + remove_all(agent, pv, vg, lv) + end + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv}': + ensure => present, +} +-> +volume_group {'#{vg}': + ensure => present, + physical_volumes => '#{pv}', +} +-> +logical_volume{'#{lv}': + ensure => present, + volume_group => '#{vg}', + size => '20M', +} +-> +filesystem {'Create_filesystem': + name => '/dev/#{vg}/#{lv}', + ensure => present, + fs_type => 'ext2', +} +MANIFEST + +step 'Inject "site.pp" on Master' +site_pp = create_site_pp(master, :manifest => pp) +inject_site_pp(master, get_site_pp_path(master), site_pp) + +step 'Run Puppet Agent to create logical volumes' +confine_block(:except, :roles => %w{master dashboard database}) do + agents.each do |agent| + on(agent, puppet('agent -t --environment production'), :acceptable_exit_codes => [0,2]) do |result| + assert_no_match(/Error:/, result.stderr, 'Unexpected error was detected!') + end + + step "Verify the logical volume has correct format type: #{lv}" + is_correct_format?(agent, vg, lv, 'ext2') + end +end diff --git a/tests/beaker/tests/create_filesystem_with_param_fs_type_ext4.rb b/tests/beaker/tests/create_filesystem_with_param_fs_type_ext4.rb new file mode 100755 index 00000000..655173ac --- /dev/null +++ b/tests/beaker/tests/create_filesystem_with_param_fs_type_ext4.rb @@ -0,0 +1,58 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4615 - C96568 - create filesystem with parameter 'fs_type' and ext4 format" + +#initilize +pv = '/dev/sdc' +vg = ("VolumeGroup_" + SecureRandom.hex(2)) +lv = ("LogicalVolume_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + agents.each do |agent| + remove_all(agent, pv, vg, lv) + end + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv}': + ensure => present, +} +-> +volume_group {'#{vg}': + ensure => present, + physical_volumes => '#{pv}', +} +-> +logical_volume{'#{lv}': + ensure => present, + volume_group => '#{vg}', + size => '20M', +} +-> +filesystem {'Create_filesystem': + name => '/dev/#{vg}/#{lv}', + ensure => present, + fs_type => 'ext4', +} +MANIFEST + +step 'Inject "site.pp" on Master' +site_pp = create_site_pp(master, :manifest => pp) +inject_site_pp(master, get_site_pp_path(master), site_pp) + +step 'Run Puppet Agent to create logical volumes' +confine_block(:except, :roles => %w{master dashboard database}) do + agents.each do |agent| + on(agent, puppet('agent -t --environment production'), :acceptable_exit_codes => [0,2]) do |result| + assert_no_match(/Error:/, result.stderr, 'Unexpected error was detected!') + end + + step "Verify the logical volume has correct format type: #{lv}" + is_correct_format?(agent, vg, lv, 'ext4') + end +end diff --git a/tests/beaker/tests/create_filesystem_with_param_name_ext3.rb b/tests/beaker/tests/create_filesystem_with_param_name_ext3.rb new file mode 100755 index 00000000..e1d40f2e --- /dev/null +++ b/tests/beaker/tests/create_filesystem_with_param_name_ext3.rb @@ -0,0 +1,58 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4615 - C96566 - create filesystem with parameter 'name' and ext3 format" + +#initilize +pv = '/dev/sdc' +vg = ("VolumeGroup_" + SecureRandom.hex(2)) +lv = ("LogicalVolume_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + agents.each do |agent| + remove_all(agent, pv, vg, lv) + end + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv}': + ensure => present, +} +-> +volume_group {'#{vg}': + ensure => present, + physical_volumes => '#{pv}', +} +-> +logical_volume{'#{lv}': + ensure => present, + volume_group => '#{vg}', + size => '20M', +} +-> +filesystem {'Create_filesystem': + name => '/dev/#{vg}/#{lv}', + ensure => present, + fs_type => 'ext3', +} +MANIFEST + +step 'Inject "site.pp" on Master' +site_pp = create_site_pp(master, :manifest => pp) +inject_site_pp(master, get_site_pp_path(master), site_pp) + +step 'Run Puppet Agent to create logical volumes' +confine_block(:except, :roles => %w{master dashboard database}) do + agents.each do |agent| + on(agent, puppet('agent -t --environment production'), :acceptable_exit_codes => [0,2]) do |result| + assert_no_match(/Error:/, result.stderr, 'Unexpected error was detected!') + end + + step "Verify the logical volume has correct format type: #{lv}" + is_correct_format?(agent, vg, lv, 'ext3') + end +end diff --git a/tests/beaker/tests/create_filesystem_with_param_options.rb b/tests/beaker/tests/create_filesystem_with_param_options.rb new file mode 100755 index 00000000..13ce51fd --- /dev/null +++ b/tests/beaker/tests/create_filesystem_with_param_options.rb @@ -0,0 +1,59 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4615 - C96570 - create filesystem with parameter 'options' and ext4 format" + +#initilize +pv = '/dev/sdc' +vg = ("VolumeGroup_" + SecureRandom.hex(2)) +lv = ("LogicalVolume_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + agents.each do |agent| + remove_all(agent, pv, vg, lv) + end + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv}': + ensure => present, +} +-> +volume_group {'#{vg}': + ensure => present, + physical_volumes => '#{pv}', +} +-> +logical_volume{'#{lv}': + ensure => present, + volume_group => '#{vg}', + size => '20M', +} +-> +filesystem {'Create_filesystem': + name => '/dev/#{vg}/#{lv}', + ensure => present, + fs_type => 'ext4', + options => '-b 4096 -E stride=32,stripe-width=64', +} +MANIFEST + +step 'Inject "site.pp" on Master' +site_pp = create_site_pp(master, :manifest => pp) +inject_site_pp(master, get_site_pp_path(master), site_pp) + +step 'Run Puppet Agent to create logical volumes' +confine_block(:except, :roles => %w{master dashboard database}) do + agents.each do |agent| + on(agent, puppet('agent -t --environment production'), :acceptable_exit_codes => [0,2]) do |result| + assert_no_match(/Error:/, result.stderr, 'Unexpected error was detected!') + end + + step "Verify the logical volume has correct format type: #{lv}" + is_correct_format?(agent, vg, lv, 'ext4') + end +end