13ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard#!/usr/bin/python -u
23ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardimport sys
33ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardimport libxml2
43ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard
54e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillard# Memory debug specific
64e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillardlibxml2.debugMemory(1)
74e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillard
83ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardctxt = libxml2.createPushParser(None, "<foo", 4, "test.xml")
93ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardctxt.parseChunk("/>", 2, 1)
103ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillarddoc = ctxt.doc()
113ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardctxt=None
123ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardif doc.name != "test.xml":
132cb6bf8eb019cc88578093abee3e37a78e7b3020Daniel Veillard    print("document name error")
143ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard    sys.exit(1)
153ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardroot = doc.children
163ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardif root.name != "foo":
172cb6bf8eb019cc88578093abee3e37a78e7b3020Daniel Veillard    print("root element name error")
183ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard    sys.exit(1)
193ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillarddoc.freeDoc()
203ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardi = 10000
213ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardwhile i > 0:
223ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard    ctxt = libxml2.createPushParser(None, "<foo", 4, "test.xml")
233ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard    ctxt.parseChunk("/>", 2, 1)
243ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard    doc = ctxt.doc()
253ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard    doc.freeDoc()
263ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillard    i = i -1
273ce5257b293ed75d8feb18ed7ab18ea2b52510bdDaniel Veillardctxt=None
284e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillard
294e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillard# Memory debug specific
304e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillardlibxml2.cleanupParser()
314e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillardif libxml2.debugMemory(1) == 0:
322cb6bf8eb019cc88578093abee3e37a78e7b3020Daniel Veillard    print("OK")
334e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillardelse:
342cb6bf8eb019cc88578093abee3e37a78e7b3020Daniel Veillard    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
354e1b26cfeba7f5fad4f8bd12fb5ce7029f930b79Daniel Veillard    libxml2.dumpMemory()
36