Skip to content

test_command_line_command_flag and test_command_line_import_flag: Different num_threads values #128

Open
@hroncok

Description

@hroncok

Hello.

We are currently trying to rebuild this package in Fedora for Python 3.11, but we see some suspicious test failures that occur with Python 3.11 as well as with Python 3.10.

The failures look like this:

On i686:

________________________ test_command_line_command_flag ________________________
    def test_command_line_command_flag():
        pytest.importorskip("numpy")
        output = subprocess.check_output(
            [sys.executable, "-m", "threadpoolctl", "-c", "import numpy"]
        )
        cli_info = json.loads(output.decode("utf-8"))
    
        this_process_info = threadpool_info()
        for lib_info in cli_info:
>           assert lib_info in this_process_info
E           AssertionError: assert {'filepath': '/usr/lib/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 6, 'prefix': 'libgomp', ...} in [{'architecture': 'Nehalem', 'filepath': '/usr/lib/libopenblaso-r0.3.20.so', 'internal_api': 'openblas', 'num_threads': 30, ...}, {'filepath': '/usr/lib/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 30, 'prefix': 'libgomp', ...}]
tests/test_threadpoolctl.py:547: AssertionError
________________________ test_command_line_import_flag _________________________
    @pytest.mark.skipif(
        sys.version_info < (3, 7), reason="need recent subprocess.run options"
    )
    def test_command_line_import_flag():
        result = subprocess.run(
            [
                sys.executable,
                "-m",
                "threadpoolctl",
                "-i",
                "numpy",
                "scipy.linalg",
                "invalid_package",
                "numpy.invalid_sumodule",
            ],
            capture_output=True,
            check=True,
            encoding="utf-8",
        )
        cli_info = json.loads(result.stdout)
    
        this_process_info = threadpool_info()
        for lib_info in cli_info:
>           assert lib_info in this_process_info
E           AssertionError: assert {'filepath': '/usr/lib/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 6, 'prefix': 'libgomp', ...} in [{'architecture': 'Nehalem', 'filepath': '/usr/lib/libopenblaso-r0.3.20.so', 'internal_api': 'openblas', 'num_threads': 30, ...}, {'filepath': '/usr/lib/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 30, 'prefix': 'libgomp', ...}]
tests/test_threadpoolctl.py:573: AssertionError

On x86_64

________________________ test_command_line_command_flag ________________________
    def test_command_line_command_flag():
        pytest.importorskip("numpy")
        output = subprocess.check_output(
            [sys.executable, "-m", "threadpoolctl", "-c", "import numpy"]
        )
        cli_info = json.loads(output.decode("utf-8"))
    
        this_process_info = threadpool_info()
        for lib_info in cli_info:
>           assert lib_info in this_process_info
E           AssertionError: assert {'filepath': '/usr/lib64/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 6, 'prefix': 'libgomp', ...} in [{'architecture': 'SkylakeX', 'filepath': '/usr/lib64/libopenblaso-r0.3.20.so', 'internal_api': 'openblas', 'num_threads': 30, ...}, {'filepath': '/usr/lib64/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 30, 'prefix': 'libgomp', ...}]
tests/test_threadpoolctl.py:547: AssertionError
________________________ test_command_line_import_flag _________________________
    @pytest.mark.skipif(
        sys.version_info < (3, 7), reason="need recent subprocess.run options"
    )
    def test_command_line_import_flag():
        result = subprocess.run(
            [
                sys.executable,
                "-m",
                "threadpoolctl",
                "-i",
                "numpy",
                "scipy.linalg",
                "invalid_package",
                "numpy.invalid_sumodule",
            ],
            capture_output=True,
            check=True,
            encoding="utf-8",
        )
        cli_info = json.loads(result.stdout)
    
        this_process_info = threadpool_info()
        for lib_info in cli_info:
>           assert lib_info in this_process_info
E           AssertionError: assert {'filepath': '/usr/lib64/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 6, 'prefix': 'libgomp', ...} in [{'architecture': 'SkylakeX', 'filepath': '/usr/lib64/libopenblaso-r0.3.20.so', 'internal_api': 'openblas', 'num_threads': 30, ...}, {'filepath': '/usr/lib64/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 30, 'prefix': 'libgomp', ...}]
tests/test_threadpoolctl.py:573: AssertionError

