[Oval-commits] r37 - trunk/tools/oval/definition

Pavel Vinogradov blaze-guest at alioth.debian.org
Sat Jun 9 15:51:30 UTC 2007


Author: blaze-guest
Date: 2007-06-09 15:51:30 +0000 (Sat, 09 Jun 2007)
New Revision: 37

Modified:
   trunk/tools/oval/definition/generator.py
   trunk/tools/oval/definition/generator.pyc
Log:
Cache release and architecture tests.

Modified: trunk/tools/oval/definition/generator.py
===================================================================
--- trunk/tools/oval/definition/generator.py	2007-06-08 19:06:40 UTC (rev 36)
+++ trunk/tools/oval/definition/generator.py	2007-06-09 15:51:30 UTC (rev 37)
@@ -34,6 +34,9 @@
 objectsCurId = 1
 statesCurId = 1
 
+archTests = {}
+releaseTests = {}
+
 def __getNewId (type):
 	global testsCurId, objectsCurId, statesCurId
 	  
@@ -81,62 +84,75 @@
 	return (ref)
 
 def __createReleaseTest(version):
-	ref = __getNewId("test")
 	
-	test = __createXMLElement("dpkginfo_test", 
-							  attrs={"id":ref, "version":"1", "check":"all",
-									 "xmlns":"http://oval.mitre.org/XMLSchema/oval-deinitions-5#linux"})
+	global releaseTests
 	
-	objectId = __getNewId ("object");
-	test.appendChild ( __createXMLElement("object", attrs={"object_ref" : objectId}))
-	stateId = __getNewId ("state")
-	test.appendChild ( __createXMLElement("state", attrs={"state_ref" : stateId}))
-	tests.appendChild(test)
+	if not releaseTests.has_key(version):
+
+		ref = __getNewId("test")
+		
+		test = __createXMLElement("dpkginfo_test", 
+								  attrs={"id":ref, "version":"1", "check":"all",
+										 "xmlns":"http://oval.mitre.org/XMLSchema/oval-deinitions-5#linux"})
+		
+		objectId = __getNewId ("object");
+		test.appendChild ( __createXMLElement("object", attrs={"object_ref" : objectId}))
+		stateId = __getNewId ("state")
+		test.appendChild ( __createXMLElement("state", attrs={"state_ref" : stateId}))
+		tests.appendChild(test)
+		
+		object = __createXMLElement("dpkginfo_object", 
+								  attrs={"id":objectId, "version":"1",
+										 "xmlns":"http://oval.mitre.org/XMLSchema/oval-deinitions-5#linux"})
+		object.appendChild ( __createXMLElement ("name", "debian_version"))
+		objects.appendChild (object)
+		
+		state = __createXMLElement("dpkginfo_state", 
+								  attrs={"id":stateId, "version":"1",
+										 "xmlns":"http://oval.mitre.org/XMLSchema/oval-deinitions-5#linux"})
+		state.appendChild ( __createXMLElement 
+							 ("evr", version, 
+							  {"datatype":"evr_string", "operation":"equals"}))
+		states.appendChild (state)
+		
+		releaseTests[version] = ref
 	
-	object = __createXMLElement("dpkginfo_object", 
-							  attrs={"id":objectId, "version":"1",
-									 "xmlns":"http://oval.mitre.org/XMLSchema/oval-deinitions-5#linux"})
-	object.appendChild ( __createXMLElement ("name", "debian_version"))
-	objects.appendChild (object)
-	
-	state = __createXMLElement("dpkginfo_state", 
-							  attrs={"id":stateId, "version":"1",
-									 "xmlns":"http://oval.mitre.org/XMLSchema/oval-deinitions-5#linux"})
-	state.appendChild ( __createXMLElement 
-						 ("evr", version, 
-						  {"datatype":"evr_string", "operation":"equals"}))
-	states.appendChild (state)
-	
-	return (ref)
+	return (releaseTests[version])
 
 def __createArchTest(arch):
+
+	global archTests
 	
-	ref = __getNewId ("test")
-	test = __createXMLElement("dpkginfo_test", 
-							  attrs={"id":ref, "version":"1", "check":"all",
-									 "xmlns":"http://oval.mitre.org/XMLSchema/oval-deinitions-5#linux"})
+	if not archTests.has_key(arch):
+
+		ref = __getNewId ("test")
+		test = __createXMLElement("dpkginfo_test", 
+								  attrs={"id":ref, "version":"1", "check":"all",
+										 "xmlns":"http://oval.mitre.org/XMLSchema/oval-deinitions-5#linux"})
+		
+		objectId = __getNewId ("object");
+		test.appendChild ( __createXMLElement("object", attrs={"object_ref" : objectId}))
+		stateId = __getNewId ("state")
+		test.appendChild ( __createXMLElement("state", attrs={"state_ref" : stateId}))
+		tests.appendChild(test)
+		
+		object = __createXMLElement("dpkginfo_object", 
+								  attrs={"id":objectId, "version":"1",
+										 "xmlns":"http://oval.mitre.org/XMLSchema/oval-deinitions-5#linux"})
+		object.appendChild ( __createXMLElement ("name", "architecture"))
+		objects.appendChild (object)
+		
+		state = __createXMLElement("dpkginfo_state", 
+								  attrs={"id":stateId, "version":"1",
+										 "xmlns":"http://oval.mitre.org/XMLSchema/oval-deinitions-5#linux"})
+		state.appendChild ( __createXMLElement 
+							 ("evr", arch, 
+							  {"datatype":"evr_string", "operation":"equals"}))
+		states.appendChild (state)
+		
+		archTests[arch] = ref
 	
-	objectId = __getNewId ("object");
-	test.appendChild ( __createXMLElement("object", attrs={"object_ref" : objectId}))
-	stateId = __getNewId ("state")
-	test.appendChild ( __createXMLElement("state", attrs={"state_ref" : stateId}))
-	tests.appendChild(test)
-	
-	object = __createXMLElement("dpkginfo_object", 
-							  attrs={"id":objectId, "version":"1",
-									 "xmlns":"http://oval.mitre.org/XMLSchema/oval-deinitions-5#linux"})
-	object.appendChild ( __createXMLElement ("name", "architecture"))
-	objects.appendChild (object)
-	
-	state = __createXMLElement("dpkginfo_state", 
-							  attrs={"id":stateId, "version":"1",
-									 "xmlns":"http://oval.mitre.org/XMLSchema/oval-deinitions-5#linux"})
-	state.appendChild ( __createXMLElement 
-						 ("evr", arch, 
-						  {"datatype":"evr_string", "operation":"equals"}))
-	states.appendChild (state)
-	
-	return (ref)
+	return (archTests[arch])
 
 def __createGeneratorHeader ():
 	"""
@@ -221,11 +237,11 @@
 		for (key, value) in data.iteritems():
 			if key != "all":
 				supportedPlatformCriteria = __createXMLElement ("criteria", attrs={"comment" : "Supported platform section", "operation" : "AND"})
-				supportedPlatformCriteria.appendChild ( __createXMLElement ("criterion", attrs = {"test_ref" : "rut-XXX", "comment" : "%s architecture" % key}))
+				supportedPlatformCriteria.appendChild ( __createXMLElement ("criterion", attrs = {"test_ref" : __createArchTest(key), "comment" : "%s architecture" % key}))
 				packageCriteria = __createXMLElement ("criteria", attrs={"comment" : "Packages section", "operation" : "OR"})
 				
 				for bpkg in data[key].keys():
-					packageCriteria.appendChild ( __createXMLElement ("criterion", attrs = {"test_ref" : "rvt-XXX", "comment" : "%s DPKG is earlier than %s" % (bpkg, data[key][bpkg][0])}))
+					packageCriteria.appendChild ( __createXMLElement ("criterion", attrs = {"test_ref" : __createDPKGTest(bpkg, data[key][bpkg][0]), "comment" : "%s DPKG is earlier than %s" % (bpkg, data[key][bpkg][0])}))
 				supportedPlatformCriteria.appendChild (packageCriteria)
 				archDependCriteria.appendChild (supportedPlatformCriteria)
 				

Modified: trunk/tools/oval/definition/generator.pyc
===================================================================
(Binary files differ)




More information about the Oval-commits mailing list