This is a set of test scripts for osmocom projects.

Currently, it's tested on openbsc and osmo-pcu.
Scripts: osmotestvty.py osmodumpdoc.py osmotestconfig.py
The scripts are designed to be run from make check,
but can be run independently as well.
As a general rule, run them in the top dir of a project.
diff --git a/osmopy/osmodumpdoc.py b/osmopy/osmodumpdoc.py
new file mode 100755
index 0000000..31ddafd
--- /dev/null
+++ b/osmopy/osmodumpdoc.py
@@ -0,0 +1,97 @@
+#!/usr/bin/env python
+
+# Make sure this code is in sync with the BTS directory.
+# Fixes may need to be applied to both.
+
+"""Start the process and dump the documentation to the doc dir."""
+
+import subprocess
+import time
+import os
+import sys
+
+import osmopy.obscvty as obscvty
+import osmopy.osmoutil as osmoutil
+
+
+def dump_doc(name, port, filename):
+    vty = obscvty.VTYInteract(name, "127.0.0.1", port)
+    xml = vty.command("show online-help")
+    # Now write everything until the end to the file
+    out = open(filename, 'w')
+    out.write(xml)
+    out.close()
+
+
+"""Dump the config of all the apps.
+
+Returns the number of apps configs could not be dumped for."""
+
+
+def dump_configs(apps, configs):
+    failures = 0
+    successes = 0
+
+    try:  # make sure the doc directory exists
+        os.mkdir('doc')
+    except OSError:  # it probably does
+        pass
+
+    for app in apps:
+        appname = app[3]
+        print "Starting app for %s" % appname
+        proc = None
+        cmd = [app[1], "-c", configs[appname][0]]
+        try:
+            proc = subprocess.Popen(cmd, stdin=None, stdout=None)
+        except OSError:  # Probably a missing binary
+            print >> sys.stderr, "Skipping app %s" % appname
+            failures += 1
+        else:
+            time.sleep(1)
+            try:
+                dump_doc(app[2], app[0], 'doc/%s_vty_reference.xml' % appname)
+                successes += 1
+            except IOError:  # Generally a socket issue
+                print >> sys.stderr, "%s: couldn't connect, skipping" % appname
+                failures += 1
+        finally:
+            osmoutil.end_proc(proc)
+
+    return (failures, successes)
+
+
+if __name__ == '__main__':
+    import argparse
+
+    confpath = "."
+    workdir = "."
+
+    parser = argparse.ArgumentParser()
+    parser.add_argument("-p", "--pythonconfpath", dest="p",
+                        help="searchpath for config (osmoappdesc)")
+    parser.add_argument("-w", "--workdir", dest="w",
+                        help="Working directory to run in")
+    args = parser.parse_args()
+
+    if args.p:
+        confpath = args.p
+
+    if args.w:
+        workdir = args.w
+
+    osmoappdesc = None
+    try:
+        osmoappdesc = osmoutil.importappconf(confpath, "osmoappdesc")
+    except ImportError as e:
+        print >> sys.stderr, "osmoappdesc not found, set searchpath with -p"
+        sys.exit(1)
+
+    os.chdir(workdir)
+    num_fails, num_sucs = dump_configs(
+        osmoappdesc.apps, osmoappdesc.app_configs)
+    if num_fails > 0:
+        print >> sys.stderr, "Warning: Skipped %s apps" % num_fails
+        if 0 == num_sucs:
+            print >> sys.stderr, "Nothing run, wrong working dir? Set with -w"
+    sys.exit(num_fails)