From 23501e81a346ca47b4d9030aa1842fab4030f6a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Gaidamour?= <jeremie.gaidamour@inria.fr> Date: Fri, 29 Apr 2016 14:41:11 +0200 Subject: [PATCH] [dev] Bug fix in hashdiff for pdu arrays --- .../check-cluster-homogeneity.rb | 39 ++++++++++++++++--- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/generators/input-validators/check-cluster-homogeneity.rb b/generators/input-validators/check-cluster-homogeneity.rb index 318e6243e3e..e1985da5289 100644 --- a/generators/input-validators/check-cluster-homogeneity.rb +++ b/generators/input-validators/check-cluster-homogeneity.rb @@ -43,8 +43,15 @@ def cluster_homogeneity(refapi_hash, verbose=false) pdu pdu.port pdu.uid - + pdu[0] + pdu[1] + supported_job_types.max_walltime + + mic.ip + mic.mac + + status ) ignore_netkeys = <<-eos @@ -107,15 +114,37 @@ eos #next if node_uid != 'graphene-2' diffs = HashDiff.diff(refnode, node) - + + # Hack HashDiff output for arrays: + #[["-", "pdu[1]", {"uid"=>"graphene-pdu9", "port"=>24}], + # ["-", "pdu[0]", {"uid"=>"graphene-pdu9", "port"=>23}], + # ["+", "pdu[0]", {"uid"=>"graphene-pdu9", "port"=>21}], + # ["+", "pdu[1]", {"uid"=>"graphene-pdu9", "port"=>22}]] + # => should be something like this: + # [["~", "pdu[0]", {"uid"=>"graphene-pdu9", "port"=>23}, {"uid"=>"graphene-pdu9", "port"=>22}, + # ["~", "pdu[1]", {"uid"=>"graphene-pdu9", "port"=>24}, {"uid"=>"graphene-pdu9", "port"=>23}} + d = diffs.select{|x| x[0] != '~' }.group_by{ |x| x[1] } + d.each { |k, v| + d[k] = v.group_by{ |x| x[0] } + } + d.each { |k,v| + if v.key?('-') && v.key?('+') + #puts "Warning: #{node_uid}: convert +/- -> ~ for #{k}" + diffs.delete(["-", k, v['-'][0][2]]) + diffs.delete(["+", k, v['+'][0][2]]) + diffs << ["~", k, v['-'][0][2], v['+'][0][2] ] + end + } + # end of hack + # Remove keys that are specific to each nodes (ip, mac etc.) diffs.clone.each { |diff| - diffs.delete(diff) if diff[0] == '~' && ignore_keys.include?(diff[1]) + diffs.delete(diff) if diff[0] == '~' && ignore_keys.include?(diff[1]) } if verbose && !diffs.empty? - puts "Differences between #{refnode_uid} and #{node_uid}:" - pp diffs + puts "Differences between #{refnode_uid} and #{node_uid}:" + pp diffs end count[site_uid][cluster_uid] += diffs.size -- GitLab