more test fixes and pdksync litmus
authortphoney <tp@puppet.com>
Wed, 12 Jun 2019 10:32:24 +0000 (11:32 +0100)
committertphoney <tp@puppet.com>
Thu, 13 Jun 2019 10:53:13 +0000 (11:53 +0100)
.sync.yml
.travis.yml
Gemfile
distelli-manifest.yml [new file with mode: 0644]
metadata.json
provision.yaml
spec/acceptance/apt_key_provider_spec.rb
spec/acceptance/init_task_spec.rb
spec/spec_helper_acceptance.rb
spec/spec_helper_acceptance_local.rb [new file with mode: 0644]

index 4adfb674a03b03bdf35c8a44461d9ed898702481..947242e2e843a605795f8857df4dd40ee61f1fdc 100644 (file)
--- a/.sync.yml
+++ b/.sync.yml
       - rubocop-rspec
 
 .travis.yml:
-  docker_sets:
-    - set: docker/debian-8
-    - set: docker/ubuntu-14.04
-  docker_defaults:
-    bundler_args: ""
-  secure: ""
-  branches:
-    - release
+  unmanaged: true
 
 appveyor.yml:
   delete: true
 
 Gemfile:
   required:
-    ':system_tests':
-      - gem: 'puppet-module-posix-system-r#{minor_version}'
-        platforms: ruby
-      - gem: 'puppet-module-win-system-r#{minor_version}'
-        platforms:
-          - mswin
-          - mingw
-          - x64_mingw
+    ':development':
       - gem: 'puppet_litmus'
         platforms:
           - ruby
@@ -43,6 +29,7 @@ Gemfile:
           - mingw
           - x64_mingw
         condition: "ENV['PUPPET_GEM_VERSION'].nil? or ENV['PUPPET_GEM_VERSION'] !~ %r{ 5}"
+      - gem: 'serverspec'
   optional:
     ':development':
       - gem: 'github_changelog_generator'
index 612b4c2e9533db57e397604d723db32d1a0e1c60..0b2378e38c1e0e6174aca8efa604271a6253f2ab 100644 (file)
@@ -26,7 +26,7 @@ matrix:
       bundler_args:
       dist: trusty
       env: PLATFORMS=deb_puppet5
-      rvm: 2.5.1
+      rvm: 2.5.3
       before_script:
       - bundle exec rake 'litmus:provision_list[travis_deb]'
       - bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'
@@ -40,8 +40,8 @@ matrix:
     -
       bundler_args:
       dist: trusty
-      env: PLATFORM=centos:deb_puppet6
-      rvm: 2.5.1
+      env: PLATFORM=deb_puppet6
+      rvm: 2.5.3
       before_script:
       - bundle exec rake 'litmus:provision_list[travis_deb]'
       - bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'
diff --git a/Gemfile b/Gemfile
index e6c82f2417238c743138db88eaff7ccebfbd50b5..070bd8bf2b32a75f43b86c57b53b6a9282ddb140 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -27,14 +27,11 @@ group :development do
   gem "puppet-module-posix-dev-r#{minor_version}", '~> 0.3',     require: false, platforms: [:ruby]
   gem "puppet-module-win-default-r#{minor_version}", '~> 0.3',   require: false, platforms: [:mswin, :mingw, :x64_mingw]
   gem "puppet-module-win-dev-r#{minor_version}", '~> 0.3',       require: false, platforms: [:mswin, :mingw, :x64_mingw]
+  gem "puppet_litmus",                                           require: false, platforms: [:ruby, :mswin, :mingw, :x64_mingw] if ENV['PUPPET_GEM_VERSION'].nil? or ENV['PUPPET_GEM_VERSION'] !~ %r{ 5}
+  gem "serverspec",                                              require: false
   gem "github_changelog_generator",                              require: false, git: 'https://github.com/skywinder/github-changelog-generator', ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018' if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')
   gem "puppet-lint-i18n",                                        require: false
 end
-group :system_tests do
-  gem "puppet-module-posix-system-r#{minor_version}", require: false, platforms: [:ruby]
-  gem "puppet-module-win-system-r#{minor_version}",   require: false, platforms: [:mswin, :mingw, :x64_mingw]
-  gem "puppet_litmus",                                require: false, platforms: [:ruby, :mswin, :mingw, :x64_mingw] if ENV['PUPPET_GEM_VERSION'].nil? or ENV['PUPPET_GEM_VERSION'] !~ %r{ 5}
-end
 
 puppet_version = ENV['PUPPET_GEM_VERSION']
 facter_version = ENV['FACTER_GEM_VERSION']
diff --git a/distelli-manifest.yml b/distelli-manifest.yml
new file mode 100644 (file)
index 0000000..294ac2e
--- /dev/null
@@ -0,0 +1,25 @@
+team-modules/puppetlabs-apt:
+  PreBuild:
+    - source /opt/rh/rh-ruby25/enable
+    - echo "--- LETS update BUNDLER ---"
+    - bundle install --path vendor/bundle --jobs 3
+  Build:
+    - echo "--- PROVISIONING ---"
+    - source /opt/rh/rh-ruby25/enable
+    - bundle exec rake litmus:provision_list[release_checks]
+    - cat inventory.yaml
+    - echo "--- AGENT INSTALLATION ---"
+    - bundle exec rake litmus:install_agent
+    - echo "--- MODULE INSTALLATION ---"
+    - bundle exec rake litmus:install_module
+    - echo "--- TESTS RUNNING ---"
+    - bundle exec rake litmus:acceptance:parallel
+  AfterBuildSuccess:
+    - source /opt/rh/rh-ruby25/enable
+    - bundle exec rake litmus:tear_down
+  AfterBuildFailure:
+    - source /opt/rh/rh-ruby25/enable
+    - bundle exec rake litmus:tear_down
+  CommitData:
+    - RepoType: Git
+    - RepoPath: .
index 085fe21fa4ed87dc028b46cd6d52d3121c1abf5d..7995122c16cc269458002fff52ed1aff93192280 100644 (file)
@@ -40,7 +40,7 @@
       "version_requirement": ">= 5.5.10 < 7.0.0"
     }
   ],
-  "template-url": "https://github.com/puppetlabs/pdk-templates#master",
+  "template-url": "https://github.com/puppetlabs/pdk-templates/#master",
   "template-ref": "heads/master-0-g7827fc2",
   "pdk-version": "1.10.0"
 }
index 62951bf7bd309832f091f4de7982b39377acef8c..e20c29d96d324753f6b50cae54f48a41a4711d08 100644 (file)
@@ -8,3 +8,6 @@ travis_deb:
 waffle_deb:
   provisioner: docker 
   images: ['waffleimage/debian8', 'waffleimage/debian9', 'waffleimage/ubuntu14.04', 'waffleimage/ubuntu16.04', 'waffleimage/ubuntu18.04']
+release_checks:
+  provisioner: vmpooler
+  images: ['debian-8-x86_64', 'debian-9-x86_64',  'ubuntu-1404-x86_64', 'ubuntu-1604-x86_64', 'ubuntu-1804-x86_64']
index 3e38a6dc4682c4ab588c7e4916ae80363e0f4cf0..0c4539d83be9caed15237dee5a23b0ff920b406c 100644 (file)
@@ -888,15 +888,16 @@ describe 'apt_key' do
   end
 
   describe 'refresh' do
-    if os[:family] == 'debian' && (os[:distro][:codename] == 'stretch' || os[:distro][:codename] == 'bionic')
-      # Set Debian Stetch specific value of puppetlabs_exp_check_command
+    if ['8', '14.04', '16.04'].include?(host_inventory['facter']['os']['release']['major'])
+      # older OSes use puppetlabs_exp_check_command
+      let(:puppetlabs_exp_check_command) { PUPPETLABS_EXP_CHECK_COMMAND }
+
+    else
+      # Set Debian Stetch and newer OSes puppetlabs_exp_check_command
       let(:puppetlabs_exp_check_command) { DEBIAN_PUPPETLABS_EXP_CHECK_COMMAND }
 
       # Ensure dirmngr package is installed
       apply_manifest(refresh_check_for_dirmngr_pp, acceptable_exit_codes: [0, 2])
-    else
-      # Set default value of puppetlabs_exp_check_command
-      let(:puppetlabs_exp_check_command) { PUPPETLABS_EXP_CHECK_COMMAND }
     end
     before(:each) do
       # Delete the Puppet Labs Release Key and install an expired version of the key
index a95ef5df128dd07b85133be363b74020e2b5a56e..f35d2fc02b77c8c110df41ea443a2ebd727687ce 100644 (file)
@@ -1,29 +1,29 @@
 # run a test task
 require 'spec_helper_acceptance'
 
-describe 'apt tasks', if: pe_install? && puppet_version =~ %r{(5\.\d\.\d)} && fact_on(master, 'osfamily') == 'Debian' do
+describe 'apt tasks' do
   describe 'update' do
     it 'updates package lists' do
-      result = run_task(task_name: 'apt', params: 'action=update')
-      expect_multiple_regexes(result: result, regexes: [%r{Reading package lists}, %r{Job completed. 1/1 nodes succeeded}])
+      result = run_bolt_task('apt', 'action' => 'update')
+      expect(result.stdout).to contain(%r{Reading package lists})
     end
   end
   describe 'upgrade' do
     it 'upgrades packages' do
-      result = run_task(task_name: 'apt', params: 'action=upgrade')
-      expect_multiple_regexes(result: result, regexes: [%r{\d+ upgraded, \d+ newly installed, \d+ to remove and \d+ not upgraded}, %r{Job completed. 1/1 nodes succeeded}])
+      result = run_bolt_task('apt', 'action' => 'upgrade')
+      expect(result.stdout).to contain(%r{\d+ upgraded, \d+ newly installed, \d+ to remove and \d+ not upgraded})
     end
   end
   describe 'dist-upgrade' do
     it 'dist-upgrades packages' do
-      result = run_task(task_name: 'apt', params: 'action=dist-upgrade')
-      expect_multiple_regexes(result: result, regexes: [%r{\d+ upgraded, \d+ newly installed, \d+ to remove and \d+ not upgraded}, %r{Job completed. 1/1 nodes succeeded}])
+      result = run_bolt_task('apt', 'action' => 'dist-upgrade')
+      expect(result.stdout).to contain(%r{\d+ upgraded, \d+ newly installed, \d+ to remove and \d+ not upgraded})
     end
   end
   describe 'autoremove' do
     it 'autoremoves obsolete packages' do
-      result = run_task(task_name: 'apt', params: 'action=autoremove')
-      expect_multiple_regexes(result: result, regexes: [%r{\d+ upgraded, \d+ newly installed, \d+ to remove and \d+ not upgraded}, %r{Job completed. 1/1 nodes succeeded}])
+      result = run_bolt_task('apt', 'action' => 'autoremove')
+      expect(result.stdout).to contain(%r{\d+ upgraded, \d+ newly installed, \d+ to remove and \d+ not upgraded})
     end
   end
 end
index 7cd8fdffe9331f6cd6cd614ac23a60c01af39d19..2bb630c820437a8889a16654a097040618f0e836 100644 (file)
@@ -5,39 +5,6 @@ require 'puppet_litmus'
 require 'spec_helper_acceptance_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_acceptance_local.rb'))
 include PuppetLitmus
 
-UNSUPPORTED_PLATFORMS = ['RedHat', 'Suse', 'windows', 'AIX', 'Solaris'].freeze
-MAX_RETRY_COUNT       = 5
-RETRY_WAIT            = 3
-ERROR_MATCHER         = %r{(no valid OpenPGP data found|keyserver timed out|keyserver receive failed)}
-
-# This method allows a block to be passed in and if an exception is raised
-# that matches the 'error_matcher' matcher, the block will wait a set number
-# of seconds before retrying.
-# Params:
-# - max_retry_count - Max number of retries
-# - retry_wait_interval_secs - Number of seconds to wait before retry
-# - error_matcher - Matcher which the exception raised must match to allow retry
-# Example Usage:
-# retry_on_error_matching(3, 5, /OpenGPG Error/) do
-#   apply_manifest(pp, :catch_failures => true)
-# end
-def retry_on_error_matching(max_retry_count = MAX_RETRY_COUNT, retry_wait_interval_secs = RETRY_WAIT, error_matcher = ERROR_MATCHER)
-  try = 0
-  begin
-    puts "retry_on_error_matching: try #{try}" unless try.zero?
-    try += 1
-    yield
-  rescue StandardError => e
-    raise(_('Attempted this %{value0} times. Raising %{value1}') % { value0: max_retry_count, value1: e }) unless try < max_retry_count && (error_matcher.nil? || e.message =~ error_matcher)
-    sleep retry_wait_interval_secs
-    retry
-  end
-end
-
-def pe_install?
-  false
-end
-
 if ENV['TARGET_HOST'].nil? || ENV['TARGET_HOST'] == 'localhost'
   puts 'Running tests against this machine !'
   if Gem.win_platform?
@@ -69,7 +36,6 @@ else
            end
     set :host,        options[:host_name] || host
     set :ssh_options, options
-    set :request_pty, true
   elsif target_in_group(inventory_hash, ENV['TARGET_HOST'], 'winrm_nodes')
     require 'winrm'
 
@@ -89,13 +55,4 @@ else
     winrm = WinRM::Connection.new opts
     Specinfra.configuration.winrm = winrm
   end
-
-  lsb_package = <<-MANIFEST
-    package { 'lsb-release':
-           ensure => installed,
-    }
-    MANIFEST
-
-  apply_manifest(lsb_package)
-  run_shell('puppet module install stahnma/epel')
 end
diff --git a/spec/spec_helper_acceptance_local.rb b/spec/spec_helper_acceptance_local.rb
new file mode 100644 (file)
index 0000000..4022171
--- /dev/null
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+UNSUPPORTED_PLATFORMS = ['RedHat', 'Suse', 'windows', 'AIX', 'Solaris'].freeze
+MAX_RETRY_COUNT       = 5
+RETRY_WAIT            = 3
+ERROR_MATCHER         = %r{(no valid OpenPGP data found|keyserver timed out|keyserver receive failed)}
+
+# this is needed for puppet facts / apply
+lsb_package = <<-MANIFEST
+package { 'lsb-release':
+  ensure => installed,
+}
+MANIFEST
+
+include PuppetLitmus
+apply_manifest(lsb_package)
+
+# This method allows a block to be passed in and if an exception is raised
+# that matches the 'error_matcher' matcher, the block will wait a set number
+# of seconds before retrying.
+# Params:
+# - max_retry_count - Max number of retries
+# - retry_wait_interval_secs - Number of seconds to wait before retry
+# - error_matcher - Matcher which the exception raised must match to allow retry
+# Example Usage:
+# retry_on_error_matching(3, 5, /OpenGPG Error/) do
+#   apply_manifest(pp, :catch_failures => true)
+# end
+
+def retry_on_error_matching(max_retry_count = MAX_RETRY_COUNT, retry_wait_interval_secs = RETRY_WAIT, error_matcher = ERROR_MATCHER)
+  try = 0
+  begin
+    puts "retry_on_error_matching: try #{try}" unless try.zero?
+    try += 1
+    yield
+  rescue StandardError => e
+    raise('Attempted this %{value0} times. Raising %{value1}' % { value0: max_retry_count, value1: e }) unless try < max_retry_count && (error_matcher.nil? || e.message =~ error_matcher)
+    sleep retry_wait_interval_secs
+    retry
+  end
+end