From f4067536c87e0418a1bfce53183c7b16a3e484c1 Mon Sep 17 00:00:00 2001
From: Patrick J Cherry <patrick@bytemark.co.uk>
Date: Thu, 11 Dec 2014 12:40:22 +0000
Subject: Further tidying the DNS class to use an array rather than a string to
 compare stuff.

---
 lib/custodian/protocoltest/dns.rb | 32 +++++++++++---------------------
 1 file changed, 11 insertions(+), 21 deletions(-)

(limited to 'lib')

diff --git a/lib/custodian/protocoltest/dns.rb b/lib/custodian/protocoltest/dns.rb
index d8f65c0..b64f128 100644
--- a/lib/custodian/protocoltest/dns.rb
+++ b/lib/custodian/protocoltest/dns.rb
@@ -55,7 +55,7 @@ module Custodian
         if ( line =~ /for\s+([^\s]+)\sresolving\s([A-Z]+)\s+as\s'([^']+)'/ )
           @resolve_name     = $1.dup
           @resolve_type     = $2.dup
-          @resolve_expected = $3.dup.downcase
+          @resolve_expected = $3.dup.downcase.split(/[\s,]+/)
         end
 
         #
@@ -103,20 +103,19 @@ module Custodian
         #
         # Do the lookup
         #
-        results = resolve_via( @host,  @resolve_type, @resolve_name, period )
+        results = resolve_via( @host,  resolve_type, resolve_name, period )
         return false if ( results.nil? )
 
         #
         # OK we have an array of results.  If every one of the expected
         # results is contained in those results returned then we're good.
         #
-        expected = 0
-        if ( results != @resolve_expected )
-          @error = "When resolving the name #{@resolve_name} [#{resolve_type}-record lookup] against DNS-server #{@host} we received an error.  The expected result '#{@resolve_expected}' didn't match the returned results '#{results}'"
-          return false
+
+        if ( !(results - @resolve_expected).empty? or !(@resolve_expected - results).empty? )
+          @error = "DNS server *#{@host}* returned the wrong records for `#{resolve_name} IN #{resolve_type}`.\n\nWe expected:\n * #{resolve_expected.join("\n * ")}\n\nWe got:\n * #{results.join("\n * ")}\n"
         end
 
-        true
+        return @error.nil?
       end
 
 
@@ -151,10 +150,12 @@ module Custodian
                   return nil
                 end
               end
-            rescue Exception => x
+
+            rescue StandardError => x
               @error = "Exception was received when resolving : #{x}"
               return nil
             end
+
           end
         rescue Timeout::Error => e
           @error = "Timed-out performing DNS lookups #{e}"
@@ -162,19 +163,9 @@ module Custodian
         end
 
         #
-        #  Flatten via a hash.
+        # Flatten, sort, uniq
         #
-        h = Hash.new()
-        results.sort.each do |key|
-          if ( key.kind_of? Array )
-            key.each do |n|
-              h[n]=1
-            end
-          else
-            h[key]=1
-          end
-        end
-        h.keys.sort!.join( "," )
+        results.flatten.sort.uniq
       end
 
 
@@ -193,7 +184,6 @@ module Custodian
 
 
 
-
     end
   end
 end
-- 
cgit v1.2.3