Package: src:cloudkitty
Version: 17.0.0-2
Severity: important
Tags: ftbfs patch
Dear maintainer:
During a rebuild of all packages in bookworm, your package failed to build:
--------------------------------------------------------------------------------
[...]
debian/rules build-indep
make: pyversions: No such file or directory
py3versions: no X-Python3-Version in control file, using supported versions
dh build-indep --buildsystem=python_distutils --with python3,sphinxdoc,systemd
dh_update_autotools_config -i -O--buildsystem=python_distutils
dh_autoreconf -i -O--buildsystem=python_distutils
dh_auto_configure -i -O--buildsystem=python_distutils
dh_auto_configure: warning: Please use the third-party "pybuild" build system
instead of python-distutils
dh_auto_configure: warning: This feature will be removed in compat 12.
debian/rules override_dh_auto_build
[...]
cloudkitty.tests.utils_tests.test_validation.IterableValuesDictTest.test_iterablevaluesdict_valid_list_and_tuple_with_cast
cloudkitty.tests.utils_tests.test_validation.IterableValuesDictTest.test_iterablevaluesdict_valid_list_and_tuple_with_cast
... ok
cloudkitty.tests.utils_tests.test_validation.IterableValuesDictTest.test_iterablevaluesdict_valid_list_and_tuple_without_cast
cloudkitty.tests.utils_tests.test_validation.IterableValuesDictTest.test_iterablevaluesdict_valid_list_and_tuple_without_cast
... ok
======================================================================
FAIL:
cloudkitty.tests.storage.v2.test_storage_unit.StorageUnitTest.test_get_total_one_scope_one_period(sqlite,influx)
cloudkitty.tests.storage.v2.test_storage_unit.StorageUnitTest.test_get_total_one_scope_one_period(sqlite,influx)
----------------------------------------------------------------------
testtools.testresult.real._StringException: Traceback (most recent call last):
File "/<<PKGBUILDDIR>>/cloudkitty/tests/storage/v2/test_storage_unit.py",
line 164, in test_get_total_one_scope_one_period
self._compare_get_total_result_with_expected(
File "/<<PKGBUILDDIR>>/cloudkitty/tests/storage/v2/test_storage_unit.py",
line 106, in _compare_get_total_result_with_expected
self.assertLessEqual(
File "/usr/lib/python3.11/unittest/case.py", line 1265, in assertLessEqual
self.fail(self._formatMessage(msg, standardMsg))
File "/usr/lib/python3.11/unittest/case.py", line 703, in fail
raise self.failureException(msg)
AssertionError: 1.0000000003174137e-05 not less than or equal to 1e-05
----------------------------------------------------------------------
Ran 431 tests in 29.915s
FAILED (failures=1)
+ echo ======> STESTR TEST SUITE FAILED FOR python3.11: displaying pip3 freeze
output...
======> STESTR TEST SUITE FAILED FOR python3.11: displaying pip3 freeze
output...
+ [ -x /usr/bin/pip3 ]
+ pip3 freeze
alabaster==0.7.12
alembic==1.8.1.dev0
amqp==5.1.1
aniso8601==9.0.1
anyjson==0.3.3
appdirs==1.4.4
async-timeout==4.0.2
attrs==22.2.0
autopage==0.4.0
Babel==2.10.3
bcrypt==3.2.2
beautifulsoup4==4.11.1
blinker==1.5
cachetools==5.2.0
certifi==2022.9.24
chardet==5.1.0
charset-normalizer==3.0.1
click==8.1.3
cliff==4.0.0
cloudkitty==17.0.0
cmd2==2.4.2+ds
colorama==0.4.6
confluent-kafka==1.7.0
cotyledon==1.7.3
coverage==6.5.0
cryptography==3.4.8
DateTimeRange==1.2.0
ddt==1.6.0
debtcollector==2.5.0
decorator==5.1.1
Deprecated==1.2.13
deprecation==2.0.7
dnspython==2.2.1
doc8==0.0.0
docutils==0.17.1
dogpile.cache==1.1.8
dulwich==0.20.50
etcd3==0.12.0
etcd3gw==2.0.0
eventlet==0.33.1
exceptiongroup==1.1.0
extras==1.0.0
fasteners==0.17.3
fixtures==4.0.1
flake8==5.0.4
Flask==2.2.2
Flask-RESTful==0.3.9
future==0.18.2
futurist==2.4.1
gabbi==2.4.0
gevent==22.10.2
gnocchiclient==7.0.7
greenlet==2.0.1
grpcio==1.51.1
hacking==4.1.0
httplib2==0.20.4
idna==3.3
imagesize==1.4.1
importlib-metadata==4.12.0
influxdb==5.3.1
iniconfig==1.1.1
iso8601==1.0.2
itsdangerous==2.1.2
jaraco.classes==3.2.1
jeepney==0.8.0
Jinja2==3.0.3
jmespath==1.0.1
jsonpatch==1.32
jsonpath-rw==1.4.0
jsonpath-rw-ext==1.2.2
jsonpointer==2.3
kazoo==2.8.0.dev0
keyring==23.9.3
keystoneauth1==5.0.0
keystonemiddleware==10.1.0
kombu==5.2.4
logutils==0.3.5
lxml==4.9.2
Mako==1.2.4.dev0
MarkupSafe==2.1.1
mbstrdecoder==1.1.0
mccabe==0.7.0
monotonic==1.6
more-itertools==8.10.0
msgpack==1.0.3
munch==2.5.0
netaddr==0.8.0
netifaces==0.11.0
oauthlib==3.2.1
openstackdocstheme==1.20.0
openstacksdk==0.101.0
os-api-ref==2.1.0
os-client-config==2.1.0
os-service-types==1.7.0
osc-lib==2.6.2
oslo.cache==3.2.0
oslo.concurrency==5.0.1
oslo.config==9.0.0
oslo.context==5.0.0
oslo.db==12.1.0
oslo.i18n==5.1.0
oslo.log==5.0.1
oslo.messaging==14.0.0
oslo.metrics==0.5.0
oslo.middleware==5.0.0
oslo.policy==4.0.0
oslo.serialization==5.0.0
oslo.service==3.0.0
oslo.upgradecheck==2.0.0
oslo.utils==6.0.1
oslosphinx==4.18.0
oslotest==4.5.0
packaging==22.0
Paste==3.5.2
PasteDeploy==3.0.1
pbr==5.10.0
pecan==1.4.1
pep8==1.7.1
pluggy==1.0.0+repack
ply==3.11
prettytable==3.5.0
prometheus-client==0.9.0
protobuf==4.21.12
psycopg2==2.9.4
pure-sasl==0.5.1
py==1.11.0
pycadf==3.1.1
pycodestyle==2.10.0
pyflakes==2.5.0
Pygments==2.13.0
pyinotify==0.9.6
PyJWT==2.6.0
pykerberos==1.1.14
pymemcache==3.5.2
PyMySQL==1.0.2
pyparsing==3.0.9
pyperclip==1.8.2
pytest==7.2.0
python-binary-memcached==0.31.1
python-dateutil==2.8.2
python-keystoneclient==5.0.1
python-memcached==1.58
python-monascaclient==2.6.0
python-subunit==1.4.0
pytz==2022.7
PyYAML==6.0
pyzmq==24.0.1
redis==4.3.4
reno==2.11.2
repoze.lru==0.7
requests==2.28.1
requestsexceptions==1.4.0
restructuredtext-lint==1.3.2
rfc3986==1.5.0
roman==3.3
Routes==2.5.1
SecretStorage==3.3.3
setproctitle==1.3.1
simplegeneric==0.8.1
simplejson==3.18.1
six==1.16.0
snowballstemmer==2.2.0
soupsieve==2.3.2
Sphinx==5.3.0
sphinxcontrib-httpdomain==1.8.0
sphinxcontrib-pecanwsme==0.10.0
SQLAlchemy==1.4.45
sqlalchemy-migrate==0.13.0
sqlparse==0.4.2
statsd==4.0.1
stestr==3.2.1
stevedore==4.0.2
Tempita==0.5.2
tenacity==8.0.1
testresources==2.0.1
testscenarios==0.5.0
testtools==2.5.0
tomli==2.0.1
tooz==3.1.0
typepy==1.3.0
uhashring==2.1
ujson==5.6.0
unittest2==1.1.0
urllib3==1.26.12
vine==5.0.0
voluptuous==0.12.2
waitress==2.1.2
wcwidth==0.2.5
WebOb==1.8.6
WebTest==3.0.0
Werkzeug==2.2.2
wrapt==1.14.1
wsgi-intercept==1.9.3
WSME==0.11.0
yappi==1.4.0
zake==0.2.2
zipp==1.0.0
zope.event==4.4
zope.interface==5.5.2
+ exit 1
make[1]: *** [debian/rules:36: override_dh_install] Error 1
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:6: binary-indep] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary-indep subprocess
returned exit status 2
--------------------------------------------------------------------------------
This error happens randomly. Sometimes it fails, sometimes it does not fail,
but it's
clearly a false positive, because we don't really want the test to fail in such
case.
Please make this a *lot* less likely to happen by increasing the tolerance.
For example, with the attached patch.
--------------------------------------------------------------------
About the archive rebuild: The build was made using virtual machines
from Hetzner, with enough memory, enough disk, and either one or two
CPUs, using a reduced chroot with only build-essential packages (plus
debhelper).
If you could not reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.
If this is really a bug in one of the build-depends, please use
reassign and affects, so that this is still visible in the BTS web
page for this package.
Thanks.--- a/cloudkitty/tests/storage/v2/test_storage_unit.py
+++ b/cloudkitty/tests/storage/v2/test_storage_unit.py
@@ -104,11 +104,11 @@ class StorageUnitTest(TestCase):
returned_total = round(
sum(r.get('rate', r.get('price')) for r in total['results']), 5)
self.assertLessEqual(
- abs(expected_total - float(returned_total)), 0.00001)
+ abs(expected_total - float(returned_total)), 0.0001)
returned_qty = round(sum(r['qty'] for r in total['results']), 5)
self.assertLessEqual(
- abs(expected_qty - float(returned_qty)), 0.00001)
+ abs(expected_qty - float(returned_qty)), 0.0001)
def test_get_total_all_scopes_all_periods(self):
expected_total, expected_qty, _ = self._expected_total_qty_len(
@@ -193,24 +193,24 @@ class StorageUnitTest(TestCase):
abs(round(
float(first_element.get('rate', first_element.get('price')))
- expected_total_first, 5)),
- 0.00001,
+ 0.0001,
)
second_element = total['results'][1]
self.assertLessEqual(
abs(round(
float(second_element.get('rate', second_element.get('price')))
- expected_total_second, 5)),
- 0.00001,
+ 0.0001,
)
self.assertLessEqual(
abs(round(float(total['results'][0]['qty'])
- expected_qty_first, 5)),
- 0.00001,
+ 0.0001,
)
self.assertLessEqual(
abs(round(float(total['results'][1]['qty'])
- expected_qty_second, 5)),
- 0.00001,
+ 0.0001,
)
def test_get_total_all_scopes_one_period_groupby_project_id(self):
@@ -236,23 +236,23 @@ class StorageUnitTest(TestCase):
self.assertLessEqual(
abs(round(float(first_entry.get('rate', first_entry.get('price')))
- expected_total_first, 5)),
- 0.00001,
+ 0.0001,
)
self.assertLessEqual(
abs(round(
float(second_entry.get('rate', second_entry.get('price')))
- expected_total_second, 5)),
- 0.00001,
+ 0.0001,
)
self.assertLessEqual(
abs(round(float(total['results'][0]['qty'])
- expected_qty_first, 5)),
- 0.00001,
+ 0.0001,
)
self.assertLessEqual(
abs(round(float(total['results'][1]['qty'])
- expected_qty_second, 5)),
- 0.00001,
+ 0.0001,
)
def test_get_total_all_scopes_all_periods_groupby_type_paginate(self):