scyther/test/test-versions.py

96 lines
2.2 KiB
Python
Raw Normal View History

2006-07-18 22:57:19 +01:00
#!/usr/bin/python
"""
Huge oldversions difference tester, optionally diff with the one in
$PATH as well.
Arguments will be passed on to Scyther for all the protocols in the
set. (protocollist.py?)
"""
import os
import os.path
import commands
import protocollist
oldversionspath="../oldversions"
oldversionsprefix="scyther"
def get_versions(step=1):
global oldversionspat
global oldversionsprefix
l = os.listdir(oldversionspath)
rl = []
i = 0
for fn in l:
if fn.startswith(oldversionsprefix):
if i == 0:
rl.append(fn[len(oldversionsprefix):])
i = (i+1) % step
rl.sort()
rl.append(-1) # denoting the current version
return rl
def run_version(version,args):
global oldversionspat
global oldversionsprefix
if version == -1:
prg = "scyther"
else:
prg = "%s/%s%s" % (oldversionspath, oldversionsprefix, version)
out = commands.getoutput("%s %s" % (prg,args))
return out
def test_all_protocols(version, args):
print "Testing version %s" % version
l = protocollist.from_all()
res = {}
for fn in l:
res[fn] = run_version(version, "%s %s" % (args,fn))
return res
def test_all(versions,args):
res = {}
for v in versions:
res[v] = test_all_protocols(v,args)
return res
def main():
vl = get_versions(150)
res = test_all(vl,"-r2")
l = protocollist.from_all()
changes = {}
for p in l:
ln = len(vl)
for i in range(0,(ln-1)):
v1 = vl[i]
v2 = vl[i+1]
if str(res[v1][p]) != str(res[v2][p]):
if v2 in changes.keys():
changes[v2].append(p)
else:
changes[v2] = [p]
print "*" * 80
print "Found difference for protocol %s, between versions %s and %s" % (p,v1,v2)
print
print "<" * 80
print res[v1][p]
print "=" * 80
print res[v2][p]
print ">" * 80
print
for x in changes.keys():
print "For version %s, %i protocols changed." % (x,len(changes[x]))
if __name__ == '__main__':
main()