Re: [Python-Dev] adding threaded tests to the test suite

2017-01-22 Thread Serhiy Storchaka

On 22.01.17 22:02, Ethan Furman wrote:

Question:  I need to add a threaded test to the enum test module [1] --
is there anything extra I
need to worry about besides the test itself?  Setting or resetting or
using a tool library, etc?


You can use the test.support.start_threads() context manager.


___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] adding threaded tests to the test suite

2017-01-22 Thread Ethan Furman

On 01/22/2017 12:02 PM, Ethan Furman wrote:


Question:  I need to add a threaded test to the enum test module [1] -- is 
there anything extra I
need to worry about besides the test itself?  Setting or resetting or using a 
tool library, etc?


Thanks everyone.

@support.reap_threads and skipping it is.

--
~Ethan~
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] adding threaded tests to the test suite

2017-01-22 Thread Zachary Ware
On Sun, Jan 22, 2017 at 2:39 PM, Martin Panter  wrote:
> As I understand, @reap_threads basically does a join() on each
> background thread, with a total timeout of 1 s. So since your test is
> unlikely to fail between starting threads and joining them, I don’t
> think you need to use @reap_threads.

reap_threads is meant as a failsafe, in case your test case doesn't
clean up after itself properly.  Most of the time, reap_threads
shouldn't actually *do* anything.

-- 
Zach
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] adding threaded tests to the test suite

2017-01-22 Thread Zachary Ware
On Sun, Jan 22, 2017 at 2:02 PM, Ethan Furman  wrote:
> Question:  I need to add a threaded test to the enum test module [1] -- is
> there anything extra I
> need to worry about besides the test itself?  Setting or resetting or using
> a tool library, etc?

As far as I know, the only extras to worry about are to use the
support.reap_threads decorator, and be sure to skip the test if
threading is not available.  Search through the tests for
'reap_threads' if you want other examples of how to handle threaded
tests.

-- 
Zach
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] adding threaded tests to the test suite

2017-01-22 Thread Martin Panter
> Le dim. 22 janv. 2017 à 21:04, Ethan Furman  a écrit :
>> Question:  I need to add a threaded test to the enum test module [1] -- is
>> there anything extra I
>> need to worry about besides the test itself?  Setting or resetting or
>> using a tool library, etc?
>>
>> threads = []
>> for i in range(8):
>> threads.append(threading.Thread(target=cycle_enum))
>> for t in threads:
>> t.start()
>> for t in threads:
>> t.join()

On 22 January 2017 at 20:17, Victor Stinner  wrote:
> There is @support.reap_thread which can help.

As I understand, @reap_threads basically does a join() on each
background thread, with a total timeout of 1 s. So since your test is
unlikely to fail between starting threads and joining them, I don’t
think you need to use @reap_threads.
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] adding threaded tests to the test suite

2017-01-22 Thread Victor Stinner
There is @support.reap_thread which can help.

Victor

Le dim. 22 janv. 2017 à 21:04, Ethan Furman  a écrit :

> Question:  I need to add a threaded test to the enum test module [1] -- is
> there anything extra I
>
> need to worry about besides the test itself?  Setting or resetting or
> using a tool library, etc?
>
>
>
> --
>
> ~Ethan~
>
>
>
>
>
> [1] The test to be added:
>
>
>
>  def test_unique_composite(self):
>
>  # override __eq__ to be identity only
>
>  class TestFlag(IntFlag):
>
>  one = auto()
>
>  two = auto()
>
>  three = auto()
>
>  four = auto()
>
>  five = auto()
>
>  six = auto()
>
>  seven = auto()
>
>  eight = auto()
>
>  def __eq__(self, other):
>
>  return self is other
>
>  def __hash__(self):
>
>  return hash(self._value_)
>
>  # have multiple threads competing to complete the composite
> members
>
>  seen = set()
>
>  failed = False
>
>  def cycle_enum():
>
>  nonlocal failed
>
>  try:
>
>  for i in range(256):
>
>  seen.add(TestFlag(i))
>
>  except (Exception, RuntimeError):
>
>  failed = True
>
>  threads = []
>
>  for i in range(8):
>
>  threads.append(threading.Thread(target=cycle_enum))
>
>  for t in threads:
>
>  t.start()
>
>  for t in threads:
>
>  t.join()
>
>  # check that only 248 members were created
>
>  self.assertFalse(
>
>  failed,
>
>  'at least one thread failed while creating composite
> members')
>
>  self.assertEqual(256, len(seen), 'too many composite members
> created')
>
> ___
>
> Python-Dev mailing list
>
> Python-Dev@python.org
>
> https://mail.python.org/mailman/listinfo/python-dev
>
> Unsubscribe:
> https://mail.python.org/mailman/options/python-dev/victor.stinner%40gmail.com
>
>
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com