DataDog / sketches-py

Python implementations of the distributed quantile sketch algorithm DDSketch
Other
83 stars 17 forks source link

Flaky test: `test_merge_unequal` #41

Open Kyle-Verhoog opened 2 years ago

Kyle-Verhoog commented 2 years ago
============================= test session starts ==============================
platform linux -- Python 3.8.12, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
rootdir: /home/runner/work/sketches-py/sketches-py
collected 124 items

tests/test_ddsketch.py ....................F                             [ 16%]
tests/test_mapping.py .............                                      [ 27%]
tests/test_proto.py ...............................................      [ 65%]
tests/test_store.py ...........................................          [100%]

=================================== FAILURES ===================================
___________ TestLogCollapsingHighestDenseDDSketch.test_merge_unequal ___________

self = <tests.test_ddsketch.TestLogCollapsingHighestDenseDDSketch testMethod=test_merge_unequal>

    def test_merge_unequal(self):
        """Test merging variable-sized DDSketches"""
        ntests = 20
        for _ in range(ntests):
            for size in TEST_SIZES:
                dataset = Lognormal(size)
                sketch1 = self._new_dd_sketch()
                sketch2 = self._new_dd_sketch()
                for value in dataset.data:
                    if np.random.random() > 0.7:
                        sketch1.add(value)
                    else:
                        sketch2.add(value)
                sketch1.merge(sketch2)
>               self._evaluate_sketch_accuracy(sketch1, dataset, TEST_REL_ACC)

tests/test_ddsketch.py:150: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_ddsketch.py:80: in _evaluate_sketch_accuracy
    self.assertTrue(err - eps * abs(data_q) <= 1e-15)
E   AssertionError: False is not true
=========================== short test summary info ============================
FAILED tests/test_ddsketch.py::TestLogCollapsingHighestDenseDDSketch::test_merge_unequal
======================== 1 failed, 123 passed in 5.50s =========================
Test failed with exit code 1

-------------------summary-------------------
x test:  pythonInterpreter(_hint='3.8') 'pytest' 'numpy'
0 passed with 0 warnings, 1 failed

(https://github.com/DataDog/sketches-py/runs/4556460860?check_suite_focus=true)

This could be caused by a bug, some investigation is required.

Kyle-Verhoog commented 2 years ago

Seen also in 3.7:

___________ TestLogCollapsingHighestDenseDDSketch.test_merge_unequal ___________

self = <tests.test_ddsketch.TestLogCollapsingHighestDenseDDSketch testMethod=test_merge_unequal>

    def test_merge_unequal(self):
        """Test merging variable-sized DDSketches"""
        ntests = 20
        for _ in range(ntests):
            for size in TEST_SIZES:
                dataset = Lognormal(size)
                sketch1 = self._new_dd_sketch()
                sketch2 = self._new_dd_sketch()
                for value in dataset.data:
                    if np.random.random() > 0.7:
                        sketch1.add(value)
                    else:
                        sketch2.add(value)
                sketch1.merge(sketch2)
>               self._evaluate_sketch_accuracy(sketch1, dataset, TEST_REL_ACC)

tests/test_ddsketch.py:151: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_ddsketch.py:81: in _evaluate_sketch_accuracy
    self.assertTrue(err - eps * abs(data_q) <= 1e-15)
E   AssertionError: False is not true
=========================== short test summary info ============================
FAILED tests/test_ddsketch.py::TestLogCollapsingHighestDenseDDSketch::test_merge_unequal
======================== 1 failed, 124 passed in 6.69s =========================
Test failed with exit code 1

-------------------summary-------------------
x test:  pythonInterpreter(_hint='3.7') 'pytest' 'numpy'
0 passed with 0 warnings, 1 failed

https://github.com/DataDog/sketches-py/runs/4556487108?check_suite_focus=true