[tor-commits] [stem/master] Running test_basic_example() multiple times
atagar at torproject.org
atagar at torproject.org
Mon Mar 26 00:10:01 UTC 2012
commit 2f8a3c838fd63a83a6087313b5a3f52160d2e4fb
Author: Damian Johnson <atagar at torproject.org>
Date: Sun Mar 11 13:17:09 2012 -0700
Running test_basic_example() multiple times
Rerunning the test_basic_example() test fifteen times to make it more sensetive
to concurrency issues. It now fails consistently! (... yay?)
---
stem/descriptor/reader.py | 2 +-
test/integ/descriptor/reader.py | 31 +++++++++++++++++--------------
2 files changed, 18 insertions(+), 15 deletions(-)
diff --git a/stem/descriptor/reader.py b/stem/descriptor/reader.py
index 018adc7..a8f3284 100644
--- a/stem/descriptor/reader.py
+++ b/stem/descriptor/reader.py
@@ -287,7 +287,7 @@ class DescriptorReader(threading.Thread):
yield self._unreturned_descriptors.get_nowait()
except Queue.Empty:
# if we've finished and there aren't any descriptors then we're done
- if not self._is_reading.isSet(): break
+ if not self._is_reading.isSet() and self._unreturned_descriptors.empty(): break
self._iter_notice.wait()
self._iter_notice.clear()
diff --git a/test/integ/descriptor/reader.py b/test/integ/descriptor/reader.py
index 24786b7..2568262 100644
--- a/test/integ/descriptor/reader.py
+++ b/test/integ/descriptor/reader.py
@@ -122,20 +122,23 @@ class TestDescriptorReader(unittest.TestCase):
with open(descriptor_path) as descriptor_file:
descriptor_entries.append(descriptor_file.read())
- reader = stem.descriptor.reader.DescriptorReader([DESCRIPTOR_TEST_DATA])
-
- with reader:
- for descriptor in reader:
- descriptor_str = str(descriptor)
-
- if descriptor_str in descriptor_entries:
- descriptor_entries.remove(descriptor_str)
- else:
- # iterator is providing output that we didn't expect
- self.fail()
-
- # check that we've seen all of the descriptor_entries
- self.assertTrue(len(descriptor_entries) == 0)
+ # running this test multiple times to flush out concurrency issues
+ for i in xrange(15):
+ reader = stem.descriptor.reader.DescriptorReader([DESCRIPTOR_TEST_DATA])
+ remaining_entries = list(descriptor_entries)
+
+ with reader:
+ for descriptor in reader:
+ descriptor_str = str(descriptor)
+
+ if descriptor_str in remaining_entries:
+ remaining_entries.remove(descriptor_str)
+ else:
+ # iterator is providing output that we didn't expect
+ self.fail()
+
+ # check that we've seen all of the descriptor_entries
+ self.assertTrue(len(remaining_entries) == 0)
def test_stop(self):
"""
More information about the tor-commits
mailing list