[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