Jacek Gondzio

100 papers Misc 1Journal 93Unranked 5
YearRankTypeTitle / Venue / Authors
2025 J jnl
J. Sci. Comput.
Spyridon Pougkakiotis, Jacek Gondzio, Dionysis Kalogerias
2025 J jnl
EURO J. Comput. Optim.
Jacek Gondzio
2025 J jnl
Comput. Optim. Appl.
Jacek Gondzio, Francisco Nogueira Calmon Sobral
2025 J jnl
Comput. Optim. Appl.
Stefano Cipolla, Jacek Gondzio
2024 J jnl
Eur. J. Oper. Res.
Stefano Cipolla, Jacek Gondzio, Filippo Zanetti
2024 J jnl
CoRR
Spyridon Pougkakiotis, Jacek Gondzio, Dionysis Kalogerias
2024 J jnl
Oper. Res.
Maxence Delorme, Sergio García, Jacek Gondzio, Jörg Kalcsics, David F. Manlove, William Pettersson
2024 J jnl
Optim. Methods Softw.
Serge Gratton, Philippe L. Toint, Jacek Gondzio, Yurii E. Nesterov, Yaxiang Yuan
2023 J jnl
SIAM J. Sci. Comput.
Filippo Zanetti, Jacek Gondzio
2023 J jnl
INFORMS J. Comput.
Filippo Zanetti, Jacek Gondzio
2023 J jnl
J. Glob. Optim.
M. Barkhagen, Sergio García, Jacek Gondzio, Jörg Kalcsics, J. Kroeske, Sotirios Sabanis, A. Staal
2023 J jnl
J. Optim. Theory Appl.
Stefano Cipolla, Jacek Gondzio
2022 J jnl
CoRR
Spyridon Pougkakiotis, Jacek Gondzio
2022 J jnl
J. Optim. Theory Appl.
Spyridon Pougkakiotis, Jacek Gondzio
2022 J jnl
Comput. Optim. Appl.
Jacek Gondzio, Spyridon Pougkakiotis, John W. Pearson
2022 J jnl
Comput. Oper. Res.
Maxence Delorme, Sergio García, Jacek Gondzio, Jörg Kalcsics, David F. Manlove, William Pettersson, James Trimble
2022 J jnl
CoRR
Stefano Cipolla, Jacek Gondzio
2022 J jnl
SIAM Rev.
Valentina De Simone, Daniela di Serafino, Jacek Gondzio, Spyridon Pougkakiotis, Marco Viola
2022 J jnl
EURO J. Comput. Optim.
Stefano Cipolla, Jacek Gondzio
2021 J jnl
J. Sci. Comput.
Stefania Bellavia, Jacek Gondzio, Margherita Porcelli
2021 J jnl
Numer. Linear Algebra Appl.
Luca Bergamaschi, Jacek Gondzio, Ángeles Martínez, John W. Pearson, Spyridon Pougkakiotis
2021 J jnl
Comput. Optim. Appl.
Spyridon Pougkakiotis, Jacek Gondzio
2021 J jnl
CoRR
Jacek Gondzio, Spyridon Pougkakiotis, John W. Pearson
2021 J jnl
J. Glob. Optim.
Jacek Gondzio, E. Alper Yildirim
2021 J jnl
Comput. Oper. Res.
William Pettersson, Maxence Delorme, Sergio García, Jacek Gondzio, Jörg Kalcsics, David F. Manlove
2021 J jnl
CoRR
Jacek Gondzio, Matti Lassas, Salla-Maaria Latva-Äijö, Samuli Siltanen, Filippo Zanetti
2021 J jnl
CoRR
Valentina De Simone, Daniela di Serafino, Jacek Gondzio, Spyridon Pougkakiotis, Marco Viola
2021 J jnl
CoRR
Stefano Cipolla, Jacek Gondzio
2020 J jnl
CoRR
Stefano Cipolla, Jacek Gondzio
2020 J jnl
SIAM J. Matrix Anal. Appl.
Spyridon Pougkakiotis, John W. Pearson, Santolo Leveque, Jacek Gondzio
2020 J jnl
Math. Program. Comput.
Lukas Schork, Jacek Gondzio
2019 J jnl
CoRR
Luca Bergamaschi, Jacek Gondzio, Ángeles Martínez, John W. Pearson, Spyridon Pougkakiotis
2019 J jnl
CoRR
Stefania Bellavia, Jacek Gondzio, Margherita Porcelli
2019 J jnl
Math. Program.
Stefania Bellavia, Jacek Gondzio, Margherita Porcelli
2019 J jnl
J. Optim. Theory Appl.
Spyridon Pougkakiotis, Jacek Gondzio
2019 J jnl
Eur. J. Oper. Res.
Maxence Delorme, Sergio García, Jacek Gondzio, Jörg Kalcsics, David F. Manlove, William Pettersson
2019 J jnl
Comput. Optim. Appl.
Jacek Gondzio, F. N. C. Sobral
2019 J jnl
Transp. Sci.
Pedro Augusto Munari, Alfredo Moreno, Jonathan De La Vega, Douglas José Alem, Jacek Gondzio, Reinaldo Morabito
2018 J jnl
Comput. Optim. Appl.
Alemseged Gebrehiwot Weldeyesus, Jacek Gondzio
2018 J jnl
CoRR
Maxence Delorme, Sergio García, Jacek Gondzio, Jörg Kalcsics, David F. Manlove, William Pettersson
2018 J jnl
CoRR
Jacek Gondzio, F. N. C. Sobral
2017 J jnl
Numerische Mathematik
John W. Pearson, Jacek Gondzio
2016 J jnl
Math. Program.
Kimon Fountoulakis, Jacek Gondzio
2016 J jnl
Eur. J. Oper. Res.
Jacek Gondzio
2016 J jnl
J. Optim. Theory Appl.
Rachael Tappenden, Peter Richtárik, Jacek Gondzio
2016 J jnl
Math. Program. Comput.
Jacek Gondzio, Pablo González-Brevis, Pedro Augusto Munari
2016 J jnl
Comput. Optim. Appl.
Kimon Fountoulakis, Jacek Gondzio
2015 J jnl
SIAM J. Sci. Comput.
Ioannis K. Dassios, Kimon Fountoulakis, Jacek Gondzio
2015 J jnl
Math. Program.
Jacek Gondzio, Pablo González-Brevis
2014 J jnl
CoRR
Robert Mansel Gower, Jacek Gondzio
2014 J jnl
Math. Program. Comput.
Kimon Fountoulakis, Jacek Gondzio, Pavel Zhlobich
2014 J jnl
J. Comput. Appl. Math.
Jacek Gondzio, Jacek A. Gruca, J. A. Julian Hall, Wieslaw Laskowski, Marek Zukowski
2013 J jnl
SIAM J. Sci. Comput.
Stefania Bellavia, Jacek Gondzio, Benedetta Morini
2013 J jnl
SIAM J. Optim.
Jacek Gondzio
2013 J jnl
CoRR
Rachael Tappenden, Peter Richtárik, Jacek Gondzio
2013 J jnl
CoRR
Jacek Gondzio, Pablo González-Brevis, Pedro Augusto Munari
2013 J jnl
Eur. J. Oper. Res.
Jacek Gondzio, Pablo González-Brevis, Pedro Augusto Munari
2013 J jnl
Comput. Oper. Res.
Pedro Augusto Munari, Jacek Gondzio
2012 J jnl
Eur. J. Oper. Res.
Jacek Gondzio
2012 J jnl
Comput. Optim. Appl.
Jacek Gondzio
2011 J jnl
IEEE Trans. Signal Process.
Pei-Jung Chung, Huiqin Du, Jacek Gondzio
2011 J jnl
Electron. Notes Discret. Math.
Pedro Augusto Munari, Pablo González-Brevis, Jacek Gondzio
2011 J jnl
Math. Program.
Marco Colombo, Jacek Gondzio, Andreas Grothey
2011 conf
VTC Spring
Pablo González-Brevis, Jacek Gondzio, Yijia Fan, H. Vincent Poor, John S. Thompson, Ioannis Krikidis, Pei-Jung Chung
2011 J jnl
Numer. Linear Algebra Appl.
Stefania Bellavia, Jacek Gondzio, Benedetta Morini
2011 J jnl
Comput. Optim. Appl.
Luca Bergamaschi, Jacek Gondzio, Manolo Venturin, Giovanni Zilli
2011 J jnl
Comput. Optim. Appl.
Kristian Woodsend, Jacek Gondzio
2011 conf
PPAM (1)
Edmund Smith, Jacek Gondzio, J. A. Julian Hall
2010 J jnl
Eur. J. Oper. Res.
Emmanuel Fragnière, Jacek Gondzio, Xi Yang
2009 J jnl
Optim. Methods Softw.
João P. M. Gonçalves, Robert H. Storer, Jacek Gondzio
2009 conf
EUSIPCO
Pei-Jung Chung, Huiqin Du, Jacek Gondzio
2009 J jnl
Math. Program. Comput.
Marco Colombo, Andreas Grothey, Jonathan D. Hogg, Kristian Woodsend, Jacek Gondzio
2009 J jnl
Comput. Manag. Sci.
Jacek Gondzio, Andreas Grothey
2009 J jnl
J. Mach. Learn. Res.
Kristian Woodsend, Jacek Gondzio
2009 J jnl
Numer. Linear Algebra Appl.
Stefania Bellavia, Jacek Gondzio, Benedetta Morini
2009 J jnl
Eur. J. Oper. Res.
Adela Pagès, Jacek Gondzio, Narcís Nabona
2008 J jnl
SIAM J. Optim.
Jacek Gondzio, Andreas Grothey
2008 J jnl
Comput. Optim. Appl.
Marco Colombo, Jacek Gondzio
2008 J jnl
Optim. Methods Softw.
Ghussoun Al-Jeiroudi, Jacek Gondzio, J. A. Julian Hall
2008 conf
EUSIPCO
Huiqin Du, Pei-Jung Chung, Jacek Gondzio, Bernard Mulgrew
2007 J jnl
Comput. Optim. Appl.
Luca Bergamaschi, Jacek Gondzio, Manolo Venturin, Giovanni Zilli
2007 J jnl
Ann. Oper. Res.
Jacek Gondzio, Andreas Grothey
2007 J jnl
Eur. J. Oper. Res.
Jacek Gondzio, Andreas Grothey
2005 ch.
Applications of Stochastic Programming
Emmanuel Fragnière, Jacek Gondzio
2005 Misc conf
PPAM
Jacek Gondzio, Andreas Grothey
2004 J jnl
J. Glob. Optim.
Vladimir Ejov, Jerzy A. Filar, Jacek Gondzio
2004 J jnl
Comput. Optim. Appl.
Luca Bergamaschi, Jacek Gondzio, Giovanni Zilli
2003 J jnl
Math. Program.
Jacek Gondzio, Robert Sarkissian
2002 J jnl
SIAM J. Optim.
Jacek Gondzio, Andreas Grothey
2001 J jnl
INFORMS J. Comput.
Csaba Mészáros, Jacek Gondzio
2001 J jnl
Ann. Oper. Res.
Emmanuel Fragnière, Jacek Gondzio, Robert Sarkissian
2001 J jnl
Oper. Res.
Jacek Gondzio, Roy Kouwenberg
2001 J jnl
Comput. Optim. Appl.
Jacek Gondzio, Robert Sarkissian, Jean-Philippe Vial
2000 J jnl
Ann. Oper. Res.
Emmanuel Fragnière, Jacek Gondzio, Jean-Philippe Vial
2000 conf
CDC
Jerzy A. Filar, Jacek Gondzio, Alain Haurie, Francesco Moresino, Jean-Philippe Vial
1998 J jnl
Math. Program.
Jacek Gondzio
1997 J jnl
INFORMS J. Comput.
Jacek Gondzio
1996 J jnl
Comput. Optim. Appl.
Jacek Gondzio
1996 J jnl
Math. Program.
Jean-Louis Goffin, Jacek Gondzio, Robert Sarkissian, Jean-Philippe Vial
1994 J jnl
INFORMS J. Comput.
Jacek Gondzio
tests/integration/test_base_extractor.py
← Index tests/integration/test_base_extractor.py python
"""
Integration tests for the base Extractor class.
"""
import pytest
import hashlib
import math
from unittest.mock import Mock, patch, MagicMock
from collections import Counter

