Skip to content

Instantly share code, notes, and snippets.

@justinstoller
Last active December 11, 2015 21:28
Show Gist options
  • Save justinstoller/4662376 to your computer and use it in GitHub Desktop.
Save justinstoller/4662376 to your computer and use it in GitHub Desktop.
test_name "Basic AIX Package Provider" do
# AIX Provider only should run on AIX machines
confine :to, :platform => /aix/
agents.each do |agent|
# Test variables
package = 'sudo.rte'
version1 = '1.7.10.4'
version2 = '1.8.6.4'
aix_repo = ENV['AIX_REPO'] || 'neptune.puppetlabs.lan/misc/'
dir = agent.tmpdir
# Fixture manifests
version1_manifest = <<-MANIFEST
package { '#{package}':
ensure => '#{version1}',
provider => aix,
source => '#{dir}',
}
MANIFEST
version2_manifest = <<-MANIFEST
package { '#{package}':
ensure => '#{version2}',
provider => aix,
source => '#{dir}',
}
MANIFEST
absent_manifest = <<-MANIFEST
package { '#{package}':
ensure => absent,
provider => aix,
source => '#{dir}',
}
MANIFEST
teardown do
on agent, "rm -rf #{dir}"
end
def assert_package_version(agent, package, expected_version)
# The output of lslpp is a colon-delimited list like:
# sudo:sudo.rte:1.8.6.4: : :C: :Configurable super-user privileges runtime: : : : : : :0:0:/:
# We want the version, so grab the third field
actual_version = on(
agent, "lslpp -qLc #{package} | cut -f3 -d:" ).stdout.chomp
assert_equal( expected_version,
actual_version,
"Installed package version #{actual_version} does not " +
"match expected version #{expected_version}" )
end
step "Retrieve remote packages" do
on agent, "mkdir -p #{dir}"
on agent, "curl #{aix_repo}/sudo.#{version1}.aix51.lam.bff > " +
"#{dir}/sudo.#{version1}.aix51.lam.bff"
on agent, "curl #{aix_repo}/sudo.#{version2}.aix51.lam.bff > " +
"#{dir}/sudo.#{version2}.aix51.lam.bff"
end
step "A user can install native AIX packages" do
apply_manifest_on agent, version1_manifest
assert_package_version agent, package, version1
end
step "A user can upgrade a package" do
apply_manifest_on agent, version2_manifest
assert_package_version agent, package, version2
end
step "Attempting to downgrade explicitly fails" do
downgrade = on( agent,
puppet_apply("--verbose", "--detailed-exitcodes"),
:stdin => version1_manifest,
:acceptable_exit_codes => [4,6] ).stdout
assert_match( /aix package provider is unable to downgrade packages/,
downgrade,
"Didn't get an error about downgrading packages" )
end
step "A user can uninstall packages" do
apply_manifest_on agent, absent_manifest
on agent, "lslpp -qLc #{package}", :acceptable_exit_codes => [1]
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment