Repository: trafficserver Updated Branches: refs/heads/master d9ecf4f9e -> a7a51ecc1
doc: script to check records.config documentation Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/a7a51ecc Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/a7a51ecc Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/a7a51ecc Branch: refs/heads/master Commit: a7a51ecc190410c80fed7fce4f1f16039be027e3 Parents: d9ecf4f Author: James Peach <[email protected]> Authored: Thu Feb 27 22:00:18 2014 -0800 Committer: James Peach <[email protected]> Committed: Tue Mar 4 20:25:12 2014 -0800 ---------------------------------------------------------------------- contrib/python/compare_RecordsConfigcc.py | 80 ++++++++++++++++++-------- 1 file changed, 56 insertions(+), 24 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a7a51ecc/contrib/python/compare_RecordsConfigcc.py ---------------------------------------------------------------------- diff --git a/contrib/python/compare_RecordsConfigcc.py b/contrib/python/compare_RecordsConfigcc.py index 24aeb6a..80c7412 100644 --- a/contrib/python/compare_RecordsConfigcc.py +++ b/contrib/python/compare_RecordsConfigcc.py @@ -18,6 +18,7 @@ # import re import sys +import string try: src_dir = sys.argv[1] @@ -26,10 +27,6 @@ except IndexError: print "Compares values in RecordsConfig.cc with the default records.config file" sys.exit(1) -cc_re = re.compile(r'\{RECT_(?:CONFIG|LOCAL), "([^"]+)", RECD_([A-Z]+), "([^"]+)",') -cc_re_2 = re.compile(r'\{RECT_(?:CONFIG|LOCAL), "([^"]+)", RECD_([A-Z]+), (NULL),') -in_re = re.compile(r'(?:CONFIG|LOCAL) (\S+)\s+(\S+)\s+(\S+)') - # We expect these keys to differ between files, so ignore them ignore_keys = { "proxy.config.ssl.server.cert.path": 1, @@ -49,34 +46,43 @@ ignore_keys = { "proxy.config.net.defer_accept": 1 # Specified in RecordsConfig.cc funny } -# RecordsConfig.cc values -rc_cc = {} -# records.config.in values -rc_in = {} +rc_cc = {} # RecordsConfig.cc values +rc_in = {} # records.config.in values +rc_doc = {} # documented values # Process RecordsConfig.cc -fh = open("%s/mgmt/RecordsConfig.cc" % src_dir) -for line in fh: - m = cc_re.search(line) - if not m: - m = cc_re_2.search(line) - if m: - rc_cc[m.group(1)] = (m.group(2), m.group(3)) - -fh.close() +with open("%s/mgmt/RecordsConfig.cc" % src_dir) as fh: + cc_re = re.compile(r'\{RECT_(?:CONFIG|LOCAL), "([^"]+)", RECD_([A-Z]+), (.+?), ') + for line in fh: + m = cc_re.search(line) + if m: + value = m.group(3) + value = string.lstrip(value, '"') + value = string.rstrip(value, '"') + rc_cc[m.group(1)] = (m.group(2), value) # Process records.config.default.in -fh = open("%s/proxy/config/records.config.default.in" % src_dir) -for line in fh: - m = in_re.match(line) - if m: - rc_in[m.group(1)] = (m.group(2), m.group(3)) -fh.close() +with open("%s/proxy/config/records.config.default.in" % src_dir) as fh: + in_re = re.compile(r'(?:CONFIG|LOCAL) (\S+)\s+(\S+)\s+(\S+)') + for line in fh: + m = in_re.match(line) + if m: + rc_in[m.group(1)] = (m.group(2), m.group(3)) + +# Process records.comfig documentation. +# eg. .. ts:cv:: CONFIG proxy.config.proxy_binary STRING traffic_server +with open("%s/doc/reference/configuration/records.config.en.rst" % src_dir) as fh: + doc_re = re.compile(r'ts:cv:: CONFIG (\S+)\s+(\S+)\s+(\S+)') + for line in fh: + m = doc_re.search(line) + if m: + rc_doc[m.group(1)] = (m.group(2), m.group(3)) + rc_doc[m.group(1)] = (m.group(2), m.group(3)) # Compare the two # If a value is in RecordsConfig.cc and not records.config.default.in, it is # ignored right now. -print "# RecordsConfig.cc -> records.config.default.in" +print "# Comparing RecordsConfig.cc -> records.config.default.in" for key in rc_in: if key in ignore_keys: continue @@ -85,3 +91,29 @@ for key in rc_in: continue if rc_cc[key] != rc_in[key]: print "%s : %s -> %s" % (key, "%s %s" % rc_cc[key], "%s %s" % rc_in[key]) + +# Search for undocumented variables ... +missing = [ k for k in rc_cc if k not in rc_doc ] +if len(missing) > 0: + print + print "Undocumented configuration variables:" + for m in sorted(missing): + print "\t%s %s" % (m, "%s %s" % rc_cc[m]) + +# Search for incorrectly documented default values ... +defaults = [ k for k in rc_cc if k in rc_doc and rc_cc[k] != rc_doc[k] ] +if len(defaults) > 0: + print + print "Incorrectly documented defaults:" + for d in sorted(defaults): + print "\t%s %s -> %s" % (d, "%s %s" % rc_cc[d], "%s %s" % rc_doc[d]) + + +# Search for stale documentation ... +stale = [ k for k in rc_doc if k not in rc_cc ] +if (len(stale) > 0): + print + print "Stale documentation:" + for s in sorted(stale): + print "\t%s" %(s) +
