Merge pull request #631 from wilson208/key-server-timeout-fix
[puppet-modules/puppetlabs-apt.git] / spec / acceptance / apt_spec.rb
index 882c066fd8a020be5e0501a72a95046c4922fea5..52415f5afaecb4e0cfe28fbe2af689c3ffad3f77 100644 (file)
@@ -1,5 +1,9 @@
 require 'spec_helper_acceptance'
 
+MAX_TIMEOUT_RETRY              = 3
+TIMEOUT_RETRY_WAIT             = 5
+TIMEOUT_ERROR_MATCHER    = /no valid OpenPGP data found/
+
 describe 'apt class' do
 
   context 'reset' do
@@ -11,6 +15,21 @@ describe 'apt class' do
   context 'all the things' do
     it 'should work with no errors' do
       pp = <<-EOS
+      if $::lsbdistcodename == 'lucid' {
+        $sources = undef
+      } else {
+        $sources = {
+          'puppetlabs' => {
+            'ensure'   => present,
+            'location' => 'http://apt.puppetlabs.com',
+            'repos'    => 'main',
+            'key'      => {
+              'id'     => '6F6B15509CF8E59E6E469F327F438280EF8D349F',
+              'server' => 'hkps.pool.sks-keyservers.net',
+            },
+          },
+        }
+      }
       class { 'apt':
         update => {
           'frequency' => 'always',
@@ -23,23 +42,15 @@ describe 'apt class' do
           'preferences'    => true,
           'preferences.d'  => true,
         },
-        sources => ? $::lsbdiscodename {
-          'lucid' => undef,
-          default => { 'puppetlabs' => {
-              'ensure'   => present,
-              'location' => 'http://apt.puppetlabs.com',
-              'repos'    => 'main',
-              'key'      => {
-                'id'     => '47B320EB4C7C375AA9DAE1A01054B7A24BD6EC30',
-                'server' => 'pgp.mit.edu',
-              },
-            },
-          },
-        },
+        sources => $sources,
       }
       EOS
 
-      apply_manifest(pp, :catch_failures => true)
+      #Apply the manifest (Retry if timeout error is received from key pool)
+      retry_on_error_matching(MAX_TIMEOUT_RETRY, TIMEOUT_RETRY_WAIT, TIMEOUT_ERROR_MATCHER) do
+        apply_manifest(pp, :catch_failures => true)
+      end
+
       apply_manifest(pp, :catch_failures => true)
     end
     it 'should still work' do