Source: python-django-celery-results Version: 2.0.0-1 Severity: serious Justification: FTBFS Tags: bookworm sid ftbfs User: lu...@debian.org Usertags: ftbfs-20211220 ftbfs-bookworm
Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > make[1]: Entering directory '/<<PKGBUILDDIR>>' > dh_auto_test -- --system=custom --test-args="{interpreter} -m pytest" > I: pybuild base:237: python3.10 -m pytest > ============================= test session starts > ============================== > platform linux -- Python 3.10.1, pytest-6.2.5, py-1.10.0, pluggy-0.13.0 > Django settings: t.proj.settings (from ini file) > rootdir: /<<PKGBUILDDIR>>, configfile: setup.cfg, testpaths: t/ > plugins: django-3.5.1, case-1.5.3 > collected 23 items > > t/unit/backends/test_database.py FFF.FFF. [ > 34%] > t/integration/benchmark_models.py s [ > 39%] > t/unit/test_migrations.py .. [ > 47%] > t/unit/test_models.py s. [ > 56%] > t/unit/test_views.py .. [ > 65%] > t/unit/backends/test_cache.py ........ > [100%] > > =================================== FAILURES > =================================== > _____ test_DatabaseBackend.test_backend__pickle_serialization__dict_result > _____ > > self = <t.unit.backends.test_database.test_DatabaseBackend object at > 0x7f4a30fc9ba0> > > def test_backend__pickle_serialization__dict_result(self): > self.app.conf.result_serializer = 'pickle' > self.app.conf.accept_content = {'pickle', 'json'} > self.b = DatabaseBackend(app=self.app) > > tid2 = uuid() > result = {'foo': 'baz', 'bar': SomeClass(12345)} > request = mock.MagicMock() > request.task = 'my_task' > request.args = ['a', 1, SomeClass(67)] > request.kwargs = {'c': 6, 'd': 'e', 'f': SomeClass(89)} > request.hostname = 'celery@ip-0-0-0-0' > request.chord = None > del request.argsrepr, request.kwargsrepr > > self.b.mark_as_done(tid2, result, request=request) > mindb = self.b.get_task_meta(tid2) > > > assert mindb.get('result').get('foo') == 'baz' > E AttributeError: 'NoneType' object has no attribute 'get' > > t/unit/backends/test_database.py:50: AttributeError > _____ test_DatabaseBackend.test_backend__pickle_serialization__str_result > ______ > > self = <t.unit.backends.test_database.test_DatabaseBackend object at > 0x7f4a30f1b3d0> > > def test_backend__pickle_serialization__str_result(self): > self.app.conf.result_serializer = 'pickle' > self.app.conf.accept_content = {'pickle', 'json'} > self.b = DatabaseBackend(app=self.app) > > tid2 = uuid() > result = 'foo' > request = mock.MagicMock() > request.task = 'my_task' > request.args = ['a', 1, SomeClass(67)] > request.kwargs = {'c': 6, 'd': 'e', 'f': SomeClass(89)} > request.hostname = 'celery@ip-0-0-0-0' > request.chord = None > del request.argsrepr, request.kwargsrepr > > self.b.mark_as_done(tid2, result, request=request) > mindb = self.b.get_task_meta(tid2) > > > assert mindb.get('result') == 'foo' > E AssertionError: assert None == 'foo' > E + where None = <built-in method get of dict object at > 0x7f4a30f84f80>('result') > E + where <built-in method get of dict object at 0x7f4a30f84f80> = > {'date_done': None, 'result': None, 'status': 'PENDING', 'task_args': None, > ...}.get > > t/unit/backends/test_database.py:91: AssertionError > ____ test_DatabaseBackend.test_backend__pickle_serialization__bytes_result > _____ > > self = <t.unit.backends.test_database.test_DatabaseBackend object at > 0x7f4a30da2cb0> > > def test_backend__pickle_serialization__bytes_result(self): > self.app.conf.result_serializer = 'pickle' > self.app.conf.accept_content = {'pickle', 'json'} > self.b = DatabaseBackend(app=self.app) > > tid2 = uuid() > result = b'foo' > request = mock.MagicMock() > request.task = 'my_task' > request.args = ['a', 1, SomeClass(67)] > request.kwargs = {'c': 6, 'd': 'e', 'f': SomeClass(89)} > request.hostname = 'celery@ip-0-0-0-0' > request.chord = None > del request.argsrepr, request.kwargsrepr > > self.b.mark_as_done(tid2, result, request=request) > mindb = self.b.get_task_meta(tid2) > > > assert mindb.get('result') == b'foo' > E AssertionError: assert None == b'foo' > E + where None = <built-in method get of dict object at > 0x7f4a30dede40>('result') > E + where <built-in method get of dict object at 0x7f4a30dede40> = > {'date_done': None, 'result': None, 'status': 'PENDING', 'task_args': None, > ...}.get > > t/unit/backends/test_database.py:122: AssertionError > __________________ test_DatabaseBackend.test_backend_secrets > ___________________ > > self = <t.unit.backends.test_database.test_DatabaseBackend object at > 0x7f4a30c636a0> > > def test_backend_secrets(self): > tid = uuid() > request = mock.MagicMock() > request.task = 'my_task' > request.args = ['a', 1, 'password'] > request.kwargs = {'c': 3, 'd': 'e', 'password': 'password'} > request.argsrepr = 'argsrepr' > request.kwargsrepr = 'kwargsrepr' > request.hostname = 'celery@ip-0-0-0-0' > request.chord = None > result = {'foo': 'baz'} > > self.b.mark_as_done(tid, result, request=request) > > mindb = self.b.get_task_meta(tid) > > assert mindb.get('task_args') == 'argsrepr' > E AssertionError: assert None == 'argsrepr' > E + where None = <built-in method get of dict object at > 0x7f4a30b1a0c0>('task_args') > E + where <built-in method get of dict object at 0x7f4a30b1a0c0> = > {'date_done': None, 'result': None, 'status': 'PENDING', 'task_args': None, > ...}.get > > t/unit/backends/test_database.py:180: AssertionError > ________________ test_DatabaseBackend.test_on_chord_part_return > ________________ > > self = <t.unit.backends.test_database.test_DatabaseBackend object at > 0x7f4a30c60c70> > > def test_on_chord_part_return(self): > """Test if the ChordCounter is properly decremented and the callback > is > triggered after all chord parts have returned""" > gid = uuid() > tid1 = uuid() > tid2 = uuid() > subtasks = [AsyncResult(tid1), AsyncResult(tid2)] > group = GroupResult(id=gid, results=subtasks) > self.b.apply_chord(group, self.add.s()) > > chord_counter = ChordCounter.objects.get(group_id=gid) > assert chord_counter.count == 2 > > request = mock.MagicMock() > request.id = subtasks[0].id > request.group = gid > request.task = "my_task" > request.args = ["a", 1, "password"] > request.kwargs = {"c": 3, "d": "e", "password": "password"} > request.argsrepr = "argsrepr" > request.kwargsrepr = "kwargsrepr" > request.hostname = "celery@ip-0-0-0-0" > result = {"foo": "baz"} > > self.b.mark_as_done(tid1, result, request=request) > > chord_counter.refresh_from_db() > assert chord_counter.count == 1 > > self.b.mark_as_done(tid2, result, request=request) > > with pytest.raises(ChordCounter.DoesNotExist): > ChordCounter.objects.get(group_id=gid) > > > request.chord.delay.assert_called_once() > > t/unit/backends/test_database.py:218: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > _mock_self = <MagicMock name='mock.chord.delay' id='139956621382880'> > > def assert_called_once(_mock_self): > """assert that the mock was called only once. > """ > self = _mock_self > if not self.call_count == 1: > msg = ("Expected '%s' to have been called once. Called %s > times.%s" > % (self._mock_name or 'mock', > self.call_count, > self._calls_repr())) > > raise AssertionError(msg) > E AssertionError: Expected 'delay' to have been called once. Called > 0 times. > > /usr/lib/python3/dist-packages/mock/mock.py:891: AssertionError > __________________ test_DatabaseBackend.test_callback_failure > __________________ > > self = <t.unit.backends.test_database.test_DatabaseBackend object at > 0x7f4a30b27e80> > > def test_callback_failure(self): > """Test if a failure in the chord callback is properly handled""" > gid = uuid() > tid1 = uuid() > tid2 = uuid() > cid = uuid() > subtasks = [AsyncResult(tid1), AsyncResult(tid2)] > group = GroupResult(id=gid, results=subtasks) > self.b.apply_chord(group, self.add.s()) > > chord_counter = ChordCounter.objects.get(group_id=gid) > assert chord_counter.count == 2 > > request = mock.MagicMock() > request.id = subtasks[0].id > request.group = gid > request.task = "my_task" > request.args = ["a", 1, "password"] > request.kwargs = {"c": 3, "d": "e", "password": "password"} > request.argsrepr = "argsrepr" > request.kwargsrepr = "kwargsrepr" > request.hostname = "celery@ip-0-0-0-0" > request.chord.id = cid > result = {"foo": "baz"} > > # Trigger an exception when the callback is triggered > request.chord.delay.side_effect = ValueError() > > self.b.mark_as_done(tid1, result, request=request) > > chord_counter.refresh_from_db() > assert chord_counter.count == 1 > > self.b.mark_as_done(tid2, result, request=request) > > with pytest.raises(ChordCounter.DoesNotExist): > ChordCounter.objects.get(group_id=gid) > > > request.chord.delay.assert_called_once() > > t/unit/backends/test_database.py:258: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > _mock_self = <MagicMock name='mock.chord.delay' id='139956623089552'> > > def assert_called_once(_mock_self): > """assert that the mock was called only once. > """ > self = _mock_self > if not self.call_count == 1: > msg = ("Expected '%s' to have been called once. Called %s > times.%s" > % (self._mock_name or 'mock', > self.call_count, > self._calls_repr())) > > raise AssertionError(msg) > E AssertionError: Expected 'delay' to have been called once. Called > 0 times. > > /usr/lib/python3/dist-packages/mock/mock.py:891: AssertionError > =============================== warnings summary > =============================== > ../../../usr/lib/python3/dist-packages/kombu/utils/compat.py:82 > /usr/lib/python3/dist-packages/kombu/utils/compat.py:82: > DeprecationWarning: SelectableGroups dict interface is deprecated. Use select. > for ep in importlib_metadata.entry_points().get(namespace, []) > > ../../../usr/lib/python3/dist-packages/django/apps/registry.py:91 > /usr/lib/python3/dist-packages/django/apps/registry.py:91: > RemovedInDjango41Warning: 'django_celery_results' defines default_app_config > = 'django_celery_results.apps.CeleryResultConfig'. Django now detects this > configuration automatically. You can remove default_app_config. > app_config = AppConfig.create(entry) > > -- Docs: https://docs.pytest.org/en/stable/warnings.html > =========================== short test summary info > ============================ > FAILED > t/unit/backends/test_database.py::test_DatabaseBackend::test_backend__pickle_serialization__dict_result > FAILED > t/unit/backends/test_database.py::test_DatabaseBackend::test_backend__pickle_serialization__str_result > FAILED > t/unit/backends/test_database.py::test_DatabaseBackend::test_backend__pickle_serialization__bytes_result > FAILED > t/unit/backends/test_database.py::test_DatabaseBackend::test_backend_secrets > FAILED > t/unit/backends/test_database.py::test_DatabaseBackend::test_on_chord_part_return > FAILED > t/unit/backends/test_database.py::test_DatabaseBackend::test_callback_failure > ============= 6 failed, 15 passed, 2 skipped, 2 warnings in 0.77s > ============== > E: pybuild pybuild:355: test: plugin custom failed with: exit code=1: > python3.10 -m pytest > I: pybuild base:237: python3.9 -m pytest > ============================= test session starts > ============================== > platform linux -- Python 3.9.9, pytest-6.2.5, py-1.10.0, pluggy-0.13.0 > Django settings: t.proj.settings (from ini file) > rootdir: /<<PKGBUILDDIR>>, configfile: setup.cfg, testpaths: t/ > plugins: django-3.5.1, case-1.5.3 > collected 23 items > > t/unit/backends/test_database.py FFF.FFF. [ > 34%] > t/integration/benchmark_models.py s [ > 39%] > t/unit/test_migrations.py .. [ > 47%] > t/unit/test_models.py s. [ > 56%] > t/unit/test_views.py .. [ > 65%] > t/unit/backends/test_cache.py ........ > [100%] > > =================================== FAILURES > =================================== > _____ test_DatabaseBackend.test_backend__pickle_serialization__dict_result > _____ > > self = <t.unit.backends.test_database.test_DatabaseBackend object at > 0x7f2005e4f9d0> > > def test_backend__pickle_serialization__dict_result(self): > self.app.conf.result_serializer = 'pickle' > self.app.conf.accept_content = {'pickle', 'json'} > self.b = DatabaseBackend(app=self.app) > > tid2 = uuid() > result = {'foo': 'baz', 'bar': SomeClass(12345)} > request = mock.MagicMock() > request.task = 'my_task' > request.args = ['a', 1, SomeClass(67)] > request.kwargs = {'c': 6, 'd': 'e', 'f': SomeClass(89)} > request.hostname = 'celery@ip-0-0-0-0' > request.chord = None > del request.argsrepr, request.kwargsrepr > > self.b.mark_as_done(tid2, result, request=request) > mindb = self.b.get_task_meta(tid2) > > > assert mindb.get('result').get('foo') == 'baz' > E AttributeError: 'NoneType' object has no attribute 'get' > > t/unit/backends/test_database.py:50: AttributeError > _____ test_DatabaseBackend.test_backend__pickle_serialization__str_result > ______ > > self = <t.unit.backends.test_database.test_DatabaseBackend object at > 0x7f2005bf92b0> > > def test_backend__pickle_serialization__str_result(self): > self.app.conf.result_serializer = 'pickle' > self.app.conf.accept_content = {'pickle', 'json'} > self.b = DatabaseBackend(app=self.app) > > tid2 = uuid() > result = 'foo' > request = mock.MagicMock() > request.task = 'my_task' > request.args = ['a', 1, SomeClass(67)] > request.kwargs = {'c': 6, 'd': 'e', 'f': SomeClass(89)} > request.hostname = 'celery@ip-0-0-0-0' > request.chord = None > del request.argsrepr, request.kwargsrepr > > self.b.mark_as_done(tid2, result, request=request) > mindb = self.b.get_task_meta(tid2) > > > assert mindb.get('result') == 'foo' > E AssertionError: assert None == 'foo' > E + where None = <built-in method get of dict object at > 0x7f2005d50f80>('result') > E + where <built-in method get of dict object at 0x7f2005d50f80> = > {'date_done': None, 'result': None, 'status': 'PENDING', 'task_args': None, > ...}.get > > t/unit/backends/test_database.py:91: AssertionError > ____ test_DatabaseBackend.test_backend__pickle_serialization__bytes_result > _____ > > self = <t.unit.backends.test_database.test_DatabaseBackend object at > 0x7f2005bad730> > > def test_backend__pickle_serialization__bytes_result(self): > self.app.conf.result_serializer = 'pickle' > self.app.conf.accept_content = {'pickle', 'json'} > self.b = DatabaseBackend(app=self.app) > > tid2 = uuid() > result = b'foo' > request = mock.MagicMock() > request.task = 'my_task' > request.args = ['a', 1, SomeClass(67)] > request.kwargs = {'c': 6, 'd': 'e', 'f': SomeClass(89)} > request.hostname = 'celery@ip-0-0-0-0' > request.chord = None > del request.argsrepr, request.kwargsrepr > > self.b.mark_as_done(tid2, result, request=request) > mindb = self.b.get_task_meta(tid2) > > > assert mindb.get('result') == b'foo' > E AssertionError: assert None == b'foo' > E + where None = <built-in method get of dict object at > 0x7f2005f8a900>('result') > E + where <built-in method get of dict object at 0x7f2005f8a900> = > {'date_done': None, 'result': None, 'status': 'PENDING', 'task_args': None, > ...}.get > > t/unit/backends/test_database.py:122: AssertionError > __________________ test_DatabaseBackend.test_backend_secrets > ___________________ > > self = <t.unit.backends.test_database.test_DatabaseBackend object at > 0x7f2005f96dc0> > > def test_backend_secrets(self): > tid = uuid() > request = mock.MagicMock() > request.task = 'my_task' > request.args = ['a', 1, 'password'] > request.kwargs = {'c': 3, 'd': 'e', 'password': 'password'} > request.argsrepr = 'argsrepr' > request.kwargsrepr = 'kwargsrepr' > request.hostname = 'celery@ip-0-0-0-0' > request.chord = None > result = {'foo': 'baz'} > > self.b.mark_as_done(tid, result, request=request) > > mindb = self.b.get_task_meta(tid) > > assert mindb.get('task_args') == 'argsrepr' > E AssertionError: assert None == 'argsrepr' > E + where None = <built-in method get of dict object at > 0x7f2005d32080>('task_args') > E + where <built-in method get of dict object at 0x7f2005d32080> = > {'date_done': None, 'result': None, 'status': 'PENDING', 'task_args': None, > ...}.get > > t/unit/backends/test_database.py:180: AssertionError > ________________ test_DatabaseBackend.test_on_chord_part_return > ________________ > > self = <t.unit.backends.test_database.test_DatabaseBackend object at > 0x7f2005f7dcd0> > > def test_on_chord_part_return(self): > """Test if the ChordCounter is properly decremented and the callback > is > triggered after all chord parts have returned""" > gid = uuid() > tid1 = uuid() > tid2 = uuid() > subtasks = [AsyncResult(tid1), AsyncResult(tid2)] > group = GroupResult(id=gid, results=subtasks) > self.b.apply_chord(group, self.add.s()) > > chord_counter = ChordCounter.objects.get(group_id=gid) > assert chord_counter.count == 2 > > request = mock.MagicMock() > request.id = subtasks[0].id > request.group = gid > request.task = "my_task" > request.args = ["a", 1, "password"] > request.kwargs = {"c": 3, "d": "e", "password": "password"} > request.argsrepr = "argsrepr" > request.kwargsrepr = "kwargsrepr" > request.hostname = "celery@ip-0-0-0-0" > result = {"foo": "baz"} > > self.b.mark_as_done(tid1, result, request=request) > > chord_counter.refresh_from_db() > assert chord_counter.count == 1 > > self.b.mark_as_done(tid2, result, request=request) > > with pytest.raises(ChordCounter.DoesNotExist): > ChordCounter.objects.get(group_id=gid) > > > request.chord.delay.assert_called_once() > > t/unit/backends/test_database.py:218: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > _mock_self = <MagicMock name='mock.chord.delay' id='139775511679136'> > > def assert_called_once(_mock_self): > """assert that the mock was called only once. > """ > self = _mock_self > if not self.call_count == 1: > msg = ("Expected '%s' to have been called once. Called %s > times.%s" > % (self._mock_name or 'mock', > self.call_count, > self._calls_repr())) > > raise AssertionError(msg) > E AssertionError: Expected 'delay' to have been called once. Called > 0 times. > > /usr/lib/python3/dist-packages/mock/mock.py:891: AssertionError > __________________ test_DatabaseBackend.test_callback_failure > __________________ > > self = <t.unit.backends.test_database.test_DatabaseBackend object at > 0x7f2005bc8280> > > def test_callback_failure(self): > """Test if a failure in the chord callback is properly handled""" > gid = uuid() > tid1 = uuid() > tid2 = uuid() > cid = uuid() > subtasks = [AsyncResult(tid1), AsyncResult(tid2)] > group = GroupResult(id=gid, results=subtasks) > self.b.apply_chord(group, self.add.s()) > > chord_counter = ChordCounter.objects.get(group_id=gid) > assert chord_counter.count == 2 > > request = mock.MagicMock() > request.id = subtasks[0].id > request.group = gid > request.task = "my_task" > request.args = ["a", 1, "password"] > request.kwargs = {"c": 3, "d": "e", "password": "password"} > request.argsrepr = "argsrepr" > request.kwargsrepr = "kwargsrepr" > request.hostname = "celery@ip-0-0-0-0" > request.chord.id = cid > result = {"foo": "baz"} > > # Trigger an exception when the callback is triggered > request.chord.delay.side_effect = ValueError() > > self.b.mark_as_done(tid1, result, request=request) > > chord_counter.refresh_from_db() > assert chord_counter.count == 1 > > self.b.mark_as_done(tid2, result, request=request) > > with pytest.raises(ChordCounter.DoesNotExist): > ChordCounter.objects.get(group_id=gid) > > > request.chord.delay.assert_called_once() > > t/unit/backends/test_database.py:258: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > _mock_self = <MagicMock name='mock.chord.delay' id='139775509774288'> > > def assert_called_once(_mock_self): > """assert that the mock was called only once. > """ > self = _mock_self > if not self.call_count == 1: > msg = ("Expected '%s' to have been called once. Called %s > times.%s" > % (self._mock_name or 'mock', > self.call_count, > self._calls_repr())) > > raise AssertionError(msg) > E AssertionError: Expected 'delay' to have been called once. Called > 0 times. > > /usr/lib/python3/dist-packages/mock/mock.py:891: AssertionError > =============================== warnings summary > =============================== > ../../../usr/lib/python3/dist-packages/django/apps/registry.py:91 > /usr/lib/python3/dist-packages/django/apps/registry.py:91: > RemovedInDjango41Warning: 'django_celery_results' defines default_app_config > = 'django_celery_results.apps.CeleryResultConfig'. Django now detects this > configuration automatically. You can remove default_app_config. > app_config = AppConfig.create(entry) > > -- Docs: https://docs.pytest.org/en/stable/warnings.html > =========================== short test summary info > ============================ > FAILED > t/unit/backends/test_database.py::test_DatabaseBackend::test_backend__pickle_serialization__dict_result > FAILED > t/unit/backends/test_database.py::test_DatabaseBackend::test_backend__pickle_serialization__str_result > FAILED > t/unit/backends/test_database.py::test_DatabaseBackend::test_backend__pickle_serialization__bytes_result > FAILED > t/unit/backends/test_database.py::test_DatabaseBackend::test_backend_secrets > FAILED > t/unit/backends/test_database.py::test_DatabaseBackend::test_on_chord_part_return > FAILED > t/unit/backends/test_database.py::test_DatabaseBackend::test_callback_failure > ============== 6 failed, 15 passed, 2 skipped, 1 warning in 0.78s > ============== > E: pybuild pybuild:355: test: plugin custom failed with: exit code=1: > python3.9 -m pytest > dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.10 > 3.9" --system=custom "--test-args={interpreter} -m pytest" returned exit code > 13 The full build log is available from: http://qa-logs.debian.net/2021/12/20/python-django-celery-results_2.0.0-1_unstable.log A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute! If you reassign this bug to another package, please marking it as 'affects'-ing this package. See https://www.debian.org/Bugs/server-control#affects If you fail to reproduce this, please provide a build log and diff it with mine so that we can identify if something relevant changed in the meantime.