On ppc64le

________________________ test_command_line_command_flag ________________________
    def test_command_line_command_flag():
        pytest.importorskip("numpy")
        output = subprocess.check_output(
            [sys.executable, "-m", "threadpoolctl", "-c", "import numpy"]
        )
        cli_info = json.loads(output.decode("utf-8"))
    
        this_process_info = threadpool_info()
        for lib_info in cli_info:
>           assert lib_info in this_process_info
E           AssertionError: assert {'filepath': '/usr/lib64/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 8, 'prefix': 'libgomp', ...} in [{'architecture': 'POWER9', 'filepath': '/usr/lib64/libopenblaso-r0.3.20.so', 'internal_api': 'openblas', 'num_threads': 40, ...}, {'filepath': '/usr/lib64/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 40, 'prefix': 'libgomp', ...}]
tests/test_threadpoolctl.py:547: AssertionError
________________________ test_command_line_import_flag _________________________
    @pytest.mark.skipif(
        sys.version_info < (3, 7), reason="need recent subprocess.run options"
    )
    def test_command_line_import_flag():
        result = subprocess.run(
            [
                sys.executable,
                "-m",
                "threadpoolctl",
                "-i",
                "numpy",
                "scipy.linalg",
                "invalid_package",
                "numpy.invalid_sumodule",
            ],
            capture_output=True,
            check=True,
            encoding="utf-8",
        )
        cli_info = json.loads(result.stdout)
    
        this_process_info = threadpool_info()
        for lib_info in cli_info:
>           assert lib_info in this_process_info
E           AssertionError: assert {'filepath': '/usr/lib64/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 8, 'prefix': 'libgomp', ...} in [{'architecture': 'POWER9', 'filepath': '/usr/lib64/libopenblaso-r0.3.20.so', 'internal_api': 'openblas', 'num_threads': 40, ...}, {'filepath': '/usr/lib64/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 40, 'prefix': 'libgomp', ...}]
tests/test_threadpoolctl.py:573: AssertionError

On s390x:

________________________ test_command_line_command_flag ________________________
    def test_command_line_command_flag():
        pytest.importorskip("numpy")
        output = subprocess.check_output(
            [sys.executable, "-m", "threadpoolctl", "-c", "import numpy"]
        )
        cli_info = json.loads(output.decode("utf-8"))
    
        this_process_info = threadpool_info()
        for lib_info in cli_info:
>           assert lib_info in this_process_info
E           AssertionError: assert {'filepath': '/usr/lib64/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 2, 'prefix': 'libgomp', ...} in [{'architecture': 'Z14', 'filepath': '/usr/lib64/libopenblaso-r0.3.20.so', 'internal_api': 'openblas', 'num_threads': 64, ...}, {'filepath': '/usr/lib64/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 64, 'prefix': 'libgomp', ...}]
tests/test_threadpoolctl.py:547: AssertionError
________________________ test_command_line_import_flag _________________________
    @pytest.mark.skipif(
        sys.version_info < (3, 7), reason="need recent subprocess.run options"
    )
    def test_command_line_import_flag():
        result = subprocess.run(
            [
                sys.executable,
                "-m",
                "threadpoolctl",
                "-i",
                "numpy",
                "scipy.linalg",
                "invalid_package",
                "numpy.invalid_sumodule",
            ],
            capture_output=True,
            check=True,
            encoding="utf-8",
        )
        cli_info = json.loads(result.stdout)
    
        this_process_info = threadpool_info()
        for lib_info in cli_info:
>           assert lib_info in this_process_info
E           AssertionError: assert {'filepath': '/usr/lib64/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 2, 'prefix': 'libgomp', ...} in [{'architecture': 'Z14', 'filepath': '/usr/lib64/libopenblaso-r0.3.20.so', 'internal_api': 'openblas', 'num_threads': 64, ...}, {'filepath': '/usr/lib64/libgomp.so.1.0.0', 'internal_api': 'openmp', 'num_threads': 64, 'prefix': 'libgomp', ...}]
tests/test_threadpoolctl.py:573: AssertionError

The tests pass on aarch64. test_architecture was skipped.

It appears the num_threads value is different. Is that a real problem or just bad test expectations? Thanks

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions