From ef3ca21d78b51cb5608cc54d42ad82c9b9a11ea4 Mon Sep 17 00:00:00 2001 From: phongdly Date: Tue, 26 Jan 2016 14:14:30 -0800 Subject: [PATCH 1/2] (FM-4615) LVM: create automated tests for filesystem --- tests/beaker/lib/lvm_helper.rb | 23 ++++++++ .../create_filesystem_non-existing-format.rb | 55 +++++++++++++++++ ...te_filesystem_with_ensure_property_ext2.rb | 58 ++++++++++++++++++ ...eate_filesystem_with_param_fs_type_ext4.rb | 58 ++++++++++++++++++ .../create_filesystem_with_param_name_ext3.rb | 58 ++++++++++++++++++ .../create_filesystem_with_param_options.rb | 59 +++++++++++++++++++ 6 files changed, 311 insertions(+) create mode 100755 tests/beaker/tests/create_filesystem_non-existing-format.rb create mode 100755 tests/beaker/tests/create_filesystem_with_ensure_property_ext2.rb create mode 100755 tests/beaker/tests/create_filesystem_with_param_fs_type_ext4.rb create mode 100755 tests/beaker/tests/create_filesystem_with_param_name_ext3.rb create mode 100755 tests/beaker/tests/create_filesystem_with_param_options.rb 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..06467d3d --- /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 --graph --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..7dce1cac --- /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 --graph --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..b9addcd8 --- /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 --graph --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..93bd1d74 --- /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 --graph --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..60c88436 --- /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 - 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 => 'ext2', + 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 --graph --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 From c6d1e1222c0096feaa7aac3edd972ac5807b199c Mon Sep 17 00:00:00 2001 From: phongdly Date: Tue, 26 Jan 2016 17:07:16 -0800 Subject: [PATCH 2/2] (FM-4615) updated test cases and file format --- .../beaker/tests/create_filesystem_non-existing-format.rb | 2 +- .../tests/create_filesystem_with_ensure_property_ext2.rb | 2 +- .../tests/create_filesystem_with_param_fs_type_ext4.rb | 2 +- .../tests/create_filesystem_with_param_name_ext3.rb | 2 +- .../beaker/tests/create_filesystem_with_param_options.rb | 8 ++++---- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/beaker/tests/create_filesystem_non-existing-format.rb b/tests/beaker/tests/create_filesystem_non-existing-format.rb index 06467d3d..8d319bf5 100755 --- a/tests/beaker/tests/create_filesystem_non-existing-format.rb +++ b/tests/beaker/tests/create_filesystem_non-existing-format.rb @@ -48,7 +48,7 @@ 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 --graph --environment production'), :acceptable_exit_codes => [1,6]) do |result| + 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 diff --git a/tests/beaker/tests/create_filesystem_with_ensure_property_ext2.rb b/tests/beaker/tests/create_filesystem_with_ensure_property_ext2.rb index 7dce1cac..ad82f126 100755 --- a/tests/beaker/tests/create_filesystem_with_ensure_property_ext2.rb +++ b/tests/beaker/tests/create_filesystem_with_ensure_property_ext2.rb @@ -48,7 +48,7 @@ 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 --graph --environment production'), :acceptable_exit_codes => [0,2]) do |result| + 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 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 index b9addcd8..655173ac 100755 --- a/tests/beaker/tests/create_filesystem_with_param_fs_type_ext4.rb +++ b/tests/beaker/tests/create_filesystem_with_param_fs_type_ext4.rb @@ -48,7 +48,7 @@ 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 --graph --environment production'), :acceptable_exit_codes => [0,2]) do |result| + 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 diff --git a/tests/beaker/tests/create_filesystem_with_param_name_ext3.rb b/tests/beaker/tests/create_filesystem_with_param_name_ext3.rb index 93bd1d74..e1d40f2e 100755 --- a/tests/beaker/tests/create_filesystem_with_param_name_ext3.rb +++ b/tests/beaker/tests/create_filesystem_with_param_name_ext3.rb @@ -48,7 +48,7 @@ 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 --graph --environment production'), :acceptable_exit_codes => [0,2]) do |result| + 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 diff --git a/tests/beaker/tests/create_filesystem_with_param_options.rb b/tests/beaker/tests/create_filesystem_with_param_options.rb index 60c88436..13ce51fd 100755 --- a/tests/beaker/tests/create_filesystem_with_param_options.rb +++ b/tests/beaker/tests/create_filesystem_with_param_options.rb @@ -2,7 +2,7 @@ require 'lvm_helper' require 'securerandom' -test_name "FM-4615 - C96568 - create filesystem with parameter 'fs_type' and ext4 format" +test_name "FM-4615 - C96570 - create filesystem with parameter 'options' and ext4 format" #initilize pv = '/dev/sdc' @@ -37,7 +37,7 @@ filesystem {'Create_filesystem': name => '/dev/#{vg}/#{lv}', ensure => present, - fs_type => 'ext2', + fs_type => 'ext4', options => '-b 4096 -E stride=32,stripe-width=64', } MANIFEST @@ -49,11 +49,11 @@ 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 --graph --environment production'), :acceptable_exit_codes => [0,2]) do |result| + 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') + is_correct_format?(agent, vg, lv, 'ext4') end end