Commit cb637c9e authored by Collin Winter's avatar Collin Winter

Patch #1670993: Refactor test_threadedtempfile.py to use unittest.

parent f252c7b7
test_threadedtempfile
Creating
Starting
Reaping
Done: errors 0 ok 1000
...@@ -10,22 +10,20 @@ failures. A failure is a bug in tempfile, and may be due to: ...@@ -10,22 +10,20 @@ failures. A failure is a bug in tempfile, and may be due to:
By default, NUM_THREADS == 20 and FILES_PER_THREAD == 50. This is enough to By default, NUM_THREADS == 20 and FILES_PER_THREAD == 50. This is enough to
create about 150 failures per run under Win98SE in 2.0, and runs pretty create about 150 failures per run under Win98SE in 2.0, and runs pretty
quickly. Guido reports needing to boost FILES_PER_THREAD to 500 before quickly. Guido reports needing to boost FILES_PER_THREAD to 500 before
provoking a 2.0 failure under Linux. Run the test alone to boost either provoking a 2.0 failure under Linux.
via cmdline switches:
-f FILES_PER_THREAD (int)
-t NUM_THREADS (int)
""" """
NUM_THREADS = 20 # change w/ -t option NUM_THREADS = 20
FILES_PER_THREAD = 50 # change w/ -f option FILES_PER_THREAD = 50
import thread # If this fails, we can't test this module import thread # If this fails, we can't test this module
import threading import threading
from test.test_support import TestFailed, threading_setup, threading_cleanup import tempfile
from test.test_support import threading_setup, threading_cleanup, run_unittest
import unittest
import StringIO import StringIO
from traceback import print_exc from traceback import print_exc
import tempfile
startEvent = threading.Event() startEvent = threading.Event()
...@@ -46,41 +44,36 @@ class TempFileGreedy(threading.Thread): ...@@ -46,41 +44,36 @@ class TempFileGreedy(threading.Thread):
else: else:
self.ok_count += 1 self.ok_count += 1
def test_main():
class ThreadedTempFileTest(unittest.TestCase):
def test_main(self):
threads = [] threads = []
thread_info = threading_setup() thread_info = threading_setup()
print "Creating"
for i in range(NUM_THREADS): for i in range(NUM_THREADS):
t = TempFileGreedy() t = TempFileGreedy()
threads.append(t) threads.append(t)
t.start() t.start()
print "Starting"
startEvent.set() startEvent.set()
print "Reaping" ok = 0
ok = errors = 0 errors = []
for t in threads: for t in threads:
t.join() t.join()
ok += t.ok_count ok += t.ok_count
errors += t.error_count
if t.error_count: if t.error_count:
print '%s errors:\n%s' % (t.getName(), t.errors.getvalue()) errors.append(str(t.getName()) + str(t.errors.getvalue()))
msg = "Done: errors %d ok %d" % (errors, ok)
print msg
if errors:
raise TestFailed(msg)
threading_cleanup(*thread_info) threading_cleanup(*thread_info)
msg = "Errors: errors %d ok %d\n%s" % (len(errors), ok,
'\n'.join(errors))
self.assertEquals(errors, [], msg)
self.assertEquals(ok, NUM_THREADS * FILES_PER_THREAD)
def test_main():
run_unittest(ThreadedTempFileTest)
if __name__ == "__main__": if __name__ == "__main__":
import sys, getopt
opts, args = getopt.getopt(sys.argv[1:], "t:f:")
for o, v in opts:
if o == "-f":
FILES_PER_THREAD = int(v)
elif o == "-t":
NUM_THREADS = int(v)
test_main() test_main()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment