aboutsummaryrefslogtreecommitdiff
path: root/scripts/xml-parse-test.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2007-08-02 16:32:49 +0000
committerRob Austein <sra@hactrn.net>2007-08-02 16:32:49 +0000
commit2a46fbe7fcdd0a4b549e00507edc4f673b320f51 (patch)
tree71bb3b9ca5a4eab645c0b606600f57511a29a6a0 /scripts/xml-parse-test.py
parentde681c632972d65fa0351bebac9a1a6b1fbc1920 (diff)
Checkpoint
svn path=/scripts/Makefile; revision=820
Diffstat (limited to 'scripts/xml-parse-test.py')
-rwxr-xr-xscripts/xml-parse-test.py37
1 files changed, 32 insertions, 5 deletions
diff --git a/scripts/xml-parse-test.py b/scripts/xml-parse-test.py
index 8e830d8d..0993a02f 100755
--- a/scripts/xml-parse-test.py
+++ b/scripts/xml-parse-test.py
@@ -1,17 +1,19 @@
# $Id$
-import glob, rpki.up_down, rpki.left_right, xml.sax, lxml.etree, lxml.sax
+import glob, rpki.up_down, rpki.left_right, xml.sax, lxml.etree, lxml.sax, pprint, POW, POW.pkix
-def test(fileglob, schema, proto, encoding):
+def test(fileglob, schema, sax_handler, encoding, tester=None):
rng = lxml.etree.RelaxNG(lxml.etree.parse(schema))
files = glob.glob(fileglob)
files.sort()
for f in files:
print "\n<!--", f, "-->"
- handler = proto.sax_handler()
+ handler = sax_handler()
et = lxml.etree.parse(f)
rng.assertValid(et)
lxml.sax.saxify(et, handler)
+ if (tester):
+ tester(et, handler.result)
et = handler.result.toXML()
print lxml.etree.tostring(et, pretty_print=True, encoding=encoding, xml_declaration=True)
try:
@@ -20,6 +22,31 @@ def test(fileglob, schema, proto, encoding):
print rng.error_log.last_error
raise
-test("up-down-protocol-samples/*.xml", "up-down-medium-schema.rng", rpki.up_down, encoding="utf-8")
+def pprint_cert(cert):
+ print POW.derRead(POW.X509_CERTIFICATE, cert.toString()).pprint()
-test("left-right-protocol-samples/*.xml", "left-right-schema.rng", rpki.left_right, encoding="us-ascii")
+def ud_tester(et, msg):
+ assert isinstance(msg, rpki.up_down.message_pdu)
+ if isinstance(msg.payload, rpki.up_down.list_response_pdu):
+ for c in msg.payload.classes:
+ for i in range(len(c.certs)):
+ print "[Certificate #%d]" % i
+ pprint_cert(c.certs[i].cert)
+ print "[Issuer]"
+ pprint_cert(c.issuer)
+ print "Type:", et.getroot().get("type")
+
+def lr_tester(et, msg):
+ assert isinstance(msg, rpki.left_right.msg)
+
+test(fileglob="up-down-protocol-samples/*.xml",
+ schema="up-down-medium-schema.rng",
+ sax_handler=rpki.up_down.sax_handler,
+ encoding="utf-8",
+ tester=ud_tester)
+
+test(fileglob="left-right-protocol-samples/*.xml",
+ schema="left-right-schema.rng",
+ sax_handler=rpki.left_right.sax_handler,
+ encoding="us-ascii",
+ tester=lr_tester)