pytestmark = [pytest.mark.integration]


class TestExtractorStaticMethods:
    """Tests for static methods in Extractor class."""

    def test_process_binary_string_printable(self):
        """Test processing a printable binary string."""
        from redb.extractors.extractor import Extractor

        # Test with printable ASCII characters
        input_bytes = b"Hello World\x00\x00\x00"
        result = Extractor.process_binary_string(input_bytes)
        assert result == "Hello World"

    def test_process_binary_string_non_printable(self):
        """Test processing a string with non-printable characters."""
        from redb.extractors.extractor import Extractor

        # Test with non-printable characters
        input_bytes = b"\x01\x02Hello\x00"
        result = Extractor.process_binary_string(input_bytes)
        assert "\\x01" in result
        assert "\\x02" in result
        assert "Hello" in result

    def test_process_binary_string_empty(self):
        """Test processing an empty binary string."""
        from redb.extractors.extractor import Extractor

        input_bytes = b"\x00\x00\x00"
        result = Extractor.process_binary_string(input_bytes)
        assert result == ""

    def test_process_binary_string_all_printable(self):
        """Test processing a fully printable string."""
        from redb.extractors.extractor import Extractor

        input_bytes = b"TestString123"
        result = Extractor.process_binary_string(input_bytes)
        assert result == "TestString123"

    def test_remove_non_utf8_valid(self):
        """Test removing non-UTF8 characters from valid UTF8 string."""
        from redb.extractors.extractor import Extractor

        input_bytes = b"Hello World"
        result = Extractor.remove_non_utf8(input_bytes)
        assert result == b"Hello World"

    def test_remove_non_utf8_with_invalid(self):
        """Test removing non-UTF8 characters from mixed string."""
        from redb.extractors.extractor import Extractor

        # Mix of valid UTF8 and invalid bytes
        input_bytes = b"Hello\xff\xfeWorld"
        result = Extractor.remove_non_utf8(input_bytes)
        # Should remove the invalid bytes
        assert b"\xff" not in result
        assert b"\xfe" not in result
        assert b"Hello" in result
        assert b"World" in result

    def test_remove_non_utf8_empty(self):
        """Test removing non-UTF8 from empty string."""
        from redb.extractors.extractor import Extractor

        result = Extractor.remove_non_utf8(b"")
        assert result == b""


class TestExtractorEntropyCalculation:
    """Tests for entropy calculation in Extractor class."""

    def test_calculate_entropy_empty_data(self, elf_binary_path, mock_logger):
        """Test entropy calculation with empty data."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = BasicPropertiesExtractor(elf_binary_path, mock_logger)
            result = extractor.calculate_entropy(b"")
            assert result == 0.0

    def test_calculate_entropy_uniform_data(self, elf_binary_path, mock_logger):
        """Test entropy calculation with uniform (low entropy) data."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = BasicPropertiesExtractor(elf_binary_path, mock_logger)
            # All same bytes = 0 entropy
            uniform_data = b"\x00" * 256
            result = extractor.calculate_entropy(uniform_data)
            assert result == 0.0

    def test_calculate_entropy_random_data(self, elf_binary_path, mock_logger, high_entropy_data):
        """Test entropy calculation with random (high entropy) data."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = BasicPropertiesExtractor(elf_binary_path, mock_logger)
            result = extractor.calculate_entropy(high_entropy_data)
            # Random data should have entropy close to 8 (max for bytes)
            assert result > 7.0

    def test_calculate_entropy_binary_data(self, elf_binary_path, mock_logger):
        """Test entropy calculation with binary data."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = BasicPropertiesExtractor(elf_binary_path, mock_logger)
            # Two equally distributed values = 1 bit entropy
            binary_data = b"\x00\x01" * 128
            result = extractor.calculate_entropy(binary_data)
            assert abs(result - 1.0) < 0.01

    def test_calculate_entropy_string_data(self, elf_binary_path, mock_logger):
        """Test entropy calculation with string data."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = BasicPropertiesExtractor(elf_binary_path, mock_logger)
            # String with two equally distributed characters
            string_data = "ab" * 100
            result = extractor.calculate_entropy(string_data)
            assert abs(result - 1.0) < 0.01


class TestExtractorInitialization:
    """Tests for Extractor initialization."""

    def test_extractor_hashes_computed_on_init(self, elf_binary_path, mock_logger, known_hashes):
        """Test that hashes are computed during initialization."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = BasicPropertiesExtractor(elf_binary_path, mock_logger)

            assert extractor.md5 == known_hashes['md5']
            assert extractor.sha1 == known_hashes['sha1']
            assert extractor.sha256 == known_hashes['sha256']

    def test_extractor_hash_dataclass_created(self, elf_binary_path, mock_logger, known_hashes):
        """Test that Hash dataclass is created during initialization."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = BasicPropertiesExtractor(elf_binary_path, mock_logger)

            assert extractor.hash.md5 == known_hashes['md5']
            assert extractor.hash.sha1 == known_hashes['sha1']
            assert extractor.hash.sha256 == known_hashes['sha256']

    def test_extractor_binary_cached_property(self, elf_binary_path, mock_logger, elf_binary_content):
        """Test that binary content is loaded as cached property."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = BasicPropertiesExtractor(elf_binary_path, mock_logger)

            # Access binary property
            binary = extractor.binary
            assert binary == elf_binary_content

            # Second access should return cached value (same id)
            assert extractor.binary is binary

    def test_extractor_with_exporters(self, elf_binary_path, mock_logger, mock_print_exporter):
        """Test extractor initialization with exporters."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = BasicPropertiesExtractor(
                elf_binary_path,
                mock_logger,
                exporters=[mock_print_exporter]
            )

            assert len(extractor.exporters) == 1
            assert extractor.exporters[0] is mock_print_exporter

    def test_extractor_with_index_prefix(self, elf_binary_path, mock_logger):
        """Test extractor initialization with custom index prefix."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = BasicPropertiesExtractor(
                elf_binary_path,
                mock_logger,
                index_prefix="custom_prefix"
            )

            assert "custom_prefix" in extractor.elastic_index

    def test_extractor_known_benign_flag(self, elf_binary_path, mock_logger):
        """Test extractor with known_benign flag."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = BasicPropertiesExtractor(
                elf_binary_path,
                mock_logger,
                known_benign=True
            )

            assert extractor.known_benign is True
            assert extractor.known_malicious is False

    def test_extractor_known_malicious_flag(self, elf_binary_path, mock_logger):
        """Test extractor with known_malicious flag."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = BasicPropertiesExtractor(
                elf_binary_path,
                mock_logger,
                known_malicious=True
            )

            assert extractor.known_benign is False
            assert extractor.known_malicious is True


