debian-koji/tests/test_lib/test_profiles.py
Yu Ming Zhu f7f1c65bea raise error when config search paths is empty
also fix unittest: test_profiles

notes: since the test won't read config files anymore, lift the loop number from 20 -> 256 to increase the probability of hitting the multithread issue

fixes: #1786
2019-11-22 08:43:44 +01:00

47 lines
1.3 KiB
Python

from __future__ import absolute_import
import koji
import sys
import threading
import traceback
import mock
from six.moves import range
try:
import unittest2 as unittest
except ImportError:
import unittest
class ProfilesTestCase(unittest.TestCase):
def test_profile_threading(self):
""" Test that profiles thread safe"""
# see: https://pagure.io/koji/issue/58 and https://pagure.io/pungi/issue/253
# loop a few times to increase chances of hitting race conditions
for i in range(256):
errors = {}
threads = [threading.Thread(target=stress, args=(errors, _)) for _ in range(100)]
for t in threads:
t.start()
for t in threads:
t.join(30)
for n in errors:
err = errors[n]
if err is not None:
print(err)
assert False
def stress(errors, n):
errors[n] = "Failed to start"
try:
config = mock.Mock(topdir='topdir')
koji.get_profile_module('koji', config=config)
except Exception:
# if we don't catch this, nose seems to ignore the test
errors[n] = ''.join(traceback.format_exception(*sys.exc_info()))
return
else:
errors[n] = None