aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/irbe-cli.py21
-rw-r--r--scripts/rpki/relaxng.py24
-rwxr-xr-xscripts/xml-parse-test.py15
3 files changed, 49 insertions, 11 deletions
diff --git a/scripts/irbe-cli.py b/scripts/irbe-cli.py
new file mode 100755
index 00000000..c9df0d9a
--- /dev/null
+++ b/scripts/irbe-cli.py
@@ -0,0 +1,21 @@
+# $Id$
+
+"""
+Command line program to simulate behavior of the IR back-end.
+"""
+
+import glob, rpki.left_right, xml.sax, lxml.etree, lxml.sax, POW, POW.pkix, getopt
+
+rng = lxml.etree.RelaxNG(lxml.etree.parse("left-right-schema.rng"))
+
+files = glob.glob("left-right-protocol-samples/*.xml")
+files.sort()
+for f in files:
+ print "\n<!--", f, "-->"
+ handler = rpki.left_right.sax_handler()
+ elt_in = lxml.etree.parse(f).getroot()
+ rng.assertValid(elt_in)
+ lxml.sax.saxify(elt_in, handler)
+ elt_out = handler.result.toXML()
+ rng.assertValid(elt_out)
+ print lxml.etree.tostring(elt_out, pretty_print=True, encoding="us-ascii", xml_declaration=True)
diff --git a/scripts/rpki/relaxng.py b/scripts/rpki/relaxng.py
new file mode 100644
index 00000000..bbfc6d72
--- /dev/null
+++ b/scripts/rpki/relaxng.py
@@ -0,0 +1,24 @@
+# $Id$
+
+import lxml.etree
+
+class RelaxNG(lxml.etree.RelaxNG):
+ """
+ Minor customizations of lxml.etreeRelaxNG.
+ """
+
+ def __init__(self, filename):
+ """
+ Initialize a RelaxNG validator from a file.
+ """
+ lxml.etree.RelaxNG.__init__(self, lxml.etree.parse(filename))
+
+ def assertValid(self, doc):
+ """
+ Provide a bit more information on validation failures.
+ """
+ try:
+ lxml.etree.RelaxNG.assertValid(self, doc)
+ except lxml.etree.DocumentInvalid:
+ print self.error_log.last_error
+ raise
diff --git a/scripts/xml-parse-test.py b/scripts/xml-parse-test.py
index 513b6ba8..ed437789 100755
--- a/scripts/xml-parse-test.py
+++ b/scripts/xml-parse-test.py
@@ -1,28 +1,21 @@
# $Id$
-import glob, rpki.up_down, rpki.left_right, xml.sax, lxml.etree, lxml.sax, pprint, POW, POW.pkix
+import glob, rpki.up_down, rpki.left_right, rpki.relaxng, xml.sax, lxml.etree, lxml.sax, POW, POW.pkix
verbose = False
-def validate(rng, doc):
- try:
- rng.assertValid(doc)
- except lxml.etree.DocumentInvalid:
- print rng.error_log.last_error
- raise
-
def test(fileglob, schema, sax_handler, encoding, tester=None):
- rng = lxml.etree.RelaxNG(lxml.etree.parse(schema))
+ rng = rpki.relaxng.RelaxNG(schema)
files = glob.glob(fileglob)
files.sort()
for f in files:
print "\n<!--", f, "-->"
handler = sax_handler()
elt_in = lxml.etree.parse(f).getroot()
- validate(rng, elt_in)
+ rng.assertValid(elt_in)
lxml.sax.saxify(elt_in, handler)
elt_out = handler.result.toXML()
- validate(rng, elt_out)
+ rng.assertValid(elt_out)
if (tester):
tester(elt_in, elt_out, handler.result)
print lxml.etree.tostring(elt_out, pretty_print=True, encoding=encoding, xml_declaration=True)