38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#!/usr/bin/python -u
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncimport sys
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncimport libxml2
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncimport StringIO
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync# Memory debug specific
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynclibxml2.debugMemory(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncdef myResolver(URL, ID, ctxt):
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(StringIO.StringIO("<foo/>"))
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynclibxml2.setEntityLoader(myResolver)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncdoc = libxml2.parseFile("doesnotexist.xml")
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncroot = doc.children
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif root.name != "foo":
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "root element name error"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncdoc.freeDoc()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynci = 0
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncwhile i < 5000:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync doc = libxml2.parseFile("doesnotexist.xml")
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync root = doc.children
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if root.name != "foo":
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "root element name error"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync doc.freeDoc()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync i = i + 1
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync# Memory debug specific
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynclibxml2.cleanupParser()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif libxml2.debugMemory(1) == 0:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "OK"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncelse:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "Memory leak %d bytes" % (libxml2.debugMemory(1))
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync libxml2.dumpMemory()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync