Skip to content

Commit 8adc394

Browse files
committed
Add more tests
1 parent 4993685 commit 8adc394

2 files changed

Lines changed: 29 additions & 4 deletions

File tree

Lib/multiprocessing/shared_memory.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@
3737
else:
3838
_SHM_NAME_PREFIX = 'wnsm_'
3939

40+
if _USE_POSIX and hasattr(_posixshmem, "shm_rename"):
41+
from _posixshmem import SHM_RENAME_EXCHANGE
42+
from _posixshmem import SHM_RENAME_NOREPLACE
43+
4044

4145
def _make_filename():
4246
"Create a random filename for the shared memory object."
@@ -255,9 +259,6 @@ def unlink(self):
255259
resource_tracker.unregister(self._name, "shared_memory")
256260

257261
if _USE_POSIX and hasattr(_posixshmem, "shm_rename"):
258-
from _posixshmem import SHM_RENAME_EXCHANGE
259-
from _posixshmem import SHM_RENAME_NOREPLACE
260-
261262
def rename(self, newname, flags=0):
262263
"""Renames a shared memory block.
263264

Lib/test/_test_multiprocessing.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4376,7 +4376,7 @@ def test_shared_memory_recreate(self):
43764376
self.addCleanup(shm2.unlink)
43774377
self.assertEqual(shm2._name, names[1])
43784378

4379-
@unittest.skipUnless(hasattr(shared_memory, "rename"),
4379+
@unittest.skipUnless(hasattr(shared_memory.SharedMemory, "rename"),
43804380
"requires SharedMomery.rename")
43814381
def test_shared_memory_rename(self):
43824382
name1 = self._new_shm_name('testrename01_tsmb')
@@ -4387,6 +4387,30 @@ def test_shared_memory_rename(self):
43874387
sms.rename(name2)
43884388
self.assertEqual(sms.name, name2)
43894389

4390+
@unittest.skipUnless(hasattr(shared_memory.SharedMemory, "rename"),
4391+
"requires SharedMomery.rename")
4392+
def test_shared_memory_rename_noreplace(self):
4393+
name1 = self._new_shm_name('testrename01_tsmb')
4394+
name2 = self._new_shm_name('testrename02_tsmb')
4395+
sms1 = shared_memory.SharedMemory(name1, create=True, size=512)
4396+
sms2 = shared_memory.SharedMemory(name2, create=True, size=512)
4397+
self.addCleanup(sms1.unlink)
4398+
self.addCleanup(sms2.unlink)
4399+
4400+
with self.assertRaises(FileExistsError):
4401+
sms1.rename(name2, flags=shared_memory.SHM_RENAME_NOREPLACE)
4402+
4403+
@unittest.skipUnless(hasattr(shared_memory.SharedMemory, "rename"),
4404+
"requires SharedMomery.rename")
4405+
def test_shared_memory_rename_exchange(self):
4406+
name1 = self._new_shm_name('testrename01_tsmb')
4407+
name2 = self._new_shm_name('testrename02_tsmb')
4408+
sms1 = shared_memory.SharedMemory(name1, create=True, size=512)
4409+
sms2 = shared_memory.SharedMemory(name2, create=True, size=512)
4410+
self.addCleanup(sms2.unlink)
4411+
4412+
sms1.rename(name2, flags=shared_memory.SHM_RENAME_EXCHANGE)
4413+
43904414
def test_invalid_shared_memory_creation(self):
43914415
# Test creating a shared memory segment with negative size
43924416
with self.assertRaises(ValueError):

0 commit comments

Comments
 (0)