mirror of
https://github.com/python/cpython.git
synced 2025-11-01 10:45:30 +00:00
Issue #6598: Increased time precision and random number range in
email.utils.make_msgid() to strengthen the uniqueness of the message ID.
This commit is contained in:
parent
315e104d11
commit
ae760c0a2c
3 changed files with 31 additions and 6 deletions
|
|
@ -11,6 +11,10 @@ import textwrap
|
|||
from io import StringIO, BytesIO
|
||||
from itertools import chain
|
||||
from random import choice
|
||||
try:
|
||||
from threading import Thread
|
||||
except ImportError:
|
||||
from dummy_threading import Thread
|
||||
|
||||
import email
|
||||
import email.policy
|
||||
|
|
@ -34,7 +38,7 @@ from email import iterators
|
|||
from email import base64mime
|
||||
from email import quoprimime
|
||||
|
||||
from test.support import unlink
|
||||
from test.support import unlink, start_threads
|
||||
from test.test_email import openfile, TestEmailBase
|
||||
|
||||
# These imports are documented to work, but we are testing them using a
|
||||
|
|
@ -3152,6 +3156,25 @@ Foo
|
|||
addrs = utils.getaddresses(['User ((nested comment)) <foo@bar.com>'])
|
||||
eq(addrs[0][1], 'foo@bar.com')
|
||||
|
||||
def test_make_msgid_collisions(self):
|
||||
# Test make_msgid uniqueness, even with multiple threads
|
||||
class MsgidsThread(Thread):
|
||||
def run(self):
|
||||
# generate msgids for 3 seconds
|
||||
self.msgids = []
|
||||
append = self.msgids.append
|
||||
make_msgid = utils.make_msgid
|
||||
clock = time.clock
|
||||
tfin = clock() + 3.0
|
||||
while clock() < tfin:
|
||||
append(make_msgid(domain='testdomain-string'))
|
||||
|
||||
threads = [MsgidsThread() for i in range(5)]
|
||||
with start_threads(threads):
|
||||
pass
|
||||
all_ids = sum([t.msgids for t in threads], [])
|
||||
self.assertEqual(len(set(all_ids)), len(all_ids))
|
||||
|
||||
def test_utils_quote_unquote(self):
|
||||
eq = self.assertEqual
|
||||
msg = Message()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue