From ca8e62e38a2e788cd24ae4acc4d980acb230da06 Mon Sep 17 00:00:00 2001 From: phongdly Date: Thu, 21 Jan 2016 09:54:27 -0800 Subject: [PATCH 1/3] (FM-4614) LVM automated test --- Gemfile | 8 ++ tests/beaker/configs/ec2_config.yml | 30 +++++++ tests/beaker/configs/full_env.yml | 30 +++++++ tests/beaker/configs/fusion.yml | 22 +++++ tests/beaker/configs/redhat-6-64mda.yml | 23 +++++ tests/beaker/lib/lvm_helper.rb | 32 +++++++ tests/beaker/pre-suite/00_pe_install.rb | 15 ++++ .../beaker/pre-suite/01_lvm_module_install.rb | 7 ++ tests/beaker/pre-suite/02_add_extra_hdd.rb | 31 +++++++ .../test_run_scripts/integration_tests.sh | 27 ++++++ .../tests/create_lv_with_param_alloc.rb | 85 +++++++++++++++++++ .../tests/create_lv_with_param_extents.rb | 51 +++++++++++ .../create_lv_with_param_initial_size.rb | 51 +++++++++++ .../beaker/tests/create_lv_with_param_name.rb | 54 ++++++++++++ .../tests/create_lv_with_param_no_sync.rb | 50 +++++++++++ .../tests/create_lv_with_param_readahead.rb | 50 +++++++++++ .../tests/create_lv_with_param_region_size.rb | 53 ++++++++++++ .../create_lv_with_param_size_is_minsize.rb | 56 ++++++++++++ .../tests/create_lv_with_param_stripes.rb | 53 ++++++++++++ .../tests/create_lv_with_param_stripesize.rb | 55 ++++++++++++ .../tests/create_lv_with_property_mirror.rb | 52 ++++++++++++ .../create_lv_with_property_mirrorlog.rb | 68 +++++++++++++++ .../tests/create_lv_without_param_name.rb | 53 ++++++++++++ .../beaker/tests/create_pv_param_unless_vg.rb | 83 ++++++++++++++++++ tests/beaker/tests/create_pv_w_param_force.rb | 36 ++++++++ .../beaker/tests/create_pv_with_param_name.rb | 36 ++++++++ tests/beaker/tests/create_pv_wo_param_name.rb | 35 ++++++++ .../tests/create_vg_param_createonly.rb | 46 ++++++++++ .../create_vg_property_logical_volumes.rb | 51 +++++++++++ .../create_vg_property_physical_volumes.rb | 46 ++++++++++ .../tests/create_vg_w_2_physical_volumes.rb | 47 ++++++++++ tests/beaker/tests/create_vg_w_param_name.rb | 46 ++++++++++ tests/beaker/tests/create_vg_wo_param_name.rb | 45 ++++++++++ tests/beaker/tests/remove_lv.rb | 79 +++++++++++++++++ tests/beaker/tests/remove_pv.rb | 64 ++++++++++++++ tests/beaker/tests/remove_vg.rb | 71 ++++++++++++++++ 36 files changed, 1641 insertions(+) create mode 100644 tests/beaker/configs/ec2_config.yml create mode 100644 tests/beaker/configs/full_env.yml create mode 100644 tests/beaker/configs/fusion.yml create mode 100644 tests/beaker/configs/redhat-6-64mda.yml create mode 100644 tests/beaker/lib/lvm_helper.rb create mode 100755 tests/beaker/pre-suite/00_pe_install.rb create mode 100755 tests/beaker/pre-suite/01_lvm_module_install.rb create mode 100755 tests/beaker/pre-suite/02_add_extra_hdd.rb create mode 100755 tests/beaker/test_run_scripts/integration_tests.sh create mode 100755 tests/beaker/tests/create_lv_with_param_alloc.rb create mode 100755 tests/beaker/tests/create_lv_with_param_extents.rb create mode 100755 tests/beaker/tests/create_lv_with_param_initial_size.rb create mode 100755 tests/beaker/tests/create_lv_with_param_name.rb create mode 100755 tests/beaker/tests/create_lv_with_param_no_sync.rb create mode 100755 tests/beaker/tests/create_lv_with_param_readahead.rb create mode 100755 tests/beaker/tests/create_lv_with_param_region_size.rb create mode 100755 tests/beaker/tests/create_lv_with_param_size_is_minsize.rb create mode 100755 tests/beaker/tests/create_lv_with_param_stripes.rb create mode 100755 tests/beaker/tests/create_lv_with_param_stripesize.rb create mode 100755 tests/beaker/tests/create_lv_with_property_mirror.rb create mode 100755 tests/beaker/tests/create_lv_with_property_mirrorlog.rb create mode 100755 tests/beaker/tests/create_lv_without_param_name.rb create mode 100755 tests/beaker/tests/create_pv_param_unless_vg.rb create mode 100755 tests/beaker/tests/create_pv_w_param_force.rb create mode 100755 tests/beaker/tests/create_pv_with_param_name.rb create mode 100755 tests/beaker/tests/create_pv_wo_param_name.rb create mode 100755 tests/beaker/tests/create_vg_param_createonly.rb create mode 100755 tests/beaker/tests/create_vg_property_logical_volumes.rb create mode 100755 tests/beaker/tests/create_vg_property_physical_volumes.rb create mode 100755 tests/beaker/tests/create_vg_w_2_physical_volumes.rb create mode 100755 tests/beaker/tests/create_vg_w_param_name.rb create mode 100755 tests/beaker/tests/create_vg_wo_param_name.rb create mode 100755 tests/beaker/tests/remove_lv.rb create mode 100755 tests/beaker/tests/remove_pv.rb create mode 100755 tests/beaker/tests/remove_vg.rb diff --git a/Gemfile b/Gemfile index 8340ff8a..26a687e6 100644 --- a/Gemfile +++ b/Gemfile @@ -19,4 +19,12 @@ gem 'puppet-lint-unquoted_string-check', :require => false if RUBY_VERSION < '2.0' gem 'mime-types', '<3.0', :require => false end + +group :system_tests do + if beaker_version = ENV['BEAKER_VERSION'] + gem 'beaker', *location_for(beaker_version) + end + gem 'beaker-puppet_install_helper', :require => false + gem 'master_manipulator', '1.1.2', :require => false +end # vim:ft=ruby diff --git a/tests/beaker/configs/ec2_config.yml b/tests/beaker/configs/ec2_config.yml new file mode 100644 index 00000000..151667c1 --- /dev/null +++ b/tests/beaker/configs/ec2_config.yml @@ -0,0 +1,30 @@ + +HOSTS: + pemaster: + roles: + - master + - dashboard + - database + - agent + vmname: centos-7-x86-64-west + user: ec2-user + platform: el-7-x86_64 + hypervisor: ec2 + amisize: m3.large + snapshot: pe + peagent: + roles: + - agent + - frictionless + vmname: centos-7-x86-64-west + user: ec2-user + platform: el-7-x86_64 + hypervisor: ec2 + amisize: m3.large + volume_size: 50 + snapshot: pe +CONFIG: + nfs_server: none + consoleport: 443 + pe_dir: puppetlabs-websphere_application_server/beaker/files + pe_ver: 2015.2.3 diff --git a/tests/beaker/configs/full_env.yml b/tests/beaker/configs/full_env.yml new file mode 100644 index 00000000..baa8b16f --- /dev/null +++ b/tests/beaker/configs/full_env.yml @@ -0,0 +1,30 @@ +HOSTS: + puppet-centos: + roles: + - master + - database + - dashboard + - agent + platform: el-6-x86_64 + box : puppetlabs/centos-6.6-64-nocm + hypervisor : vagrant + app-centos: + roles: + - agent + platform: el-6-x86_64 + box : puppetlabs/centos-6.6-64-nocm + hypervisor : vagrant + dmgr-centos: + roles: + - agent + platform: el-6-x86_64 + box : puppetlabs/centos-6.6-64-nocm + hypervisor : vagrant + ihs-centos: + roles: + - agent + platform: el-6-x86_64 + box : puppetlabs/centos-6.6-64-nocm + hypervisor : vagrant +CONFIG: + pe_dir: http://neptune.delivery.puppetlabs.net/3.8/ci-ready/ diff --git a/tests/beaker/configs/fusion.yml b/tests/beaker/configs/fusion.yml new file mode 100644 index 00000000..38fefa56 --- /dev/null +++ b/tests/beaker/configs/fusion.yml @@ -0,0 +1,22 @@ +HOSTS: + puppet: + roles: + - master + - dashboard + - database + - agent + platform: el-6-x86_64 + snapshot: master_ankeny + hypervisor : fusion + websphere: + roles: + - agent + - frictionless + platform: el-6-x86_64 + snapshot: agent_ankeny + hypervisor : fusion + +CONFIG: + ssh: + auth_methods: ["password", "publickey"] + password: puppet diff --git a/tests/beaker/configs/redhat-6-64mda.yml b/tests/beaker/configs/redhat-6-64mda.yml new file mode 100644 index 00000000..adbef041 --- /dev/null +++ b/tests/beaker/configs/redhat-6-64mda.yml @@ -0,0 +1,23 @@ +HOSTS: + redhat-6-x86_64: + roles: + - master + - dashboard + - database + - agent + platform: el-6-x86_64 + template: redhat-6-x86_64 + hypervisor: vcloud + redhat-6-x86_64-agent: + roles: + - agent + platform: el-6-x86_64 + template: redhat-6-x86_64 + hypervisor: vcloud +CONFIG: + nfs_server: none + consoleport: 443 + datastore: instance0 + folder: Delivery/Quality Assurance/Enterprise/Dynamic + resourcepool: delivery/Quality Assurance/Enterprise/Dynamic + pooling_api: http://vcloud.delivery.puppetlabs.net/ \ No newline at end of file diff --git a/tests/beaker/lib/lvm_helper.rb b/tests/beaker/lib/lvm_helper.rb new file mode 100644 index 00000000..6988d7af --- /dev/null +++ b/tests/beaker/lib/lvm_helper.rb @@ -0,0 +1,32 @@ +# Verify if a physical volume, volume group, logical volume, or filesystem resource type is created +# +# ==== Attributes +# +# * +resource_type+ - resorce type, i.e 'physical_volume', 'volume_group', 'logical_volume', or 'filesystem' +# * +resource_name+ - The name of resource type, i.e '/dev/sdb' for physical volume, vg_1234 for volume group +# +# ==== Returns +# +# +nil+ +# +# ==== Raises +# assert_match failure message +# ==== Examples +# +# verify_if_created?(agent, 'physical_volume', /dev/sdb') +def verify_if_created?(agent, resource_type, resource_name) + case resource_type + when 'physical_volume' + on(agent, "pvdisplay") do |result| + assert_match(/#{resource_name}/, result.stdout, 'Unexpected error was detected') + end + when 'volume_group' + on(agent, "vgdisplay") do |result| + assert_match(/#{resource_name}/, result.stdout, 'Unexpected error was detected') + end + when 'logical_volume' + on(agent, "lvdisplay") do |result| + assert_match(/#{resource_name}/, result.stdout, 'Unexpected error was detected') + end + end +end diff --git a/tests/beaker/pre-suite/00_pe_install.rb b/tests/beaker/pre-suite/00_pe_install.rb new file mode 100755 index 00000000..41647175 --- /dev/null +++ b/tests/beaker/pre-suite/00_pe_install.rb @@ -0,0 +1,15 @@ +require 'master_manipulator' +test_name 'FM-3808 - Cxx - Install Puppet Enterprise' + +# Init +step 'Install PE' +install_pe + +step 'Disable Node Classifier' +disable_node_classifier(master) + +step 'Disable Environment Caching' +disable_env_cache(master) + +step 'Restart Puppet Server' +restart_puppet_server(master) diff --git a/tests/beaker/pre-suite/01_lvm_module_install.rb b/tests/beaker/pre-suite/01_lvm_module_install.rb new file mode 100755 index 00000000..6d39c0ce --- /dev/null +++ b/tests/beaker/pre-suite/01_lvm_module_install.rb @@ -0,0 +1,7 @@ +test_name 'FM-4614 - C97171 - Install the LVM module' + +step 'Install LVM Module Dependencies' +on(master, puppet('module install puppetlabs-stdlib')) + +step 'Install LVM Module' +on(master, puppet('module install puppetlabs-lvm')) diff --git a/tests/beaker/pre-suite/02_add_extra_hdd.rb b/tests/beaker/pre-suite/02_add_extra_hdd.rb new file mode 100755 index 00000000..3b0e3462 --- /dev/null +++ b/tests/beaker/pre-suite/02_add_extra_hdd.rb @@ -0,0 +1,31 @@ +test_name 'Add extra hard drive for LVM testing' + + +# Get the auth_token from ENV +auth_tok = ENV['AUTH_TOKEN'] + +# On the PE agent where LVM running +confine_block(:except, :roles => %w{master dashboard database}) do + agents.each do |agent| + step 'adding an extra disk' + on(agent, "curl -X POST -H X-AUTH-TOKEN:#{auth_tok} --url vcloud/api/v1/vm/#{agent[:vmhostname]}/disk/1") + sleep(120) + + step 'rescan the SCSI bus on the host to make the newly added hdd recognized' + on(agent, "echo \"- - -\" >/sys/class/scsi_host/host0/scan") + + + #on(agent, "curl -X POST -H X-AUTH-TOKEN:c00nem2oao477lyc1olnr2k6zgquchxl --url vcloud/api/v1/vm/#{agent[:vmhostname]}/disk/4") + on(agent, "curl -X POST -H X-AUTH-TOKEN:#{auth_tok} --url vcloud/api/v1/vm/#{agent[:vmhostname]}/disk/1") + sleep(120) + + step 'rescan the SCSI bus on the host to make the newly added hdd recognized' + on(agent, "echo \"- - -\" >/sys/class/scsi_host/host0/scan") + + step 'Verify the newly add hdd recognized:' + on(agent, "fdisk -l") do |result| + assert_match(/\/dev\/sdc/, result.stdout, "Unexpected errors is detected") + assert_match(/\/dev\/sdd/, result.stdout, "Unexpected errors is detected") + end + end +end \ No newline at end of file diff --git a/tests/beaker/test_run_scripts/integration_tests.sh b/tests/beaker/test_run_scripts/integration_tests.sh new file mode 100755 index 00000000..9be30be0 --- /dev/null +++ b/tests/beaker/test_run_scripts/integration_tests.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Init +SCRIPT_PATH=$(pwd) +BASENAME_CMD="basename ${SCRIPT_PATH}" +SCRIPT_BASE_PATH=`eval ${BASENAME_CMD}` + +if [ $SCRIPT_BASE_PATH = "test_run_scripts" ]; then + cd ../ +fi + +# Work-around for RE-5005 +export SSL_CERT_FILE=/usr/local/etc/openssl/cert.pem + +export pe_dist_dir="http://enterprise.delivery.puppetlabs.net/2015.3/ci-ready" +export GEM_SOURCE=http://rubygems.delivery.puppetlabs.net + +bundle install --without build development test --path .bundle/gems + +bundle exec beaker \ + --preserve-host \ + --host configs/redhat-6-64mda.yml \ + --debug \ + --pre-suite pre-suite \ + --tests tests \ + --keyfile ~/.ssh/id_rsa-acceptance \ + --load-path lib diff --git a/tests/beaker/tests/create_lv_with_param_alloc.rb b/tests/beaker/tests/create_lv_with_param_alloc.rb new file mode 100755 index 00000000..6199a02a --- /dev/null +++ b/tests/beaker/tests/create_lv_with_param_alloc.rb @@ -0,0 +1,85 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96574 - create logical volume without parameter 'alloc'" + +#initilize +pv = '/dev/sdd' +vg = ("VG_" + SecureRandom.hex(2)) +lv = [("LV_" + SecureRandom.hex(3)), ("LV_" + SecureRandom.hex(3)), \ +("LV_" + SecureRandom.hex(3)), ("LV_" + SecureRandom.hex(3)), ("LV_" + SecureRandom.hex(3))] + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + lv.each do |logical_volume| + on(agent, "umount /dev/#{vg}/#{logical_volume}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{logical_volume} --force") + end + on(agent, "vgremove #{vg}") + on(agent, "pvremove #{pv}") + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv}': + ensure => present, +} +-> +volume_group {'#{vg}': + ensure => present, + physical_volumes => '#{pv}', +} +-> +logical_volume{'#{lv[0]}': + ensure => present, + volume_group => '#{vg}', + alloc => 'anywhere', + size => '20M', +} +-> +logical_volume{'#{lv[1]}': + ensure => present, + volume_group => '#{vg}', + alloc => 'contiguous', + size => '10M', +} +-> +logical_volume{'#{lv[2]}': + ensure => present, + volume_group => '#{vg}', + alloc => 'cling', + size => '15M', +} +-> +logical_volume{'#{lv[3]}': + ensure => present, + volume_group => '#{vg}', + alloc => 'inherit', + size => '30M', +} +-> +logical_volume{'#{lv[4]}': + ensure => present, + volume_group => '#{vg}', + alloc => 'normal', + size => '5M', +} +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 is created: #{lv}" + verify_if_created?(agent, 'logical_volume', lv) + end +end diff --git a/tests/beaker/tests/create_lv_with_param_extents.rb b/tests/beaker/tests/create_lv_with_param_extents.rb new file mode 100755 index 00000000..6789f99d --- /dev/null +++ b/tests/beaker/tests/create_lv_with_param_extents.rb @@ -0,0 +1,51 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96575 - create logical volume with parameter 'extents'" + +#initilize +pv = ['/dev/sdc', '/dev/sdd'] +vg = ("VG_" + SecureRandom.hex(2)) +lv = ("LV_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{lv} --force") + on(agent, "vgremove #{vg}") + pv.each do |physical_volume| + on(agent, "pvremove #{physical_volume}") + end + end +end + +pp = <<-MANIFEST +volume_group {'#{vg}': + ensure => present, + physical_volumes => #{pv} +} +-> +logical_volume{'#{lv}': + ensure => present, + volume_group => '#{vg}', + extents => '2', +} +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 is created: #{lv}" + verify_if_created?(agent, 'logical_volume', lv) + end +end diff --git a/tests/beaker/tests/create_lv_with_param_initial_size.rb b/tests/beaker/tests/create_lv_with_param_initial_size.rb new file mode 100755 index 00000000..89f56e29 --- /dev/null +++ b/tests/beaker/tests/create_lv_with_param_initial_size.rb @@ -0,0 +1,51 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96576 - create logical volume with parameter 'initial_size'" + +#initilize +pv = ['/dev/sdc', '/dev/sdd'] +vg = ("VG_" + SecureRandom.hex(2)) +lv = ("LV_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{lv} --force") + on(agent, "vgremove #{vg}") + pv.each do |physical_volume| + on(agent, "pvremove #{physical_volume}") + end + end +end + +pp = <<-MANIFEST +volume_group {'#{vg}': + ensure => present, + physical_volumes => #{pv} +} +-> +logical_volume{'#{lv}': + ensure => present, + volume_group => '#{vg}', + initial_size => '2G', +} +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 is created: #{lv}" + verify_if_created?(agent, 'logical_volume', lv) + end +end diff --git a/tests/beaker/tests/create_lv_with_param_name.rb b/tests/beaker/tests/create_lv_with_param_name.rb new file mode 100755 index 00000000..f092c64c --- /dev/null +++ b/tests/beaker/tests/create_lv_with_param_name.rb @@ -0,0 +1,54 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96572 - create logical volume with parameter 'name'" + +#initilize +pv = '/dev/sdd' +vg = ("VG_" + SecureRandom.hex(2)) +lv = ("LV_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{lv} --force") + on(agent, "vgremove #{vg}") + on(agent, "pvremove #{pv}") + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv}': + ensure => present, +} +-> +volume_group {'#{vg}': + ensure => present, + physical_volumes => '#{pv}', +} +-> +logical_volume{'Create Logical Volume with parameter name': + ensure => present, + name => '#{lv}', + volume_group => '#{vg}', + size => '1G', +} +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 is created: #{lv}" + verify_if_created?(agent, 'logical_volume', lv) + end +end diff --git a/tests/beaker/tests/create_lv_with_param_no_sync.rb b/tests/beaker/tests/create_lv_with_param_no_sync.rb new file mode 100755 index 00000000..fbc4e531 --- /dev/null +++ b/tests/beaker/tests/create_lv_with_param_no_sync.rb @@ -0,0 +1,50 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96581 - create logical volume with parameter 'no_sync'" + +#initilize +pv = '/dev/sdd' +vg = ("VG_" + SecureRandom.hex(2)) +lv = ("LV_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{lv} --force") + on(agent, "vgremove #{vg}") + on(agent, "pvremove #{pv}") + end +end + +pp = <<-MANIFEST +volume_group {'#{vg}': + ensure => present, + physical_volumes => '#{pv}', +} +-> +logical_volume{'#{lv}': + ensure => present, + volume_group => '#{vg}', + size => '1G', + no_sync => true, +} +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 is created: #{lv}" + verify_if_created?(agent, 'logical_volume', lv) + end +end diff --git a/tests/beaker/tests/create_lv_with_param_readahead.rb b/tests/beaker/tests/create_lv_with_param_readahead.rb new file mode 100755 index 00000000..ba9ecdef --- /dev/null +++ b/tests/beaker/tests/create_lv_with_param_readahead.rb @@ -0,0 +1,50 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96583 - create logical volume with parameter 'readahead'" + +#initilize +pv = '/dev/sdd' +vg = ("VG_" + SecureRandom.hex(2)) +lv = ("LV_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{lv} --force") + on(agent, "vgremove #{vg}") + on(agent, "pvremove #{pv}") + end +end + +pp = <<-MANIFEST +volume_group {'#{vg}': + ensure => present, + physical_volumes => '#{pv}', +} +-> +logical_volume{'#{lv}': + ensure => present, + volume_group => '#{vg}', + size => '1G', + readahead => '7', +} +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 is created: #{lv}" + verify_if_created?(agent, 'logical_volume', lv) + end +end diff --git a/tests/beaker/tests/create_lv_with_param_region_size.rb b/tests/beaker/tests/create_lv_with_param_region_size.rb new file mode 100755 index 00000000..beb1502b --- /dev/null +++ b/tests/beaker/tests/create_lv_with_param_region_size.rb @@ -0,0 +1,53 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96584 - create logical volume with property 'region_size'" + +#initilize +pv = ['/dev/sdc', '/dev/sdd'] +vg = ("VG_" + SecureRandom.hex(2)) +lv = ("LV_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{lv} --force") + on(agent, "vgremove #{vg}") + pv.each do |physical_volume| + on(agent, "pvremove #{physical_volume}") + end + end +end + +pp = <<-MANIFEST +volume_group {'#{vg}': + ensure => present, + physical_volumes => #{pv} +} +-> +logical_volume{'#{lv}': + ensure => present, + volume_group => '#{vg}', + size => '2G', + mirror => '1', + region_size => '1024', +} +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 is created: #{lv}" + verify_if_created?(agent, 'logical_volume', lv) + end +end diff --git a/tests/beaker/tests/create_lv_with_param_size_is_minsize.rb b/tests/beaker/tests/create_lv_with_param_size_is_minsize.rb new file mode 100755 index 00000000..441e9234 --- /dev/null +++ b/tests/beaker/tests/create_lv_with_param_size_is_minsize.rb @@ -0,0 +1,56 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96585 - create logical volume with parameter 'size'" +test_name "FM-4579 - C96586 - create logical volume with parameter 'size_is_minsize'" + +#initilize +pv = '/dev/sdd' +vg = ("VG_" + SecureRandom.hex(2)) +lv = ("LV_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{lv} --force") + on(agent, "vgremove #{vg}") + on(agent, "pvremove #{pv}") + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv}': + ensure => present, +} +-> +volume_group {'#{vg}': + ensure => present, + physical_volumes => '#{pv}', +} +-> +logical_volume{'Create Logical Volume with parameter name': + ensure => present, + name => '#{lv}', + volume_group => '#{vg}', + size => '1G', + size_is_minsize => true, +} +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 is created: #{lv}" + verify_if_created?(agent, 'logical_volume', lv) + end +end diff --git a/tests/beaker/tests/create_lv_with_param_stripes.rb b/tests/beaker/tests/create_lv_with_param_stripes.rb new file mode 100755 index 00000000..6b139d69 --- /dev/null +++ b/tests/beaker/tests/create_lv_with_param_stripes.rb @@ -0,0 +1,53 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96587 - create logical volume with parameter 'stripes'" +test_name "FM-4579 - C96633 - create logical volume with more than 1 stripes" + +#initilize +pv = ['/dev/sdc', '/dev/sdd'] +vg = ("VG_" + SecureRandom.hex(2)) +lv = ("LV_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{lv} --force") + on(agent, "vgremove #{vg}") + pv.each do |physical_volume| + on(agent, "pvremove #{physical_volume}") + end + end +end + +pp = <<-MANIFEST +volume_group {'#{vg}': + ensure => present, + physical_volumes => #{pv} +} +-> +logical_volume{'#{lv}': + ensure => present, + volume_group => '#{vg}', + size => '1G', + stripes => '2', +} +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 is created: #{lv}" + verify_if_created?(agent, 'logical_volume', lv) + end +end diff --git a/tests/beaker/tests/create_lv_with_param_stripesize.rb b/tests/beaker/tests/create_lv_with_param_stripesize.rb new file mode 100755 index 00000000..6d86dea5 --- /dev/null +++ b/tests/beaker/tests/create_lv_with_param_stripesize.rb @@ -0,0 +1,55 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96587 - create logical volume with parameter 'stripes'" +test_name "FM-4579 - C96633 - create logical volume with more than 1 stripes" +test_name "FM-4579 - C96589 - create logical volume with parameter 'volume_group'" + +#initilize +pv = ['/dev/sdc', '/dev/sdd'] +vg = ("VG_" + SecureRandom.hex(2)) +lv = ("LV_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{lv} --force") + on(agent, "vgremove #{vg}") + pv.each do |physical_volume| + on(agent, "pvremove #{physical_volume}") + end + end +end + +pp = <<-MANIFEST +volume_group {'#{vg}': + ensure => present, + physical_volumes => #{pv} +} +-> +logical_volume{'#{lv}': + ensure => present, + volume_group => '#{vg}', + size => '3G', + stripes => '2', + stripesize => '1024' +} +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 is created: #{lv}" + verify_if_created?(agent, 'logical_volume', lv) + end +end diff --git a/tests/beaker/tests/create_lv_with_property_mirror.rb b/tests/beaker/tests/create_lv_with_property_mirror.rb new file mode 100755 index 00000000..2a463f37 --- /dev/null +++ b/tests/beaker/tests/create_lv_with_property_mirror.rb @@ -0,0 +1,52 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96578 - create logical volume with property 'mirror'" + +#initilize +pv = ['/dev/sdc', '/dev/sdd'] +vg = ("VG_" + SecureRandom.hex(2)) +lv = ("LV_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{lv} --force") + on(agent, "vgremove #{vg}") + pv.each do |physical_volume| + on(agent, "pvremove #{physical_volume}") + end + end +end + +pp = <<-MANIFEST +volume_group {'#{vg}': + ensure => present, + physical_volumes => #{pv} +} +-> +logical_volume{'#{lv}': + ensure => present, + volume_group => '#{vg}', + size => '1G', + mirror => '1', +} +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 is created: #{lv}" + verify_if_created?(agent, 'logical_volume', lv) + end +end diff --git a/tests/beaker/tests/create_lv_with_property_mirrorlog.rb b/tests/beaker/tests/create_lv_with_property_mirrorlog.rb new file mode 100755 index 00000000..7730484b --- /dev/null +++ b/tests/beaker/tests/create_lv_with_property_mirrorlog.rb @@ -0,0 +1,68 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96579 - create logical volume with property 'mirrorlog'" + +#initilize +pv = ['/dev/sdc', '/dev/sdd'] +vg = ("VG_" + SecureRandom.hex(2)) +lv = [("LV_" + SecureRandom.hex(3)), ("LV_" + SecureRandom.hex(3)), ("LV_" + SecureRandom.hex(3))] + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + lv.each do |logical_volume| + on(agent, "umount /dev/#{vg}/#{logical_volume}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{logical_volume} --force") + end + on(agent, "vgremove #{vg}") + pv.each do |physical_volume| + on(agent, "pvremove #{physical_volume}") + end + end +end + +pp = <<-MANIFEST +volume_group {'#{vg}': + ensure => present, + physical_volumes => #{pv} +} +-> +logical_volume{'#{lv[0]}': + ensure => present, + volume_group => '#{vg}', + size => '1G', + mirrorlog => 'core', +} +-> +logical_volume{'#{lv[1]}': + ensure => present, + volume_group => '#{vg}', + size => '1G', + mirrorlog => 'disk', +} +-> +logical_volume{'#{lv[2]}': + ensure => present, + volume_group => '#{vg}', + size => '1G', + mirrorlog => 'mirrored', +} +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 is created: #{lv}" + verify_if_created?(agent, 'logical_volume', lv) + end +end diff --git a/tests/beaker/tests/create_lv_without_param_name.rb b/tests/beaker/tests/create_lv_without_param_name.rb new file mode 100755 index 00000000..726c55ab --- /dev/null +++ b/tests/beaker/tests/create_lv_without_param_name.rb @@ -0,0 +1,53 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96573 - create logical volume without parameter 'name'" + +#initilize +pv = '/dev/sdd' +vg = ("VG_" + SecureRandom.hex(2)) +lv = ("LV_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{lv} --force") + on(agent, "vgremove #{vg}") + on(agent, "pvremove #{pv}") + 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 => '1G', +} +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 is created: #{lv}" + verify_if_created?(agent, 'logical_volume', lv) + end +end diff --git a/tests/beaker/tests/create_pv_param_unless_vg.rb b/tests/beaker/tests/create_pv_param_unless_vg.rb new file mode 100755 index 00000000..3432b0c6 --- /dev/null +++ b/tests/beaker/tests/create_pv_param_unless_vg.rb @@ -0,0 +1,83 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96593 - create physical volume without parameter 'unless_vg'" + +#initilize +pv1 = '/dev/sdc' +pv2 = '/dev/sdd' +vg = ("VG_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "vgremove #{vg}") + on(agent, "pvremove #{pv1} #{pv2}") + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv1}': + ensure => present, +} +-> +volume_group {'#{vg}': + ensure => present, + physical_volumes => '#{pv1}', +} +-> +physical_volume {'#{pv2}': + ensure => present, + unless_vg => '#{vg}' +} +MANIFEST + +pp2 = <<-MANIFEST +physical_volume {'#{pv2}': + ensure => present, + unless_vg => 'non-existing-volume-group' +} +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) + + +confine_block(:except, :roles => %w{master dashboard database}) do + agents.each do |agent| + #Run Puppet Agent with manifest pp + step "Run Puppet Agent to create volume group '#{vg}' on physical volume '#{pv1}'" + 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 volume group is created: #{vg}" + verify_if_created?(agent, 'volume_group', vg) + + step "Verify physical volume '#{pv2}' is NOT created since volume group '#{vg}' DOES exist" + on(agent, "pvdisplay") do |result| + assert_no_match(/#{pv2}/, result.stdout, 'Unexpected error was detected') + end + end +end + +#Run Puppet Agent again with manifest pp2 +step 'Inject "site.pp" on Master with new manifest' +site_pp = create_site_pp(master, :manifest => pp2) +inject_site_pp(master, get_site_pp_path(master), site_pp) + +confine_block(:except, :roles => %w{master dashboard database}) do + agents.each do |agent| + step "Run Puppet Agent to create the physical volume '#{pv2}':" + 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 physical volume '#{pv2}' is created since volume group 'non-existing-volume-group' DOES NOT exist" + verify_if_created?(agent, 'physical_volume', pv2) + end +end + + diff --git a/tests/beaker/tests/create_pv_w_param_force.rb b/tests/beaker/tests/create_pv_w_param_force.rb new file mode 100755 index 00000000..ac96039b --- /dev/null +++ b/tests/beaker/tests/create_pv_w_param_force.rb @@ -0,0 +1,36 @@ +require 'master_manipulator' +require 'lvm_helper' +test_name "FM-4579 - C96646 - create physical volume without parameter 'name'" + +#initilize +pv = '/dev/sdd' + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "pvremove #{pv}") + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv}': + ensure => present, + force => true, +} +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 physical 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 physical volume is created: #{pv}" + verify_if_created?(agent, 'physical_volume', pv) + end +end diff --git a/tests/beaker/tests/create_pv_with_param_name.rb b/tests/beaker/tests/create_pv_with_param_name.rb new file mode 100755 index 00000000..b0bbf22a --- /dev/null +++ b/tests/beaker/tests/create_pv_with_param_name.rb @@ -0,0 +1,36 @@ +require 'master_manipulator' +require 'lvm_helper' +test_name "FM-4579 - C96590 - create physical volume with parameter 'name'" + +#initilize +pv = '/dev/sdd' + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "pvremove #{pv}") + end +end + +pp = <<-MANIFEST +physical_volume {'Create physical volume': + ensure => present, + name => '#{pv}', +} +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 physical 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 physical volume is created: #{pv}" + verify_if_created?(agent, 'physical_volume', pv) + end +end diff --git a/tests/beaker/tests/create_pv_wo_param_name.rb b/tests/beaker/tests/create_pv_wo_param_name.rb new file mode 100755 index 00000000..c7b9ccad --- /dev/null +++ b/tests/beaker/tests/create_pv_wo_param_name.rb @@ -0,0 +1,35 @@ +require 'master_manipulator' +require 'lvm_helper' +test_name "FM-4579 - C96646 - create physical volume without parameter 'name'" + +#initilize +pv = '/dev/sdd' + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "pvremove #{pv}") + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv}': + ensure => present, +} +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 physical 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 physical volume is created: #{pv}" + verify_if_created?(agent, 'physical_volume', pv) + end +end diff --git a/tests/beaker/tests/create_vg_param_createonly.rb b/tests/beaker/tests/create_vg_param_createonly.rb new file mode 100755 index 00000000..f3f93f0a --- /dev/null +++ b/tests/beaker/tests/create_vg_param_createonly.rb @@ -0,0 +1,46 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96596 - create volume group with parameter 'createonly'" + +#initilize +pv = '/dev/sdd' +vg = ("VG_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "vgremove #{vg}") + on(agent, "pvremove #{pv}") + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv}': + ensure => present, +} +-> +volume_group {"#{vg}": + ensure => present, + createonly => true, + physical_volumes => '#{pv}', +} + +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 volume group' +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 volume group is created: #{vg}" + verify_if_created?(agent, 'volume_group', vg) + end +end diff --git a/tests/beaker/tests/create_vg_property_logical_volumes.rb b/tests/beaker/tests/create_vg_property_logical_volumes.rb new file mode 100755 index 00000000..ac1a8714 --- /dev/null +++ b/tests/beaker/tests/create_vg_property_logical_volumes.rb @@ -0,0 +1,51 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C97138 - create volume group with property 'logical_volumes'" + +#initilize +pv = '/dev/sdd' +vg = ("VG_" + SecureRandom.hex(3)) +lv = ("LV_" + SecureRandom.hex(2)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{lv} --force") + on(agent, "vgremove #{vg}") + on(agent, "pvremove #{pv}") + end +end + +pp = <<-MANIFEST +class { 'lvm': + volume_groups => { + '#{vg}' => { + physical_volumes => '#{pv}', + logical_volumes => { + '#{lv}' => {'size' => '2G'}, + }, + }, + }, +} +include ::lvm + +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 volume group' +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 volume group is created: #{vg}" + verify_if_created?(agent, 'volume_group', vg) + end +end diff --git a/tests/beaker/tests/create_vg_property_physical_volumes.rb b/tests/beaker/tests/create_vg_property_physical_volumes.rb new file mode 100755 index 00000000..740c6966 --- /dev/null +++ b/tests/beaker/tests/create_vg_property_physical_volumes.rb @@ -0,0 +1,46 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96597 - create volume group with property 'physical_volumes'" +test_name "FM-4579" + +#initilize +pv = '/dev/sdd' +vg = ("VG_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "vgremove #{vg}") + on(agent, "pvremove #{pv}") + end +end + +pp = <<-MANIFEST +class { 'lvm': + volume_groups => { + '#{vg}' => { + physical_volumes => '#{pv}', + }, + }, +} +include ::lvm + +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 volume group' +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 volume group is created: #{vg}" + verify_if_created?(agent, 'volume_group', vg) + end +end diff --git a/tests/beaker/tests/create_vg_w_2_physical_volumes.rb b/tests/beaker/tests/create_vg_w_2_physical_volumes.rb new file mode 100755 index 00000000..27377003 --- /dev/null +++ b/tests/beaker/tests/create_vg_w_2_physical_volumes.rb @@ -0,0 +1,47 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96632 - create volume group with more than one physical volumes" + +#initilize +pv = ['/dev/sdc', '/dev/sdd'] +vg = ("VG_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "vgremove #{vg}") + pv.each do |physical_vol| + on(agent, "pvremove #{physical_vol}") + end + end +end + +pp = <<-MANIFEST +class { 'lvm': + volume_groups => { + '#{vg}' => { + physical_volumes => #{pv}, + }, + }, +} +include ::lvm + +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 volume group' +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 volume group is created: #{vg}" + verify_if_created?(agent, 'volume_group', vg) + end +end diff --git a/tests/beaker/tests/create_vg_w_param_name.rb b/tests/beaker/tests/create_vg_w_param_name.rb new file mode 100755 index 00000000..59bf66c9 --- /dev/null +++ b/tests/beaker/tests/create_vg_w_param_name.rb @@ -0,0 +1,46 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96594 - create volume group without parameter 'name'" + +#initilize +pv = '/dev/sdd' +vg = ("VG_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "vgremove #{vg}") + on(agent, "pvremove #{pv}") + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv}': + ensure => present, +} +-> +volume_group {"Create a volume group: #{vg}": + ensure => present, + name => '#{vg}', + physical_volumes => '#{pv}', +} + +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 volume group' +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 volume group is created: #{vg}" + verify_if_created?(agent, 'volume_group', vg) + end +end diff --git a/tests/beaker/tests/create_vg_wo_param_name.rb b/tests/beaker/tests/create_vg_wo_param_name.rb new file mode 100755 index 00000000..5e34e6be --- /dev/null +++ b/tests/beaker/tests/create_vg_wo_param_name.rb @@ -0,0 +1,45 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96595 - create volume group without parameter 'name'" + +#initilize +pv = '/dev/sdd' +vg = ("VG_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "vgremove #{vg}") + on(agent, "pvremove #{pv}") + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv}': + ensure => present, +} +-> +volume_group {"#{vg}": + ensure => present, + physical_volumes => '#{pv}', +} + +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 volume group' +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 volume group is created: #{vg}" + verify_if_created?(agent, 'volume_group', vg) + end +end diff --git a/tests/beaker/tests/remove_lv.rb b/tests/beaker/tests/remove_lv.rb new file mode 100755 index 00000000..b40d4dc3 --- /dev/null +++ b/tests/beaker/tests/remove_lv.rb @@ -0,0 +1,79 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96615 - remove logical volume" + +#initilize +pv = '/dev/sdd' +vg = ("VG_" + SecureRandom.hex(2)) +lv = ("LV_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "vgremove #{vg}") + on(agent, "pvremove #{pv}") + 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 => '1G', +} +MANIFEST + +pp2 = <<-MANIFEST +logical_volume {'#{lv}': + ensure => absent, + volume_group => '#{vg}', +} +MANIFEST + +#Creating a logical volume +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, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) + 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 is created: #{lv}" + verify_if_created?(agent, 'logical_volume', lv) + end +end + +#removing the logical volume +step 'Inject "site.pp" on Master' +site_pp = create_site_pp(master, :manifest => pp2) +inject_site_pp(master, get_site_pp_path(master), site_pp) + +step "run Puppet Agent to remove logical volume : #{lv}" +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 is removed: #{lv}" + on(agent, "lvdisplay") do |result| + assert_no_match(/#{lv}/, result.stdout, 'Unexpected error was detected') + end + end +end diff --git a/tests/beaker/tests/remove_pv.rb b/tests/beaker/tests/remove_pv.rb new file mode 100755 index 00000000..c742dc38 --- /dev/null +++ b/tests/beaker/tests/remove_pv.rb @@ -0,0 +1,64 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96613 - remove physical volume" + +#initilize +pv = '/dev/sdd' + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + #on(agent, "pvremove #{pv}") + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv}': + ensure => present, +} +MANIFEST + +pp2 = <<-MANIFEST +physical_volume {"Remove physical volume group: #{pv}": + ensure => absent, + name => '#{pv}', +} +MANIFEST + +#creating physical volume +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 physical volume' +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 physical volume is created: #{pv}" + verify_if_created?(agent, 'physical_volume', pv) + end +end + +#removing the physical volume +step 'Inject "site.pp" on Master' +site_pp = create_site_pp(master, :manifest => pp2) +inject_site_pp(master, get_site_pp_path(master), site_pp) + +step "run Puppet Agent to remove the physical volume: #{pv}" +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 physical volume is removed: #{pv}" + on(agent, "pvdisplay") do |result| + assert_no_match(/#{pv}/, result.stdout, 'Unexpected error was detected') + end + end +end \ No newline at end of file diff --git a/tests/beaker/tests/remove_vg.rb b/tests/beaker/tests/remove_vg.rb new file mode 100755 index 00000000..76d3159e --- /dev/null +++ b/tests/beaker/tests/remove_vg.rb @@ -0,0 +1,71 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4579 - C96614 - remove volume_group" + +#initilize +pv = '/dev/sdd' +vg = ("VG_" + SecureRandom.hex(3)) + +# Teardown +teardown do + confine_block(:except, :roles => %w{master dashboard database}) do + on(agent, "pvremove #{pv}") + end +end + +pp = <<-MANIFEST +physical_volume {'#{pv}': + ensure => present, +} +-> +volume_group {"Create a volume group: #{vg}": + ensure => present, + name => '#{vg}', + physical_volumes => '#{pv}', +} +MANIFEST + +pp2 = <<-MANIFEST +volume_group {"Remove a volume group: #{vg}": + ensure => absent, + name => '#{vg}', +} +MANIFEST + +#creating group +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 volume group' +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 volume group is created: #{vg}" + verify_if_created?(agent, 'volume_group', vg) + end +end + +#removing group +step 'Inject "site.pp" on Master' +site_pp = create_site_pp(master, :manifest => pp2) +inject_site_pp(master, get_site_pp_path(master), site_pp) + +step "run Puppet Agent to remove volume group : #{vg}" +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 volume group is removed: #{vg}" + on(agent, "vgdisplay") do |result| + assert_no_match(/#{vg}/, result.stdout, 'Unexpected error was detected') + end + end +end \ No newline at end of file From e771e77166daa56609df3d9c96a62cdfd668604b Mon Sep 17 00:00:00 2001 From: phongdly Date: Sun, 24 Jan 2016 21:37:14 -0800 Subject: [PATCH 2/3] (FM-4614) abstract out the command lines --- tests/beaker/configs/ec2_config.yml | 30 ---------- tests/beaker/configs/full_env.yml | 30 ---------- tests/beaker/lib/lvm_helper.rb | 57 +++++++++++++++++++ .../beaker/pre-suite/01_lvm_module_install.rb | 10 +++- tests/beaker/pre-suite/02_add_extra_hdd.rb | 17 +++--- .../tests/create_lv_with_param_alloc.rb | 15 ++--- .../tests/create_lv_with_param_extents.rb | 15 ++--- .../create_lv_with_param_initial_size.rb | 17 +++--- .../beaker/tests/create_lv_with_param_name.rb | 15 +++-- .../tests/create_lv_with_param_no_sync.rb | 15 +++-- .../tests/create_lv_with_param_readahead.rb | 15 +++-- .../tests/create_lv_with_param_region_size.rb | 15 ++--- .../create_lv_with_param_size_is_minsize.rb | 15 +++-- .../tests/create_lv_with_param_stripes.rb | 13 ++--- .../tests/create_lv_with_param_stripesize.rb | 15 ++--- .../tests/create_lv_with_property_mirror.rb | 13 ++--- .../create_lv_with_property_mirrorlog.rb | 23 +++----- .../tests/create_lv_without_param_name.rb | 15 +++-- .../beaker/tests/create_pv_param_unless_vg.rb | 32 +++++------ tests/beaker/tests/create_pv_w_param_force.rb | 6 +- .../beaker/tests/create_pv_with_param_name.rb | 6 +- tests/beaker/tests/create_pv_wo_param_name.rb | 6 +- .../tests/create_vg_param_createonly.rb | 9 +-- .../create_vg_property_logical_volumes.rb | 15 +++-- .../create_vg_property_physical_volumes.rb | 10 ++-- .../tests/create_vg_w_2_physical_volumes.rb | 7 +-- tests/beaker/tests/create_vg_w_param_name.rb | 9 +-- tests/beaker/tests/create_vg_wo_param_name.rb | 9 +-- tests/beaker/tests/remove_lv.rb | 13 +++-- tests/beaker/tests/remove_pv.rb | 11 +--- tests/beaker/tests/remove_vg.rb | 10 ++-- 31 files changed, 233 insertions(+), 255 deletions(-) delete mode 100644 tests/beaker/configs/ec2_config.yml delete mode 100644 tests/beaker/configs/full_env.yml diff --git a/tests/beaker/configs/ec2_config.yml b/tests/beaker/configs/ec2_config.yml deleted file mode 100644 index 151667c1..00000000 --- a/tests/beaker/configs/ec2_config.yml +++ /dev/null @@ -1,30 +0,0 @@ - -HOSTS: - pemaster: - roles: - - master - - dashboard - - database - - agent - vmname: centos-7-x86-64-west - user: ec2-user - platform: el-7-x86_64 - hypervisor: ec2 - amisize: m3.large - snapshot: pe - peagent: - roles: - - agent - - frictionless - vmname: centos-7-x86-64-west - user: ec2-user - platform: el-7-x86_64 - hypervisor: ec2 - amisize: m3.large - volume_size: 50 - snapshot: pe -CONFIG: - nfs_server: none - consoleport: 443 - pe_dir: puppetlabs-websphere_application_server/beaker/files - pe_ver: 2015.2.3 diff --git a/tests/beaker/configs/full_env.yml b/tests/beaker/configs/full_env.yml deleted file mode 100644 index baa8b16f..00000000 --- a/tests/beaker/configs/full_env.yml +++ /dev/null @@ -1,30 +0,0 @@ -HOSTS: - puppet-centos: - roles: - - master - - database - - dashboard - - agent - platform: el-6-x86_64 - box : puppetlabs/centos-6.6-64-nocm - hypervisor : vagrant - app-centos: - roles: - - agent - platform: el-6-x86_64 - box : puppetlabs/centos-6.6-64-nocm - hypervisor : vagrant - dmgr-centos: - roles: - - agent - platform: el-6-x86_64 - box : puppetlabs/centos-6.6-64-nocm - hypervisor : vagrant - ihs-centos: - roles: - - agent - platform: el-6-x86_64 - box : puppetlabs/centos-6.6-64-nocm - hypervisor : vagrant -CONFIG: - pe_dir: http://neptune.delivery.puppetlabs.net/3.8/ci-ready/ diff --git a/tests/beaker/lib/lvm_helper.rb b/tests/beaker/lib/lvm_helper.rb index 6988d7af..b0c2bc1f 100644 --- a/tests/beaker/lib/lvm_helper.rb +++ b/tests/beaker/lib/lvm_helper.rb @@ -30,3 +30,60 @@ def verify_if_created?(agent, resource_type, resource_name) end 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. +# +# ==== Attributes +# +# * +pv+ - physical volume, can be one volume or an array of multiple volumes +# * +vg+ - volume group, can be one group or an array of multiple volume groups +# * +lv+ - logical volume, can be one volume or an array of multiple volumes +# +# ==== Returns +# +# +nil+ +# +# ==== Raises +# +nil+ +# ==== Examples +# +# remove_all(agent, '/dev/sdb', 'VolumeGroup_1234', 'LogicalVolume_fa13') +def remove_all(agent, pv=nil, vg=nil, lv=nil) + step 'remove logical volume if any:' + if lv + if lv.kind_of?(Array) + lv.each do |logical_volume| + on(agent, "umount /dev/#{vg}/#{logical_volume}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{logical_volume} --force") + end + else + on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) + on(agent, "lvremove /dev/#{vg}/#{lv} --force") + end + end + + step 'remove volume group if any:' + if vg + if vg.kind_of?(Array) + vg.each do |volume_group| + on(agent, "vgremove /dev/#{volume_group}") + end + else + on(agent, "vgremove /dev/#{vg}") + end + end + + step 'remove logical volume if any:' + if pv + if pv.kind_of?(Array) + pv.each do |physical_volume| + on(agent, "pvremove #{physical_volume}") + end + else + on(agent, "pvremove #{pv}") + end + end +end diff --git a/tests/beaker/pre-suite/01_lvm_module_install.rb b/tests/beaker/pre-suite/01_lvm_module_install.rb index 6d39c0ce..e3d41103 100755 --- a/tests/beaker/pre-suite/01_lvm_module_install.rb +++ b/tests/beaker/pre-suite/01_lvm_module_install.rb @@ -4,4 +4,12 @@ on(master, puppet('module install puppetlabs-stdlib')) step 'Install LVM Module' -on(master, puppet('module install puppetlabs-lvm')) +proj_root = File.expand_path(File.join(File.dirname(__FILE__), '../../../')) +staging = { :module_name => 'puppetlabs-lvm' } +local = { :module_name => 'lvm', :source => proj_root, :target_module_path => master['distmoduledir'] } + +# Check to see if module version is specified. +staging[:version] = ENV['MODULE_VERSION'] if ENV['MODULE_VERSION'] + +# in CI install from staging forge, otherwise from local +install_dev_puppet_module_on(master, options[:forge_host] ? staging : local) \ No newline at end of file diff --git a/tests/beaker/pre-suite/02_add_extra_hdd.rb b/tests/beaker/pre-suite/02_add_extra_hdd.rb index 3b0e3462..a6140a5b 100755 --- a/tests/beaker/pre-suite/02_add_extra_hdd.rb +++ b/tests/beaker/pre-suite/02_add_extra_hdd.rb @@ -7,22 +7,25 @@ # On the PE agent where LVM running confine_block(:except, :roles => %w{master dashboard database}) do agents.each do |agent| - step 'adding an extra disk' + step 'adding an extra disk: /dev/sdc:' on(agent, "curl -X POST -H X-AUTH-TOKEN:#{auth_tok} --url vcloud/api/v1/vm/#{agent[:vmhostname]}/disk/1") - sleep(120) - + sleep(30) step 'rescan the SCSI bus on the host to make the newly added hdd recognized' on(agent, "echo \"- - -\" >/sys/class/scsi_host/host0/scan") + #keep trying until the hdd is found + retry_on(agent, "fdisk -l | grep \"/dev/sdc\"", :max_retries => 360, :retry_interval => 5) - #on(agent, "curl -X POST -H X-AUTH-TOKEN:c00nem2oao477lyc1olnr2k6zgquchxl --url vcloud/api/v1/vm/#{agent[:vmhostname]}/disk/4") + step 'adding a second extra disk: /dev/sdd:' on(agent, "curl -X POST -H X-AUTH-TOKEN:#{auth_tok} --url vcloud/api/v1/vm/#{agent[:vmhostname]}/disk/1") - sleep(120) - + sleep(30) step 'rescan the SCSI bus on the host to make the newly added hdd recognized' on(agent, "echo \"- - -\" >/sys/class/scsi_host/host0/scan") - step 'Verify the newly add hdd recognized:' + #keep trying until the hdd is found + retry_on(agent, "fdisk -l | grep \"/dev/sdd\"", :max_retries => 360, :retry_interval => 5) + + step 'Verify the newly add HDDs recognized:' on(agent, "fdisk -l") do |result| assert_match(/\/dev\/sdc/, result.stdout, "Unexpected errors is detected") assert_match(/\/dev\/sdd/, result.stdout, "Unexpected errors is detected") diff --git a/tests/beaker/tests/create_lv_with_param_alloc.rb b/tests/beaker/tests/create_lv_with_param_alloc.rb index 6199a02a..56321527 100755 --- a/tests/beaker/tests/create_lv_with_param_alloc.rb +++ b/tests/beaker/tests/create_lv_with_param_alloc.rb @@ -5,20 +5,17 @@ test_name "FM-4579 - C96574 - create logical volume without parameter 'alloc'" #initilize -pv = '/dev/sdd' -vg = ("VG_" + SecureRandom.hex(2)) -lv = [("LV_" + SecureRandom.hex(3)), ("LV_" + SecureRandom.hex(3)), \ -("LV_" + SecureRandom.hex(3)), ("LV_" + SecureRandom.hex(3)), ("LV_" + SecureRandom.hex(3))] +pv = '/dev/sdc' +vg = ("VolumeGroup_" + SecureRandom.hex(2)) +lv = [("LogicalVolume_" + SecureRandom.hex(3)), ("LogicalVolume_" + SecureRandom.hex(3)), \ +("LogicalVolume_" + SecureRandom.hex(3)), ("LogicalVolume_" + SecureRandom.hex(3)), ("LogicalVolume_" + SecureRandom.hex(3))] # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - lv.each do |logical_volume| - on(agent, "umount /dev/#{vg}/#{logical_volume}", :acceptable_exit_codes => [0,1]) - on(agent, "lvremove /dev/#{vg}/#{logical_volume} --force") + agents.each do |agent| + remove_all(agent, pv, vg, lv) end - on(agent, "vgremove #{vg}") - on(agent, "pvremove #{pv}") end end diff --git a/tests/beaker/tests/create_lv_with_param_extents.rb b/tests/beaker/tests/create_lv_with_param_extents.rb index 6789f99d..4e0da84c 100755 --- a/tests/beaker/tests/create_lv_with_param_extents.rb +++ b/tests/beaker/tests/create_lv_with_param_extents.rb @@ -5,18 +5,15 @@ test_name "FM-4579 - C96575 - create logical volume with parameter 'extents'" #initilize -pv = ['/dev/sdc', '/dev/sdd'] -vg = ("VG_" + SecureRandom.hex(2)) -lv = ("LV_" + SecureRandom.hex(3)) +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 - on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) - on(agent, "lvremove /dev/#{vg}/#{lv} --force") - on(agent, "vgremove #{vg}") - pv.each do |physical_volume| - on(agent, "pvremove #{physical_volume}") + agents.each do |agent| + remove_all(agent, pv, vg, lv) end end end @@ -24,7 +21,7 @@ pp = <<-MANIFEST volume_group {'#{vg}': ensure => present, - physical_volumes => #{pv} + physical_volumes => '#{pv}' } -> logical_volume{'#{lv}': diff --git a/tests/beaker/tests/create_lv_with_param_initial_size.rb b/tests/beaker/tests/create_lv_with_param_initial_size.rb index 89f56e29..262c442c 100755 --- a/tests/beaker/tests/create_lv_with_param_initial_size.rb +++ b/tests/beaker/tests/create_lv_with_param_initial_size.rb @@ -5,18 +5,15 @@ test_name "FM-4579 - C96576 - create logical volume with parameter 'initial_size'" #initilize -pv = ['/dev/sdc', '/dev/sdd'] -vg = ("VG_" + SecureRandom.hex(2)) -lv = ("LV_" + SecureRandom.hex(3)) +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 - on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) - on(agent, "lvremove /dev/#{vg}/#{lv} --force") - on(agent, "vgremove #{vg}") - pv.each do |physical_volume| - on(agent, "pvremove #{physical_volume}") + agents.each do |agent| + remove_all(agent, pv, vg, lv) end end end @@ -24,13 +21,13 @@ pp = <<-MANIFEST volume_group {'#{vg}': ensure => present, - physical_volumes => #{pv} + physical_volumes => '#{pv}' } -> logical_volume{'#{lv}': ensure => present, volume_group => '#{vg}', - initial_size => '2G', + initial_size => '20M', } MANIFEST diff --git a/tests/beaker/tests/create_lv_with_param_name.rb b/tests/beaker/tests/create_lv_with_param_name.rb index f092c64c..561fbe0a 100755 --- a/tests/beaker/tests/create_lv_with_param_name.rb +++ b/tests/beaker/tests/create_lv_with_param_name.rb @@ -5,17 +5,16 @@ test_name "FM-4579 - C96572 - create logical volume with parameter 'name'" #initilize -pv = '/dev/sdd' -vg = ("VG_" + SecureRandom.hex(2)) -lv = ("LV_" + SecureRandom.hex(3)) +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 - on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) - on(agent, "lvremove /dev/#{vg}/#{lv} --force") - on(agent, "vgremove #{vg}") - on(agent, "pvremove #{pv}") + agents.each do |agent| + remove_all(agent, pv, vg, lv) + end end end @@ -33,7 +32,7 @@ ensure => present, name => '#{lv}', volume_group => '#{vg}', - size => '1G', + size => '500M', } MANIFEST diff --git a/tests/beaker/tests/create_lv_with_param_no_sync.rb b/tests/beaker/tests/create_lv_with_param_no_sync.rb index fbc4e531..68cde14e 100755 --- a/tests/beaker/tests/create_lv_with_param_no_sync.rb +++ b/tests/beaker/tests/create_lv_with_param_no_sync.rb @@ -5,17 +5,16 @@ test_name "FM-4579 - C96581 - create logical volume with parameter 'no_sync'" #initilize -pv = '/dev/sdd' -vg = ("VG_" + SecureRandom.hex(2)) -lv = ("LV_" + SecureRandom.hex(3)) +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 - on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) - on(agent, "lvremove /dev/#{vg}/#{lv} --force") - on(agent, "vgremove #{vg}") - on(agent, "pvremove #{pv}") + agents.each do |agent| + remove_all(agent, pv, vg, lv) + end end end @@ -28,7 +27,7 @@ logical_volume{'#{lv}': ensure => present, volume_group => '#{vg}', - size => '1G', + size => '300M', no_sync => true, } MANIFEST diff --git a/tests/beaker/tests/create_lv_with_param_readahead.rb b/tests/beaker/tests/create_lv_with_param_readahead.rb index ba9ecdef..1ba0c747 100755 --- a/tests/beaker/tests/create_lv_with_param_readahead.rb +++ b/tests/beaker/tests/create_lv_with_param_readahead.rb @@ -5,17 +5,16 @@ test_name "FM-4579 - C96583 - create logical volume with parameter 'readahead'" #initilize -pv = '/dev/sdd' -vg = ("VG_" + SecureRandom.hex(2)) -lv = ("LV_" + SecureRandom.hex(3)) +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 - on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) - on(agent, "lvremove /dev/#{vg}/#{lv} --force") - on(agent, "vgremove #{vg}") - on(agent, "pvremove #{pv}") + agents.each do |agent| + remove_all(agent, pv, vg, lv) + end end end @@ -28,7 +27,7 @@ logical_volume{'#{lv}': ensure => present, volume_group => '#{vg}', - size => '1G', + size => '700M', readahead => '7', } MANIFEST diff --git a/tests/beaker/tests/create_lv_with_param_region_size.rb b/tests/beaker/tests/create_lv_with_param_region_size.rb index beb1502b..0529f3bd 100755 --- a/tests/beaker/tests/create_lv_with_param_region_size.rb +++ b/tests/beaker/tests/create_lv_with_param_region_size.rb @@ -6,17 +6,14 @@ #initilize pv = ['/dev/sdc', '/dev/sdd'] -vg = ("VG_" + SecureRandom.hex(2)) -lv = ("LV_" + SecureRandom.hex(3)) +vg = ("VolumeGroup_" + SecureRandom.hex(2)) +lv = ("LogicalVolume_" + SecureRandom.hex(3)) # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) - on(agent, "lvremove /dev/#{vg}/#{lv} --force") - on(agent, "vgremove #{vg}") - pv.each do |physical_volume| - on(agent, "pvremove #{physical_volume}") + agents.each do |agent| + remove_all(agent, pv, vg, lv) end end end @@ -30,9 +27,9 @@ logical_volume{'#{lv}': ensure => present, volume_group => '#{vg}', - size => '2G', + size => '800MB', mirror => '1', - region_size => '1024', + region_size => '64', } MANIFEST diff --git a/tests/beaker/tests/create_lv_with_param_size_is_minsize.rb b/tests/beaker/tests/create_lv_with_param_size_is_minsize.rb index 441e9234..42a0f7b4 100755 --- a/tests/beaker/tests/create_lv_with_param_size_is_minsize.rb +++ b/tests/beaker/tests/create_lv_with_param_size_is_minsize.rb @@ -6,17 +6,16 @@ test_name "FM-4579 - C96586 - create logical volume with parameter 'size_is_minsize'" #initilize -pv = '/dev/sdd' -vg = ("VG_" + SecureRandom.hex(2)) -lv = ("LV_" + SecureRandom.hex(3)) +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 - on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) - on(agent, "lvremove /dev/#{vg}/#{lv} --force") - on(agent, "vgremove #{vg}") - on(agent, "pvremove #{pv}") + agents.each do |agent| + remove_all(agent, pv, vg, lv) + end end end @@ -34,7 +33,7 @@ ensure => present, name => '#{lv}', volume_group => '#{vg}', - size => '1G', + size => '900M', size_is_minsize => true, } MANIFEST diff --git a/tests/beaker/tests/create_lv_with_param_stripes.rb b/tests/beaker/tests/create_lv_with_param_stripes.rb index 6b139d69..a4a3fc08 100755 --- a/tests/beaker/tests/create_lv_with_param_stripes.rb +++ b/tests/beaker/tests/create_lv_with_param_stripes.rb @@ -7,17 +7,14 @@ #initilize pv = ['/dev/sdc', '/dev/sdd'] -vg = ("VG_" + SecureRandom.hex(2)) -lv = ("LV_" + SecureRandom.hex(3)) +vg = ("VolumeGroup_" + SecureRandom.hex(2)) +lv = ("LogicalVolume_" + SecureRandom.hex(3)) # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) - on(agent, "lvremove /dev/#{vg}/#{lv} --force") - on(agent, "vgremove #{vg}") - pv.each do |physical_volume| - on(agent, "pvremove #{physical_volume}") + agents.each do |agent| + remove_all(agent, pv, vg, lv) end end end @@ -31,7 +28,7 @@ logical_volume{'#{lv}': ensure => present, volume_group => '#{vg}', - size => '1G', + size => '800M', stripes => '2', } MANIFEST diff --git a/tests/beaker/tests/create_lv_with_param_stripesize.rb b/tests/beaker/tests/create_lv_with_param_stripesize.rb index 6d86dea5..a20bfa60 100755 --- a/tests/beaker/tests/create_lv_with_param_stripesize.rb +++ b/tests/beaker/tests/create_lv_with_param_stripesize.rb @@ -8,17 +8,14 @@ #initilize pv = ['/dev/sdc', '/dev/sdd'] -vg = ("VG_" + SecureRandom.hex(2)) -lv = ("LV_" + SecureRandom.hex(3)) +vg = ("VolumeGroup_" + SecureRandom.hex(2)) +lv = ("LogicalVolume_" + SecureRandom.hex(3)) # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) - on(agent, "lvremove /dev/#{vg}/#{lv} --force") - on(agent, "vgremove #{vg}") - pv.each do |physical_volume| - on(agent, "pvremove #{physical_volume}") + agents.each do |agent| + remove_all(agent, pv, vg, lv) end end end @@ -32,9 +29,9 @@ logical_volume{'#{lv}': ensure => present, volume_group => '#{vg}', - size => '3G', + size => '900M', stripes => '2', - stripesize => '1024' + stripesize => '256' } MANIFEST diff --git a/tests/beaker/tests/create_lv_with_property_mirror.rb b/tests/beaker/tests/create_lv_with_property_mirror.rb index 2a463f37..786a39fe 100755 --- a/tests/beaker/tests/create_lv_with_property_mirror.rb +++ b/tests/beaker/tests/create_lv_with_property_mirror.rb @@ -6,17 +6,14 @@ #initilize pv = ['/dev/sdc', '/dev/sdd'] -vg = ("VG_" + SecureRandom.hex(2)) -lv = ("LV_" + SecureRandom.hex(3)) +vg = ("VolumeGroup_" + SecureRandom.hex(2)) +lv = ("LogicalVolume_" + SecureRandom.hex(3)) # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) - on(agent, "lvremove /dev/#{vg}/#{lv} --force") - on(agent, "vgremove #{vg}") - pv.each do |physical_volume| - on(agent, "pvremove #{physical_volume}") + agents.each do |agent| + remove_all(agent, pv, vg, lv) end end end @@ -30,7 +27,7 @@ logical_volume{'#{lv}': ensure => present, volume_group => '#{vg}', - size => '1G', + size => '400M', mirror => '1', } MANIFEST diff --git a/tests/beaker/tests/create_lv_with_property_mirrorlog.rb b/tests/beaker/tests/create_lv_with_property_mirrorlog.rb index 7730484b..d9eea2ce 100755 --- a/tests/beaker/tests/create_lv_with_property_mirrorlog.rb +++ b/tests/beaker/tests/create_lv_with_property_mirrorlog.rb @@ -5,20 +5,15 @@ test_name "FM-4579 - C96579 - create logical volume with property 'mirrorlog'" #initilize -pv = ['/dev/sdc', '/dev/sdd'] -vg = ("VG_" + SecureRandom.hex(2)) -lv = [("LV_" + SecureRandom.hex(3)), ("LV_" + SecureRandom.hex(3)), ("LV_" + SecureRandom.hex(3))] +pv = '/dev/sdc' +vg = ("VolumeGroup_" + SecureRandom.hex(2)) +lv = [("LogicalVolume_" + SecureRandom.hex(3)), ("LogicalVolume_" + SecureRandom.hex(3)), ("LogicalVolume_" + SecureRandom.hex(3))] # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - lv.each do |logical_volume| - on(agent, "umount /dev/#{vg}/#{logical_volume}", :acceptable_exit_codes => [0,1]) - on(agent, "lvremove /dev/#{vg}/#{logical_volume} --force") - end - on(agent, "vgremove #{vg}") - pv.each do |physical_volume| - on(agent, "pvremove #{physical_volume}") + agents.each do |agent| + remove_all(agent, pv, vg, lv) end end end @@ -26,27 +21,27 @@ pp = <<-MANIFEST volume_group {'#{vg}': ensure => present, - physical_volumes => #{pv} + physical_volumes => '#{pv}' } -> logical_volume{'#{lv[0]}': ensure => present, volume_group => '#{vg}', - size => '1G', + size => '20M', mirrorlog => 'core', } -> logical_volume{'#{lv[1]}': ensure => present, volume_group => '#{vg}', - size => '1G', + size => '40M', mirrorlog => 'disk', } -> logical_volume{'#{lv[2]}': ensure => present, volume_group => '#{vg}', - size => '1G', + size => '100M', mirrorlog => 'mirrored', } MANIFEST diff --git a/tests/beaker/tests/create_lv_without_param_name.rb b/tests/beaker/tests/create_lv_without_param_name.rb index 726c55ab..31d5932f 100755 --- a/tests/beaker/tests/create_lv_without_param_name.rb +++ b/tests/beaker/tests/create_lv_without_param_name.rb @@ -5,17 +5,16 @@ test_name "FM-4579 - C96573 - create logical volume without parameter 'name'" #initilize -pv = '/dev/sdd' -vg = ("VG_" + SecureRandom.hex(2)) -lv = ("LV_" + SecureRandom.hex(3)) +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 - on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) - on(agent, "lvremove /dev/#{vg}/#{lv} --force") - on(agent, "vgremove #{vg}") - on(agent, "pvremove #{pv}") + agents.each do |agent| + remove_all(agent, pv, vg, lv) + end end end @@ -32,7 +31,7 @@ logical_volume{'#{lv}': ensure => present, volume_group => '#{vg}', - size => '1G', + size => '800M', } MANIFEST diff --git a/tests/beaker/tests/create_pv_param_unless_vg.rb b/tests/beaker/tests/create_pv_param_unless_vg.rb index 3432b0c6..2d7f257a 100755 --- a/tests/beaker/tests/create_pv_param_unless_vg.rb +++ b/tests/beaker/tests/create_pv_param_unless_vg.rb @@ -5,36 +5,36 @@ test_name "FM-4579 - C96593 - create physical volume without parameter 'unless_vg'" #initilize -pv1 = '/dev/sdc' -pv2 = '/dev/sdd' -vg = ("VG_" + SecureRandom.hex(3)) +pv = ['/dev/sdc', '/dev/sdd'] +vg = ("VolumeGroup_" + SecureRandom.hex(3)) # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - on(agent, "vgremove #{vg}") - on(agent, "pvremove #{pv1} #{pv2}") + agents.each do |agent| + remove_all(agent, pv, vg) + end end end pp = <<-MANIFEST -physical_volume {'#{pv1}': +physical_volume {'#{pv[0]}': ensure => present, } -> volume_group {'#{vg}': ensure => present, - physical_volumes => '#{pv1}', + physical_volumes => '#{pv[0]}', } -> -physical_volume {'#{pv2}': +physical_volume {'#{pv[1]}': ensure => present, unless_vg => '#{vg}' } MANIFEST pp2 = <<-MANIFEST -physical_volume {'#{pv2}': +physical_volume {'#{pv[1]}': ensure => present, unless_vg => 'non-existing-volume-group' } @@ -48,7 +48,7 @@ confine_block(:except, :roles => %w{master dashboard database}) do agents.each do |agent| #Run Puppet Agent with manifest pp - step "Run Puppet Agent to create volume group '#{vg}' on physical volume '#{pv1}'" + step "Run Puppet Agent to create volume group '#{vg}' on physical volume '#{pv[0]}'" 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 @@ -56,9 +56,9 @@ step "Verify the volume group is created: #{vg}" verify_if_created?(agent, 'volume_group', vg) - step "Verify physical volume '#{pv2}' is NOT created since volume group '#{vg}' DOES exist" + step "Verify physical volume '#{pv[1]}' is NOT created since volume group '#{vg}' DOES exist" on(agent, "pvdisplay") do |result| - assert_no_match(/#{pv2}/, result.stdout, 'Unexpected error was detected') + assert_no_match(/#{pv[1]}/, result.stdout, 'Unexpected error was detected') end end end @@ -70,14 +70,12 @@ confine_block(:except, :roles => %w{master dashboard database}) do agents.each do |agent| - step "Run Puppet Agent to create the physical volume '#{pv2}':" + step "Run Puppet Agent to create the physical volume '#{pv[1]}':" 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 physical volume '#{pv2}' is created since volume group 'non-existing-volume-group' DOES NOT exist" - verify_if_created?(agent, 'physical_volume', pv2) + step "Verify physical volume '#{pv[1]}' is created since volume group 'non-existing-volume-group' DOES NOT exist" + verify_if_created?(agent, 'physical_volume', pv[1]) end end - - diff --git a/tests/beaker/tests/create_pv_w_param_force.rb b/tests/beaker/tests/create_pv_w_param_force.rb index ac96039b..0b7293a4 100755 --- a/tests/beaker/tests/create_pv_w_param_force.rb +++ b/tests/beaker/tests/create_pv_w_param_force.rb @@ -3,12 +3,14 @@ test_name "FM-4579 - C96646 - create physical volume without parameter 'name'" #initilize -pv = '/dev/sdd' +pv = '/dev/sdc' # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - on(agent, "pvremove #{pv}") + agents.each do |agent| + remove_all(agent, pv) + end end end diff --git a/tests/beaker/tests/create_pv_with_param_name.rb b/tests/beaker/tests/create_pv_with_param_name.rb index b0bbf22a..27cef97c 100755 --- a/tests/beaker/tests/create_pv_with_param_name.rb +++ b/tests/beaker/tests/create_pv_with_param_name.rb @@ -3,12 +3,14 @@ test_name "FM-4579 - C96590 - create physical volume with parameter 'name'" #initilize -pv = '/dev/sdd' +pv = '/dev/sdc' # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - on(agent, "pvremove #{pv}") + agents.each do |agent| + remove_all(agent, pv) + end end end diff --git a/tests/beaker/tests/create_pv_wo_param_name.rb b/tests/beaker/tests/create_pv_wo_param_name.rb index c7b9ccad..a5a86c4a 100755 --- a/tests/beaker/tests/create_pv_wo_param_name.rb +++ b/tests/beaker/tests/create_pv_wo_param_name.rb @@ -3,12 +3,14 @@ test_name "FM-4579 - C96646 - create physical volume without parameter 'name'" #initilize -pv = '/dev/sdd' +pv = '/dev/sdc' # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - on(agent, "pvremove #{pv}") + agents.each do |agent| + remove_all(agent, pv) + end end end diff --git a/tests/beaker/tests/create_vg_param_createonly.rb b/tests/beaker/tests/create_vg_param_createonly.rb index f3f93f0a..70f0d920 100755 --- a/tests/beaker/tests/create_vg_param_createonly.rb +++ b/tests/beaker/tests/create_vg_param_createonly.rb @@ -5,14 +5,15 @@ test_name "FM-4579 - C96596 - create volume group with parameter 'createonly'" #initilize -pv = '/dev/sdd' -vg = ("VG_" + SecureRandom.hex(3)) +pv = '/dev/sdc' +vg = ("VolumeGroup_" + SecureRandom.hex(3)) # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - on(agent, "vgremove #{vg}") - on(agent, "pvremove #{pv}") + agents.each do |agent| + remove_all(agent, pv, vg) + end end end diff --git a/tests/beaker/tests/create_vg_property_logical_volumes.rb b/tests/beaker/tests/create_vg_property_logical_volumes.rb index ac1a8714..404c05a4 100755 --- a/tests/beaker/tests/create_vg_property_logical_volumes.rb +++ b/tests/beaker/tests/create_vg_property_logical_volumes.rb @@ -5,17 +5,16 @@ test_name "FM-4579 - C97138 - create volume group with property 'logical_volumes'" #initilize -pv = '/dev/sdd' -vg = ("VG_" + SecureRandom.hex(3)) -lv = ("LV_" + SecureRandom.hex(2)) +pv = '/dev/sdc' +vg = ("VolumeGroup_" + SecureRandom.hex(3)) +lv = ("LogicalVolume_" + SecureRandom.hex(2)) # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - on(agent, "umount /dev/#{vg}/#{lv}", :acceptable_exit_codes => [0,1]) - on(agent, "lvremove /dev/#{vg}/#{lv} --force") - on(agent, "vgremove #{vg}") - on(agent, "pvremove #{pv}") + agents.each do |agent| + remove_all(agent, pv, vg, lv) + end end end @@ -25,7 +24,7 @@ class { 'lvm': '#{vg}' => { physical_volumes => '#{pv}', logical_volumes => { - '#{lv}' => {'size' => '2G'}, + '#{lv}' => {'size' => '200M'}, }, }, }, diff --git a/tests/beaker/tests/create_vg_property_physical_volumes.rb b/tests/beaker/tests/create_vg_property_physical_volumes.rb index 740c6966..1d8da46a 100755 --- a/tests/beaker/tests/create_vg_property_physical_volumes.rb +++ b/tests/beaker/tests/create_vg_property_physical_volumes.rb @@ -3,17 +3,17 @@ require 'securerandom' test_name "FM-4579 - C96597 - create volume group with property 'physical_volumes'" -test_name "FM-4579" #initilize -pv = '/dev/sdd' -vg = ("VG_" + SecureRandom.hex(3)) +pv = '/dev/sdc' +vg = ("VolumeGroup_" + SecureRandom.hex(3)) # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - on(agent, "vgremove #{vg}") - on(agent, "pvremove #{pv}") + agents.each do |agent| + remove_all(agent, pv, vg) + end end end diff --git a/tests/beaker/tests/create_vg_w_2_physical_volumes.rb b/tests/beaker/tests/create_vg_w_2_physical_volumes.rb index 27377003..465a9960 100755 --- a/tests/beaker/tests/create_vg_w_2_physical_volumes.rb +++ b/tests/beaker/tests/create_vg_w_2_physical_volumes.rb @@ -6,14 +6,13 @@ #initilize pv = ['/dev/sdc', '/dev/sdd'] -vg = ("VG_" + SecureRandom.hex(3)) +vg = ("VolumeGroup_" + SecureRandom.hex(3)) # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - on(agent, "vgremove #{vg}") - pv.each do |physical_vol| - on(agent, "pvremove #{physical_vol}") + agents.each do |agent| + remove_all(agent, pv, vg) end end end diff --git a/tests/beaker/tests/create_vg_w_param_name.rb b/tests/beaker/tests/create_vg_w_param_name.rb index 59bf66c9..9f10b4b3 100755 --- a/tests/beaker/tests/create_vg_w_param_name.rb +++ b/tests/beaker/tests/create_vg_w_param_name.rb @@ -5,14 +5,15 @@ test_name "FM-4579 - C96594 - create volume group without parameter 'name'" #initilize -pv = '/dev/sdd' -vg = ("VG_" + SecureRandom.hex(3)) +pv = '/dev/sdc' +vg = ("VolumeGroup_" + SecureRandom.hex(3)) # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - on(agent, "vgremove #{vg}") - on(agent, "pvremove #{pv}") + agents.each do |agent| + remove_all(agent, pv, vg) + end end end diff --git a/tests/beaker/tests/create_vg_wo_param_name.rb b/tests/beaker/tests/create_vg_wo_param_name.rb index 5e34e6be..ecf3a00e 100755 --- a/tests/beaker/tests/create_vg_wo_param_name.rb +++ b/tests/beaker/tests/create_vg_wo_param_name.rb @@ -5,14 +5,15 @@ test_name "FM-4579 - C96595 - create volume group without parameter 'name'" #initilize -pv = '/dev/sdd' -vg = ("VG_" + SecureRandom.hex(3)) +pv = '/dev/sdc' +vg = ("VolumeGroup_" + SecureRandom.hex(3)) # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - on(agent, "vgremove #{vg}") - on(agent, "pvremove #{pv}") + agents.each do |agent| + remove_all(agent, pv, vg) + end end end diff --git a/tests/beaker/tests/remove_lv.rb b/tests/beaker/tests/remove_lv.rb index b40d4dc3..dadb4681 100755 --- a/tests/beaker/tests/remove_lv.rb +++ b/tests/beaker/tests/remove_lv.rb @@ -5,15 +5,16 @@ test_name "FM-4579 - C96615 - remove logical volume" #initilize -pv = '/dev/sdd' -vg = ("VG_" + SecureRandom.hex(2)) -lv = ("LV_" + SecureRandom.hex(3)) +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 - on(agent, "vgremove #{vg}") - on(agent, "pvremove #{pv}") + agents.each do |agent| + remove_all(agent, pv, vg) + end end end @@ -30,7 +31,7 @@ logical_volume{'#{lv}': ensure => present, volume_group => '#{vg}', - size => '1G', + size => '100M', } MANIFEST diff --git a/tests/beaker/tests/remove_pv.rb b/tests/beaker/tests/remove_pv.rb index c742dc38..a1dafa25 100755 --- a/tests/beaker/tests/remove_pv.rb +++ b/tests/beaker/tests/remove_pv.rb @@ -5,14 +5,7 @@ test_name "FM-4579 - C96613 - remove physical volume" #initilize -pv = '/dev/sdd' - -# Teardown -teardown do - confine_block(:except, :roles => %w{master dashboard database}) do - #on(agent, "pvremove #{pv}") - end -end +pv = '/dev/sdc' pp = <<-MANIFEST physical_volume {'#{pv}': @@ -61,4 +54,4 @@ assert_no_match(/#{pv}/, result.stdout, 'Unexpected error was detected') end end -end \ No newline at end of file +end diff --git a/tests/beaker/tests/remove_vg.rb b/tests/beaker/tests/remove_vg.rb index 76d3159e..83026fc8 100755 --- a/tests/beaker/tests/remove_vg.rb +++ b/tests/beaker/tests/remove_vg.rb @@ -5,13 +5,15 @@ test_name "FM-4579 - C96614 - remove volume_group" #initilize -pv = '/dev/sdd' -vg = ("VG_" + SecureRandom.hex(3)) +pv = '/dev/sdc' +vg = ("VolumeGroup_" + SecureRandom.hex(3)) # Teardown teardown do confine_block(:except, :roles => %w{master dashboard database}) do - on(agent, "pvremove #{pv}") + agents.each do |agent| + remove_all(agent, pv) + end end end @@ -68,4 +70,4 @@ assert_no_match(/#{vg}/, result.stdout, 'Unexpected error was detected') end end -end \ No newline at end of file +end From 3f84ab65955c9c803c148f3af9483cb33b9e2375 Mon Sep 17 00:00:00 2001 From: phongdly Date: Mon, 25 Jan 2016 09:50:27 -0800 Subject: [PATCH 3/3] (FM-4615) LVM: create automated tests for filesystem --- tests/beaker/lib/lvm_helper.rb | 23 +++++++- ...te_ext2_filesystem_with_ensure_property.rb | 58 ++++++++++++++++++ .../create_ext3_filesystem_with_param_name.rb | 58 ++++++++++++++++++ ...eate_ext4_filesystem_with_param_fs_type.rb | 58 ++++++++++++++++++ .../create_filesystem_with_param_options.rb | 59 +++++++++++++++++++ .../tests/create_non-existing_filesystem.rb | 55 +++++++++++++++++ 6 files changed, 310 insertions(+), 1 deletion(-) create mode 100755 tests/beaker/tests/create_ext2_filesystem_with_ensure_property.rb create mode 100755 tests/beaker/tests/create_ext3_filesystem_with_param_name.rb create mode 100755 tests/beaker/tests/create_ext4_filesystem_with_param_fs_type.rb create mode 100755 tests/beaker/tests/create_filesystem_with_param_options.rb create mode 100755 tests/beaker/tests/create_non-existing_filesystem.rb diff --git a/tests/beaker/lib/lvm_helper.rb b/tests/beaker/lib/lvm_helper.rb index b0c2bc1f..d10718e6 100644 --- a/tests/beaker/lib/lvm_helper.rb +++ b/tests/beaker/lib/lvm_helper.rb @@ -1,4 +1,4 @@ -# Verify if a physical volume, volume group, logical volume, or filesystem resource type is created +# Verify if a physical volume, volume group, or logical volume is created successfully # # ==== Attributes # @@ -31,6 +31,27 @@ def verify_if_created?(agent, resource_type, resource_name) 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' +# +# ==== 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 diff --git a/tests/beaker/tests/create_ext2_filesystem_with_ensure_property.rb b/tests/beaker/tests/create_ext2_filesystem_with_ensure_property.rb new file mode 100755 index 00000000..7dce1cac --- /dev/null +++ b/tests/beaker/tests/create_ext2_filesystem_with_ensure_property.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_ext3_filesystem_with_param_name.rb b/tests/beaker/tests/create_ext3_filesystem_with_param_name.rb new file mode 100755 index 00000000..4da315e2 --- /dev/null +++ b/tests/beaker/tests/create_ext3_filesystem_with_param_name.rb @@ -0,0 +1,58 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4615 - C96566 - create filesystem with parameter 'name'" + +#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_ext4_filesystem_with_param_fs_type.rb b/tests/beaker/tests/create_ext4_filesystem_with_param_fs_type.rb new file mode 100755 index 00000000..8391859e --- /dev/null +++ b/tests/beaker/tests/create_ext4_filesystem_with_param_fs_type.rb @@ -0,0 +1,58 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4615 - C96568 - create ext4 filesystem with parameter 'fs_type'" + +#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_options.rb b/tests/beaker/tests/create_filesystem_with_param_options.rb new file mode 100755 index 00000000..f2a7a45e --- /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 ext4 filesystem with parameter 'fs_type'" + +#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 diff --git a/tests/beaker/tests/create_non-existing_filesystem.rb b/tests/beaker/tests/create_non-existing_filesystem.rb new file mode 100755 index 00000000..9d58fd11 --- /dev/null +++ b/tests/beaker/tests/create_non-existing_filesystem.rb @@ -0,0 +1,55 @@ +require 'master_manipulator' +require 'lvm_helper' +require 'securerandom' + +test_name "FM-4615 - C96568 - create ext4 filesystem with parameter 'fs_type'" + +#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