Skip to content

Commit 908a2a1

Browse files
committed
Unit test improvements.
Speed it up (less iterations, rounds and threads). Rename confusing assert_exporter_free() method to ensure_exporter_free().
1 parent fb7e672 commit 908a2a1

1 file changed

Lines changed: 15 additions & 15 deletions

File tree

‎Lib/test/test_free_threading/test_memoryview.py‎

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@
44

55
from test.support import threading_helper
66

7-
NTHREADS = 8
8-
9-
# Fresh objects expose one-time races under ThreadSanitizer.
10-
ROUNDS = 20
11-
ITERS = 20
7+
NTHREADS = 4
8+
ROUNDS = 4
9+
ITERS = 10
1210

1311
HASH_DATA_TEMPLATE = bytes(range(256))
1412
HASH_DATA_REPEAT = 256
@@ -44,7 +42,8 @@ def run_racy(func, *args):
4442

4543
@threading_helper.requires_working_threading()
4644
class TestMemoryViewRaces(unittest.TestCase):
47-
def assert_exporter_free(self, buf):
45+
def ensure_exporter_free(self, buf):
46+
# Will raise BufferError if any memoryview still exports it.
4847
buf.append(0)
4948
del buf[-1]
5049

@@ -77,7 +76,7 @@ def release(views=views):
7776

7877
threading_helper.run_concurrently(release, nthreads=NTHREADS)
7978

80-
self.assert_exporter_free(buf)
79+
self.ensure_exporter_free(buf)
8180

8281
def test_release_races_with_reads(self):
8382
for _ in range(ROUNDS):
@@ -104,7 +103,7 @@ def reader():
104103
)
105104

106105
cell[0].release()
107-
self.assert_exporter_free(buf)
106+
self.ensure_exporter_free(buf)
108107

109108
def test_read_keeps_exporter_alive_after_release(self):
110109
size = 1 << 20
@@ -157,7 +156,7 @@ def writer(slot):
157156
threading_helper.run_concurrently(workers, nthreads=NTHREADS)
158157

159158
cell[0].release()
160-
self.assert_exporter_free(buf)
159+
self.ensure_exporter_free(buf)
161160

162161
def test_release_races_with_buffer_exports(self):
163162
for _ in range(ROUNDS):
@@ -177,7 +176,7 @@ def releaser():
177176
)
178177

179178
mv.release()
180-
self.assert_exporter_free(buf)
179+
self.ensure_exporter_free(buf)
181180

182181
def test_release_with_live_export(self):
183182
buf = bytearray(64)
@@ -198,7 +197,7 @@ def release(mv=mv):
198197
held.release()
199198
mv.release()
200199

201-
self.assert_exporter_free(buf)
200+
self.ensure_exporter_free(buf)
202201

203202
def test_compare_two_views_races_with_release(self):
204203
for _ in range(ROUNDS):
@@ -220,13 +219,14 @@ def comparer():
220219
run_racy(lambda: left != right)
221220

222221
threading_helper.run_concurrently(
223-
[lambda: releaser(0), lambda: releaser(1)] + [comparer] * 6,
222+
[lambda: releaser(0), lambda: releaser(1)]
223+
+ [comparer] * (NTHREADS - 2),
224224
nthreads=NTHREADS,
225225
)
226226

227227
for mv in cell:
228228
mv.release()
229-
self.assert_exporter_free(buf)
229+
self.ensure_exporter_free(buf)
230230

231231
def test_release_parent_keeps_child_valid(self):
232232
for _ in range(ROUNDS):
@@ -249,7 +249,7 @@ def release_parent():
249249

250250
self.assertEqual(child.tobytes(), bytes(range(32)))
251251
child.release()
252-
self.assert_exporter_free(buf)
252+
self.ensure_exporter_free(buf)
253253

254254
def test_concurrent_iteration(self):
255255
for _ in range(ROUNDS):
@@ -274,7 +274,7 @@ def iterator():
274274
)
275275

276276
cell[0].release()
277-
self.assert_exporter_free(buf)
277+
self.ensure_exporter_free(buf)
278278

279279
def test_iterator_exhaustion_drops_last_reference(self):
280280
def loop():

0 commit comments

Comments
 (0)