checking tags: did it again
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Sat, 6 Dec 2008 23:14:36 +0000 (23:14 +0000)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Sat, 6 Dec 2008 23:14:36 +0000 (23:14 +0000)
system/plcsh-stress-test.py

index 6e14cd3..f8bffe8 100755 (executable)
@@ -926,54 +926,47 @@ class Test:
             node_fields = random_node(node_types,boot_states)
             self.api.UpdateNode(node_id, node_fields)
             
+            node = self.api.GetNodes([node_id])[0]
+
+            # Add to a random set of node groups
+            nodegroup_ids = random.sample(self.nodegroup_ids, randint(0, len(self.nodegroup_ids)))
+            for nodegroup_id in (set(nodegroup_ids) - set(node['nodegroup_ids'])):
+                nodegroup = self.api.GetNodeGroups([nodegroup_id])[0]
+                tagname = nodegroup['tagname']
+                node_tags = self.api.GetNodeTags({'node_id':node_id,'tagname':tagname})
+                if not node_tags:
+                    self.api.AddNodeTag(node_id,tagname,'yes')
+                else:
+                    node_tag=node_tags[0]
+                    self.api.UpdateNodeTag(node_tag['node_tag_id'],'yes')
+            for nodegroup_id in (set(node['nodegroup_ids']) - set(nodegroup_ids)):
+                nodegroup = self.api.GetNodeGroups([nodegroup_id])[0]
+                tagname = nodegroup['tagname']
+                node_tags = self.api.GetNodeTags({'node_id':node_id,'tagname':tagname})
+                if not node_tags:
+                    self.api.AddNodeTag(node_id,tagname,'no')
+                else:
+                    node_tag=node_tags[0]
+                    self.api.UpdateNodeTag(node_tag['node_tag_id'],'no')
+
             if self.check:
-                # for testing node arch
-                check=node_fields.copy()
-                columns=node_fields.keys()
-                for tagname in tag_fields:
-                    check.pop(tagname)
-                    columns.remove(tagname)
-
-                node = self.api.GetNodes([node_id],columns)[0]
-                if dict(node) != check:
-                    raise Exception,'Unexpected result in GetNodes() %r vs %r'%(node,check)
-            
+                # Check node
+                node = self.api.GetNodes([node_id])[0]
+                for field in node_fields:
+                    if field not in tag_fields:
+                        if node[field] != node_fields[field]:
+                            raise Exception, "Unexpected field %s in node after GetNodes()"%field
+                assert set(nodegroup_ids) == set(node['nodegroup_ids'])
+
                 print 'WARNING: skipping updatenode with tags as this is not implemented yet'
-#                # again when fetching 'arch' explicitly
-#                node = self.api.GetNodes([node_id],columns+tag_fields)[0]
-#                if dict(node) != node_fields:
-#                    raise Exception,"Unexpected result in GetNodes() with tags %r vs %r"%(node,node_fields)
+                # again when fetching 'arch' explicitly
+                node2 = self.api.GetNodes([node_id],node_fields.keys())[0]
+                for field in node_fields:
+                    if node2[field] != node_fields[field]:
+                        raise Exception, "Unexpected field %s in node after GetNodes(tags)"%field
 
-                # Add to a random set of node groups
-                nodegroup_ids = random.sample(self.nodegroup_ids, randint(0, len(self.nodegroup_ids)))
-                for nodegroup_id in (set(nodegroup_ids) - set(node['nodegroup_ids'])):
-                    nodegroup = self.api.GetNodeGroups([nodegroup_id])[0]
-                    tagname = nodegroup['tagname']
-                    node_tags = self.api.GetNodeTags({'node_id':node_id,'tagname':tagname})
-                    if not node_tags:
-                        self.api.AddNodeTag(node_id,tagname,'yes')
-                    else:
-                        node_tag=node_tags[0]
-                        self.api.UpdateNodeTag(node_tag['node_tag_id'],'yes')
-                for nodegroup_id in (set(node['nodegroup_ids']) - set(nodegroup_ids)):
-                    nodegroup = self.api.GetNodeGroups([nodegroup_id])[0]
-                    tagname = nodegroup['tagname']
-                    node_tags = self.api.GetNodeTags({'node_id':node_id,'tagname':tagname})
-                    if not node_tags:
-                        self.api.AddNodeTag(node_id,tagname,'no')
-                    else:
-                        node_tag=node_tags[0]
-                        self.api.UpdateNodeTag(node_tag['node_tag_id'],'no')
-    
-                if self.check:
-                    # Check node
-                    node = self.api.GetNodes([node_id])[0]
-                    for field in node_fields:
-                        assert node[field] == node_fields[field]
-                    assert set(nodegroup_ids) == set(node['nodegroup_ids'])
-    
-                if self.verbose:
-                    print "Updated node", node_id
+            if self.verbose:
+                print "Updated node", node_id
 
     def DeleteNodes(self):
         """