class TestExtractorExportData:
    """Tests for export_data method."""

    def test_export_data_with_print_exporter(self, elf_binary_path, mock_logger, mock_print_exporter, capsys):
        """Test export_data with PrintExporter."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = BasicPropertiesExtractor(
                elf_binary_path,
                mock_logger,
                exporters=[mock_print_exporter]
            )

            result = extractor.export_data()
            # Should succeed with PrintExporter
            assert result is True

    def test_export_data_no_exporters(self, elf_binary_path, mock_logger):
        """Test export_data with no exporters configured."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = BasicPropertiesExtractor(
                elf_binary_path,
                mock_logger,
                exporters=[]
            )

            result = extractor.export_data()
            # Should succeed with no exporters (nothing to export)
            assert result is True


class TestExtractorEdgeCases:
    """Tests for edge cases in Extractor class."""

    def test_extractor_with_nonexistent_file(self, mock_logger):
        """Test extractor with non-existent file."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            with pytest.raises(FileNotFoundError):
                BasicPropertiesExtractor("/nonexistent/file.bin", mock_logger)

    def test_entropy_none_data(self, elf_binary_path, mock_logger):
        """Test entropy calculation with None returns 0."""
        from redb.extractors.basicproperties import BasicPropertiesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = BasicPropertiesExtractor(elf_binary_path, mock_logger)
            result = extractor.calculate_entropy(None)
            assert result == 0.0

    def test_process_binary_string_high_bytes(self):
        """Test processing binary string with high byte values."""
        from redb.extractors.extractor import Extractor

        # Characters above 126 are non-printable
        input_bytes = b"\x7f\x80\x81\xff"
        result = Extractor.process_binary_string(input_bytes)
        assert "\\x7f" in result
        assert "\\x80" in result
        assert "\\xff" in result