dkriegner / xrayutilities

xrayutilities - a package with useful scripts for X-ray diffraction physicists
http://xrayutilities.sourceforge.io
GNU General Public License v2.0
81 stars 29 forks source link

Intermittent test failures in Test_analysis_linecuts on ppc64el #110

Closed stefanor closed 3 years ago

stefanor commented 3 years ago

Today in a rebuild of xrayutilities in Debian, for Python 3.9, tests failed on the ppc64el architecture. Looking at the history, I see this has happened before, for exactly the same tests, in August. They passed in a second attempt, both times.

======================================================================
ERROR: test_omega_cut (tests.test_analysis_linecuts.Test_analysis_linecuts)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_dbg_xrayutilities/build/tests/test_analysis_linecuts.py", line 54, in test_omega_cut
    x, d, m = xu.analysis.get_omega_scan(
  File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_dbg_xrayutilities/build/xrayutilities/analysis/line_cuts.py", line 384, in get_omega_scan
    ret = _get_cut(om, tt-ttcut, intensity, intrange/2., npoints)
  File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_dbg_xrayutilities/build/xrayutilities/analysis/line_cuts.py", line 59, in _get_cut
    width = (numpy.max(pos_a[ma]) - numpy.min(pos_a[ma])) / float(npoints)
  File "<__array_function__ internals>", line 5, in amax
  File "/usr/lib/python3/dist-packages/numpy/core/fromnumeric.py", line 2705, in amax
    return _wrapreduction(a, np.maximum, 'max', axis, None, out,
  File "/usr/lib/python3/dist-packages/numpy/core/fromnumeric.py", line 87, in _wrapreduction
    return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
ValueError: zero-size array to reduction operation maximum which has no identity

======================================================================
ERROR: test_qy_cut (tests.test_analysis_linecuts.Test_analysis_linecuts)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_dbg_xrayutilities/build/tests/test_analysis_linecuts.py", line 95, in test_qy_cut
    self.assertTrue(xu.math.fwhm_exp(x, d) > xu.math.fwhm_exp(x2, d2))
  File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_dbg_xrayutilities/build/xrayutilities/math/misc.py", line 121, in fwhm_exp
    return numpy.abs(pr - p0)*2
TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'

======================================================================
ERROR: test_qz_cut (tests.test_analysis_linecuts.Test_analysis_linecuts)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_dbg_xrayutilities/build/tests/test_analysis_linecuts.py", line 85, in test_qz_cut
    self.assertTrue(xu.math.fwhm_exp(x, d) > xu.math.fwhm_exp(x2, d2))
  File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_dbg_xrayutilities/build/xrayutilities/math/misc.py", line 121, in fwhm_exp
    return numpy.abs(pr - p0)*2
TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'

======================================================================
ERROR: test_radial_cut (tests.test_analysis_linecuts.Test_analysis_linecuts)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_dbg_xrayutilities/build/tests/test_analysis_linecuts.py", line 41, in test_radial_cut
    x, d, m = xu.analysis.get_radial_scan(
  File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_dbg_xrayutilities/build/xrayutilities/analysis/line_cuts.py", line 463, in get_radial_scan
    ret = _get_cut(tt-2*(tt/2-om-offcut), 2*(tt/2-om-offcut), intensity,
  File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_dbg_xrayutilities/build/xrayutilities/analysis/line_cuts.py", line 59, in _get_cut
    width = (numpy.max(pos_a[ma]) - numpy.min(pos_a[ma])) / float(npoints)
  File "<__array_function__ internals>", line 5, in amax
  File "/usr/lib/python3/dist-packages/numpy/core/fromnumeric.py", line 2705, in amax
    return _wrapreduction(a, np.maximum, 'max', axis, None, out,
  File "/usr/lib/python3/dist-packages/numpy/core/fromnumeric.py", line 87, in _wrapreduction
    return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
ValueError: zero-size array to reduction operation maximum which has no identity

======================================================================
ERROR: test_ttheta_cut (tests.test_analysis_linecuts.Test_analysis_linecuts)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_dbg_xrayutilities/build/tests/test_analysis_linecuts.py", line 67, in test_ttheta_cut
    x, d, m = xu.analysis.get_ttheta_scan(
  File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_dbg_xrayutilities/build/xrayutilities/analysis/line_cuts.py", line 538, in get_ttheta_scan
    ret = _get_cut(tt-2*(om-ocut), 2*(om-ocut), intensity,
  File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_dbg_xrayutilities/build/xrayutilities/analysis/line_cuts.py", line 59, in _get_cut
    width = (numpy.max(pos_a[ma]) - numpy.min(pos_a[ma])) / float(npoints)
  File "<__array_function__ internals>", line 5, in amax
  File "/usr/lib/python3/dist-packages/numpy/core/fromnumeric.py", line 2705, in amax
    return _wrapreduction(a, np.maximum, 'max', axis, None, out,
  File "/usr/lib/python3/dist-packages/numpy/core/fromnumeric.py", line 87, in _wrapreduction
    return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
ValueError: zero-size array to reduction operation maximum which has no identity

----------------------------------------------------------------------
Ran 230 tests in 213.299s

FAILED (errors=5, skipped=69)

I tried to reproduce it on our porterbox, but the best I got was this failure, once, after 20-odd passes:

......F
======================================================================
FAIL: test_ttheta_cut (tests.test_analysis_linecuts.Test_analysis_linecuts)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/stefanor/xrayutilities-1.6.0/tests/test_analysis_linecuts.py", line 74, in test_ttheta_cut
    self.assertTrue(xu.math.fwhm_exp(x, d) > xu.math.fwhm_exp(x2, d2))
AssertionError: False is not true

----------------------------------------------------------------------
Ran 7 tests in 1.333s

FAILED (failures=1)

These failures seem to be specific to the pydebug builds of python (python3.8-dbg and python3.9-dbg in Debian). I ran Test_analysis_linecuts 50 times in the non-dbg interpreter without a single failure.

So, something somewhere is a little flaky.

stefanor commented 3 years ago

FYI: @picca

dkriegner commented 3 years ago

Did you check issue #102 (actually reported by picca) ? This should be fixed in master!

stefanor commented 3 years ago

Aha, I presume I searched but didn't find that.