]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
kcc.graph_utils: shift debug noise out of verify()
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Wed, 14 Mar 2018 23:01:10 +0000 (12:01 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 30 May 2018 23:57:16 +0000 (01:57 +0200)
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/kcc/graph.py
python/samba/kcc/graph_utils.py

index fb3ca0c81c2a447ca80e8d77d758a23f8da37336..9dfc541548fccb38bc1d72bb53bdfff2739ec88f 100644 (file)
@@ -184,10 +184,13 @@ def get_spanning_tree_edges(graph, my_site, label=None, verify=False,
                                vertices=graph_nodes, label=label)
 
             if verify:
-                verify_graph('spanning tree edge set %s' % edgeType,
-                             graph_edges, vertices=graph_nodes,
-                             properties=('complete', 'connected'),
-                             debug=DEBUG)
+                errors = verify_graph(graph_edges, vertices=graph_nodes,
+                                      properties=('complete', 'connected'))
+                if errors:
+                    DEBUG('spanning tree edge set %s FAILED' % edgeType)
+                    for p, e in errors:
+                        DEBUG("%18s: %s" % (p, e))
+                    raise KCCError("spanning tree failed")
 
         # Run dijkstra's algorithm with just the red vertices as seeds
         # Seed from the full replicas
index 086b651220174b260fcd288e8d2b545a8d241e09..e4fa821c79866a4623c116448b44fdc8ee869ffc 100644 (file)
@@ -274,12 +274,8 @@ def verify_graph_directed_double_ring_or_small(edges, vertices, edge_vertices):
     return verify_graph_directed_double_ring(edges, vertices, edge_vertices)
 
 
-def verify_graph(title, edges, vertices=None, directed=False, properties=(),
-                 fatal=True, debug=null_debug):
+def verify_graph(edges, vertices=None, directed=False, properties=()):
     errors = []
-    debug("%sStarting verify_graph for %s%s%s" % (PURPLE, MAGENTA, title,
-                                                  C_NORMAL))
-
     properties = [x.replace(' ', '_') for x in properties]
 
     edge_vertices = set()
@@ -291,31 +287,16 @@ def verify_graph(title, edges, vertices=None, directed=False, properties=(),
         vertices = edge_vertices
     else:
         vertices = set(vertices)
-        if vertices != edge_vertices:
-            debug("vertices in edges don't match given vertices:\n %s != %s" %
-                  (sorted(edge_vertices), sorted(vertices)))
 
     for p in properties:
         fn = 'verify_graph_%s' % p
-        try:
-            f = globals()[fn]
-        except KeyError:
-            errors.append((p, "There is no verification check for '%s'" % p))
+        f = globals()[fn]
         try:
             f(edges, vertices, edge_vertices)
-            debug(" %s%18s:%s verified!" % (DARK_GREEN, p, C_NORMAL))
         except GraphError as e:
             errors.append((p, e))
 
-    if errors:
-        if fatal:
-            raise GraphError("The '%s' graph lacks the following properties:"
-                             "\n%s" %
-                             (title, '\n'.join('%s: %s' % x for x in errors)))
-        debug(("%s%s%s FAILED:" % (MAGENTA, title, RED)))
-        for p, e in errors:
-            debug(" %18s: %s%s%s" % (p, DARK_YELLOW, e, RED))
-        debug(C_NORMAL)
+    return errors
 
 
 def verify_and_dot(basename, edges, vertices=None, label=None,
@@ -325,10 +306,6 @@ def verify_and_dot(basename, edges, vertices=None, label=None,
                    edge_colors=None, edge_labels=None,
                    vertex_colors=None):
 
-    title = '%s %s' % (basename, label or '')
-    if verify:
-        verify_graph(title, edges, vertices, properties=properties,
-                     fatal=fatal, debug=debug)
     if dot_file_dir is not None:
         write_dot_file(basename, edges, vertices=vertices, label=label,
                        dot_file_dir=dot_file_dir,
@@ -336,6 +313,20 @@ def verify_and_dot(basename, edges, vertices=None, label=None,
                        debug=debug, edge_colors=edge_colors,
                        edge_labels=edge_labels, vertex_colors=vertex_colors)
 
+    if verify:
+        errors = verify_graph(edges, vertices,
+                              properties=properties)
+        if errors:
+            title = '%s %s' % (basename, label or '')
+            debug(("%s%s%s FAILED:" % (MAGENTA, title, RED)))
+            for p, e in errors:
+                debug(" %18s: %s%s%s" % (p, DARK_YELLOW, e, RED))
+            if fatal:
+                raise GraphError("The '%s' graph lacks the following "
+                                 "properties:\n%s" %
+                                 (title, '\n'.join('%s: %s' % x
+                                                   for x in errors)))
+
 
 def list_verify_tests():
     for k, v in sorted(globals().items()):