Added timestamps to the urltests

- Legacy-Id: 453
This commit is contained in:
Henrik Levkowetz 2007-06-16 23:17:31 +00:00
parent ad951771ab
commit a8f8ace37c

View file

@ -2,6 +2,7 @@ import os
import re import re
import traceback import traceback
import urllib2 as urllib import urllib2 as urllib
from datetime import datetime
from ietf.utils import soup2text as html2text from ietf.utils import soup2text as html2text
from difflib import unified_diff from difflib import unified_diff
@ -91,6 +92,16 @@ def filetext(filename):
file.close() file.close()
return chunk return chunk
prev_note_time = datetime.utcnow()
def note(string):
global prev_note_time
"""Like a print function, but adds a leading timestamp line"""
now = datetime.utcnow()
print "Time", now.strftime("%Y-%m-%d_%H:%M"), "+%ds" % (now-prev_note_time).seconds
print string
prev_note_time = datetime.utcnow()
class UrlTestCase(TestCase): class UrlTestCase(TestCase):
def setUp(self): def setUp(self):
from django.test.client import Client from django.test.client import Client
@ -171,26 +182,26 @@ class UrlTestCase(TestCase):
code = str(response.status_code) code = str(response.status_code)
if code == "301": if code == "301":
if response['Location'] == url: if response['Location'] == url:
print "OK %s %s -> %s" % (code, testurl, url) note("OK %s %s -> %s" % (code, testurl, url))
res = ("OK", code) res = ("OK", code)
else: else:
print "Miss %3s %s ->" % (code, testurl) note("Miss %3s %s ->" % (code, testurl))
print " %s" % (response['Location']) print " %s" % (response['Location'])
print " (wanted %s)" % (url) print " (wanted %s)" % (url)
print "" print ""
#res = ("Fail", "wrong-reponse") #res = ("Fail", "wrong-reponse")
else: else:
print "Fail %s %s" % (code, testurl) note("Fail %s %s" % (code, testurl))
res = ("Fail", code) res = ("Fail", code)
except: except:
res = ("Fail", "Exc") res = ("Fail", "Exc")
print "Exception for URL '%s'" % testurl note("Exception for URL '%s'" % testurl)
traceback.print_exc() traceback.print_exc()
if not res in response_count: if not res in response_count:
response_count[res] = 0 response_count[res] = 0
response_count[res] += 1 response_count[res] += 1
if response_count: if response_count:
print "Response count:" note("Response count:")
for res in response_count: for res in response_count:
ind, code = res ind, code = res
print " %-4s %s: %s " % (ind, code, response_count[res]) print " %-4s %s: %s " % (ind, code, response_count[res])
@ -210,14 +221,14 @@ class UrlTestCase(TestCase):
response = self.client.get(baseurl, args) response = self.client.get(baseurl, args)
code = str(response.status_code) code = str(response.status_code)
if code in codes: if code in codes:
print "OK %s %s" % (code, url) note("OK %s %s" % (code, url))
res = ("OK", code) res = ("OK", code)
else: else:
print "Fail %s %s" % (code, url) note("Fail %s %s" % (code, url))
res = ("Fail", code) res = ("Fail", code)
except: except:
res = ("Fail", "Exc") res = ("Fail", "Exc")
print "Exception for URL '%s'" % url note("Exception for URL '%s'" % url)
traceback.print_exc() traceback.print_exc()
if master: if master:
try: try:
@ -225,7 +236,7 @@ class UrlTestCase(TestCase):
mfile = urllib.urlopen(master) mfile = urllib.urlopen(master)
goodhtml = mfile.read() goodhtml = mfile.read()
except urllib.URLError, e: except urllib.URLError, e:
print "Failed retrieving master text for comparison: %s" % e note("Failed retrieving master text for comparison: %s" % e)
try: try:
mfile.close() mfile.close()
if goodhtml and response.content: if goodhtml and response.content:
@ -243,7 +254,7 @@ class UrlTestCase(TestCase):
testtext = reduce(response.content) testtext = reduce(response.content)
goodtext = reduce(goodhtml) goodtext = reduce(goodhtml)
if testtext == goodtext: if testtext == goodtext:
print "OK cmp %s" % (url) note("OK cmp %s" % (url))
else: else:
contextlines = 0 contextlines = 0
difflist = list(unified_diff(goodtext, testtext, master, url, "", "", contextlines, lineterm="")) difflist = list(unified_diff(goodtext, testtext, master, url, "", "", contextlines, lineterm=""))
@ -267,17 +278,17 @@ class UrlTestCase(TestCase):
else: else:
okdiff = "" okdiff = ""
if diff.strip() == okdiff.strip(): if diff.strip() == okdiff.strip():
print "OK cmp %s" % (url) note("OK cmp %s" % (url))
else: else:
print "Diff: %s" % (url) note("Diff: %s" % (url))
print "\n".join(difflist[:100]) print "\n".join(difflist[:100])
if len(difflist) > 100: if len(difflist) > 100:
print "... (skipping %s lines of diff)" % (len(difflist)-100) print "... (skipping %s lines of diff)" % (len(difflist)-100)
else: else:
print "OK cmp %s" % (url) note("OK cmp %s" % (url))
except: except:
print "Exception occurred for url %s" % (url) note("Exception occurred for url %s" % (url))
traceback.print_exc() traceback.print_exc()
#raise #raise
@ -287,7 +298,7 @@ class UrlTestCase(TestCase):
else: else:
pass pass
if response_count: if response_count:
print "Response count:" note("Response count:")
for res in response_count: for res in response_count:
ind, code = res ind, code = res
print " %-4s %s: %s " % (ind, code, response_count[res]) print " %-4s %s: %s " % (ind, code, response_count[res])
@ -296,15 +307,15 @@ class UrlTestCase(TestCase):
self.assertEqual(ind, "OK", "Found %s cases of result code: %s" % (response_count[res], code)) self.assertEqual(ind, "OK", "Found %s cases of result code: %s" % (response_count[res], code))
def testUrlsList(self): def testUrlsList(self):
print "\nTesting specified URLs:" note("\nTesting specified URLs:")
self.doUrlsTest(self.testtuples) self.doUrlsTest(self.testtuples)
def testRedirectsList(self): def testRedirectsList(self):
print "\nTesting specified Redirects:" note("\nTesting specified Redirects:")
self.doRedirectsTest(self.testtuples) self.doRedirectsTest(self.testtuples)
def testUrlsFallback(self): def testUrlsFallback(self):
print "\nFallback: Test access to URLs which don't have an explicit test entry:" note("\nFallback: Test access to URLs which don't have an explicit test entry:")
lst = [] lst = []
for pattern in self.patterns: for pattern in self.patterns:
if pattern.startswith("^") and pattern.endswith("$"): if pattern.startswith("^") and pattern.endswith("$"):