aboutsummaryrefslogtreecommitdiffstats
path: root/torturetest.py
diff options
context:
space:
mode:
Diffstat (limited to 'torturetest.py')
-rwxr-xr-xtorturetest.py35
1 files changed, 23 insertions, 12 deletions
diff --git a/torturetest.py b/torturetest.py
index 871300ab..02c431f2 100755
--- a/torturetest.py
+++ b/torturetest.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-import sys, getopt, os, smtplib, commands
+import sys, getopt, os, smtplib, commands, time
class TestSite:
temp = "/usr/tmp/torturestest-%d" % os.getpid()
@@ -8,7 +8,7 @@ class TestSite:
def __init__(self, line):
"Initialize site data from the external representation."
(self.host, self.userid, self.password, \
- self.proto, self.options, self.version, self.comment) = \
+ self.proto, self.options, self.capabilities, self.version, self.comment) = \
line.strip().split(":")
# Test results
self.status = None
@@ -17,7 +17,8 @@ class TestSite:
def allattrs(self):
"Return a tuple consisting of alll this site's attributes."
return (self.host, self.userid, self.password, \
- self.proto, self.options, self.version, self.comment)
+ self.proto, self.options, self.capabilities, \
+ self.version, self.comment)
def __repr__(self):
"Return the external representation of this site's data."
@@ -29,7 +30,8 @@ class TestSite:
"Userid: %s\n" \
"Password: %s\n" \
"Protocol: %s\n" \
- "Optiond: %s\n" \
+ "Options: '%s'\n" \
+ "Capabilities: '%s'\n" \
"Version: %s\n" \
"Comment: %s\n" \
% self.allattrs()
@@ -37,17 +39,20 @@ class TestSite:
def entryprint(self):
"Print a .fetchmailrc entry corresponding to a site entry."
return "poll %s-%s via %s with proto %s\n" \
- " user %s there with password %s is esr here\n\n" \
- % (self.host,self.proto,self.host,self.proto,self.userid,self.password)
+ " user %s there with password %s is esr here %s\n\n" \
+ % (self.host,self.proto,self.host,self.proto,self.userid,self.password,self.options)
def tableprint(self):
"Print an HTML server-type table entry."
return "<tr><td>%s %s</td><td>%s</td><td>%s</td></tr>\n" \
- % (self.proto, self.version, self.options, self.comment)
+ % (self.proto, self.version, self.capabilities, self.comment)
def id(self):
"Identify this site."
- return "%s %s at %s" % (self.proto, self.version, self.host)
+ rep = "%s %s at %s" % (self.proto, self.version, self.host)
+ if self.capabilities:
+ rep += " (" + self.capabilities + ")"
+ return rep
def testmail(self):
"Send test mail to the site."
@@ -55,7 +60,7 @@ class TestSite:
fromaddr = "esr@thyrsus.com"
toaddr = "%s@%s" % (self.userid, self.host)
msg = ("From: %s\r\nTo: %s\r\n\r\n" % (fromaddr, toaddr))
- msg += "Test mail collected from %s.\n" % (toaddr, self.id())
+ msg += "Test mail collected from %s.\n" % (self.id(),)
server.sendmail(fromaddr, toaddr, msg)
server.quit()
@@ -93,7 +98,7 @@ if __name__ == "__main__":
else:
sitelist.append(TestSite(line))
- (options, arguments) = getopt.getopt(sys.argv[1:], "dft")
+ (options, arguments) = getopt.getopt(sys.argv[1:], "dftig")
for (switch, value) in options:
if switch == "-d":
# Prettprint the sitelist
@@ -107,6 +112,10 @@ if __name__ == "__main__":
# Dump the sitelist in HTML table form
map(lambda x: sys.stdout.write(x.tableprint()), sitelist)
sys.exit(0)
+ elif switch == "-i":
+ # Dump the ids of the sitelist
+ map(lambda x: sys.stdout.write(x.id() + "\n"), sitelist)
+ sys.exit(0)
elif switch == "-g":
for site in sitelist:
site.testmail()
@@ -119,8 +128,9 @@ if __name__ == "__main__":
# If no options, run the torture test
try:
failures = successes = 0
+ os.system("fetchmail -q")
for site in sitelist:
- print "Testing %s %s at %s" % (site.proto,site.version,site.host)
+ print "Testing " + site.id()
site.fetch()
if not site.failed():
failures += 1
@@ -134,7 +144,8 @@ if __name__ == "__main__":
if failures:
print "Bad status was returned on the following sites:"
for site in sitelist:
- sys.stdout.write(self.explain)
+ if site.failed():
+ sys.stdout.write(self.explain)
except KeyboardInterrupt:
print "Interrupted."