Jan Gorodkin

52 papers A 2C 1Journal 45Unranked 4
YearRankTypeTitle / Venue / Authors
2024 J jnl
Frontiers Res. Metrics Anal.
Adrian Sven Geissler, Jan Gorodkin, Stefan E. Seemann
2023 J jnl
Bioinform.
Giulia Ilaria Corsi, Christian Anthon, Jan Gorodkin
2022 J jnl
Bioinform.
Christian Anthon, Giulia Ilaria Corsi, Jan Gorodkin
2021 J jnl
Nucleic Acids Res.
Blake A. Sweeney, Anton I. Petrov, Carlos Eduardo Ribas, Robert D. Finn, Alex Bateman, Maciej Szymanski, Wojciech M. Karlowski, Stefan E. Seemann, Jan Gorodkin, Jamie J. Cannone, Robin Ray Gutell, Simon Kay, Steven J. Marygold, Gilberto dos Santos, Adam Frankish, Jonathan M. Mudge, Ruth Barshir, Simon Fishilevich, Patricia P. Chan, Todd M. Lowe, Ruth L. Seal, Elspeth A. Bruford, Simona Panni, Pablo Porras, Dimitra Karagkouni, Artemis G. Hatzigeorgiou, Lina Ma, Zhang Zhang, Pieter-Jan Volders, Pieter Mestdagh, Sam Griffiths-Jones, Bastian Fromm, Kevin J. Peterson, Ioanna Kalvari, Eric P. Nawrocki, Anton S. Petrov, Shuai Weng, Philia Bouchard-Bourelle, Michelle S. Scott, Lauren M. Lui, David Hoksza, Ruth C. Lovering, Barbara Kramarz, Prita Mani, Sridhar Ramachandran, Zasha Weinberg
2020 J jnl
Concurr. Comput. Pract. Exp.
Daniel Sundfeld, George Teodoro, Jakob Hull Havgaard, Jan Gorodkin, Alba C. M. A. Melo
2019 J jnl
Bioinform.
Xiaoyong Pan, Lars Juhl Jensen, Jan Gorodkin
2018 J jnl
Database J. Biol. Databases Curation
Oana Palasca, Alberto Santos, Christian Stolte, Jan Gorodkin, Lars Juhl Jensen
2018 J jnl
Database J. Biol. Databases Curation
Oana Palasca, Alberto Santos, Christian Stolte, Jan Gorodkin, Lars Juhl Jensen
2017 C conf
PDP
Daniel Sundfeld, Jakob Hull Havgaard, Jan Gorodkin, Alba Cristina Magalhaes Alves de Melo
2017 J jnl
Database J. Biol. Databases Curation
Alexander Junge, Jan C. Refsgaard, Christian Garde, Xiaoyong Pan, Alberto Santos, Ferhat Alkan, Christian Anthon, Christian von Mering, Christopher T. Workman, Lars Juhl Jensen, Jan Gorodkin
2017 J jnl
Bioinform.
Milad Miladi, Alexander Junge, Fabrizio Costa, Stefan E. Seemann, Jakob Hull Havgaard, Jan Gorodkin, Rolf Backofen
2016 J jnl
Bioinform.
Daniel Sundfeld, Jakob Hull Havgaard, Alba Cristina Magalhaes Alves de Melo, Jan Gorodkin
2014 conf
IWBBIO
Jan Gorodkin
2014 J jnl
Bioinform.
Søren Mørk, Sune Pletscher-Frankild, Albert Pallejà Caro, Jan Gorodkin, Lars Juhl Jensen
2014 conf
CMSR@ECCB
Jan Gorodkin
2013 J jnl
Nucleic Acids Res.
Radhakrishnan Sabarinathan, Hakim Tafer, Stefan E. Seemann, Ivo L. Hofacker, Peter F. Stadler, Jan Gorodkin
2012 J jnl
BMC Syst. Biol.
Larry Croft, Damian Szklarczyk, Lars Juhl Jensen, Jan Gorodkin
2012 J jnl
Bioinform.
Peter Menzel, Stefan E. Seemann, Jan Gorodkin
2012 J jnl
Bioinform.
Anne Wenzel, Erdinç Akbasli, Jan Gorodkin
2012 J jnl
Bioinform.
David Langenberger, Sachin Pundhir, Claus Thorn Ekstrøm, Peter F. Stadler, Steve Hoffmann, Jan Gorodkin
2011 J jnl
Algorithms Mol. Biol.
Christian Otto, Steve Hoffmann, Jan Gorodkin, Peter F. Stadler
2011 J jnl
PLoS Comput. Biol.
Jan Gorodkin, Ivo L. Hofacker
2011 J jnl
Bioinform.
Stefan E. Seemann, Andreas S. Richter, Tanja Gesell, Rolf Backofen, Jan Gorodkin
2011 J jnl
Nucleic Acids Res.
Stefan E. Seemann, Peter Menzel, Rolf Backofen, Jan Gorodkin
2011 J jnl
Bioinform.
Peter Menzel, Peter F. Stadler, Jan Gorodkin
2010 J jnl
Algorithms Mol. Biol.
Stefan E. Seemann, Andreas S. Richter, Jan Gorodkin, Rolf Backofen
2009 conf
GCB
Peter Menzel, Jan Gorodkin, Peter F. Stadler
2009 J jnl
Comput. Biol. Chem.
K. Scheibye-Alsing, Steve Hoffmann, A. Frankel, Peter Jensen, Peter F. Stadler, Y. Mang, Niels Tommerup, M. J. Gilchrist, A.-B. Nygård, Susanna Cirera, Claus B. Jørgensen, Merete Fredholm, Jan Gorodkin
2009 J jnl
Bioinform.
Bogumil Kaczkowski, Elfar Torarinsson, Kristin Reiche, Jakob Hull Havgaard, Peter F. Stadler, Jan Gorodkin
2007 J jnl
PLoS Comput. Biol.
Jakob Hull Havgaard, Elfar Torarinsson, Jan Gorodkin
2007 J jnl
Bioinform.
Elfar Torarinsson, Jakob Hull Havgaard, Jan Gorodkin
2007 conf
ISMB/ECCB (Supplement of Bioinformatics)
Frank Panitz, Henrik Stengaard, Henrik Hornshøj, Jan Gorodkin, Jakob Hedegaard, Susanna Cirera, Bo Thomsen, Lone B. Madsen, Anette Høj, Rikke K. Vingborg, Bujie Zahn, Xuegang Wang, Xuefei Wang, Rasmus Wernersson, Claus B. Jørgensen, Karsten Scheibye-Knudsen, Troels Arvin, Steen Lumholdt, Milena Sawera, Trine Green, Bente J. Nielsen, Jakob Hull Havgaard, Søren Brunak, Merete Fredholm, Christian Bendixen
2006 J jnl
Comput. Biol. Chem.
Jan Gorodkin, Jakob Hull Havgaard, Milena Ensterö, Milena Sawera, Peter Jensen, M. Öhman, Merete Fredholm
2006 J jnl
Nucleic Acids Res.
Ebbe Sloth Andersen, Magnus Alm Rosenblad, Niels Larsen, Jesper Cairo Westergaard, Jody Burks, Iwona K. Wower, Jacek Wower, Jan Gorodkin, Tore Samuelsson, Christian Zwieb
2005 J jnl
Bioinform.
Jakob Hull Havgaard, Rune B. Lyngsø, Gary D. Stormo, Jan Gorodkin
2005 J jnl
Nucleic Acids Res.
Jakob Hull Havgaard, Rune B. Lyngsø, Jan Gorodkin
2004 J jnl
Comput. Biol. Chem.
Jan Gorodkin
2004 J jnl
Comput. Biol. Chem.
Bjarne Knudsen, Ebbe Sloth Andersen, Christian K. Damgaard, Jørgen Kjems, Jan Gorodkin
2003 J jnl
Nucleic Acids Res.
Magnus Alm Rosenblad, Jan Gorodkin, Bjarne Knudsen, Christian Zwieb, Tore Samuelsson
2003 J jnl
Nucleic Acids Res.
Christian Zwieb, Jan Gorodkin, Bjarne Knudsen, Jody Burks, Jacek Wower
2001 J jnl
Comput. Chem.
Jan Gorodkin, Bodil Søgaard, Hanne Bay, Hans Doll, Per Kølster, Søren Brunak
2001 J jnl
Nucleic Acids Res.
Jan Gorodkin, Bjarne Knudsen, Christian Zwieb, Tore Samuelsson
2001 J jnl
Bioinform.
Jan Gorodkin, Christian Zwieb, Bjarne Knudsen
2001 J jnl
Nucleic Acids Res.
Bjarne Knudsen, Jacek Wower, Christian Zwieb, Jan Gorodkin
1999 J jnl
Bioinform.
Jan Gorodkin, Hans Henrik Stærfeldt, Ole Lund, Søren Brunak
1999 A conf
ISMB
Jan Gorodkin, Ole Lund, Claus A. F. Andersen, Søren Brunak
1997 J jnl
Comput. Appl. Biosci.
Jan Gorodkin, Laurie J. Heyer, Søren Brunak, Gary D. Stormo
1997 A conf
ISMB
Jan Gorodkin, Laurie J. Heyer, Gary D. Stormo
1997 J jnl
Discret. Appl. Math.
Jan Gorodkin
1997 J jnl
Int. J. Neural Syst.
Jan Gorodkin, Lars Kai Hansen, Benny Lautrup, Sara A. Solla
1993 J jnl
Int. J. Neural Syst.
Jan Gorodkin, Lars Kai Hansen, Anders Krogh, Claus Svarer, Ole Winther
1993 J jnl
Complex Syst.
Jan Gorodkin, Allan Sørensen, Ole Winther
tests/integration/test_elf_extractor.py
← Index tests/integration/test_elf_extractor.py python
"""
Integration tests for the ELFExtractor base class.
"""
import pytest
from unittest.mock import Mock, patch, MagicMock

pytestmark = [pytest.mark.integration, pytest.mark.elf]


class TestELFExtractorInitialization:
    """Tests for ELFExtractor initialization."""

    def test_elf_extractor_with_valid_elf(self, elf_binary_path, mock_logger):
        """Test ELFExtractor initialization with valid ELF file."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            assert extractor.filepath == elf_binary_path
            assert extractor._is_elf_file() is True

    def test_elf_extractor_with_invalid_file(self, pe_binary_path, mock_logger):
        """Test ELFExtractor initialization with non-ELF file."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(pe_binary_path, mock_logger)

            # Should not be a valid ELF
            assert extractor._is_elf_file() is False

    def test_elf_extractor_with_text_file(self, temp_text_file, mock_logger):
        """Test ELFExtractor initialization with text file."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(temp_text_file, mock_logger)

            # Should not be a valid ELF
            assert extractor._is_elf_file() is False


class TestELFExtractorMethods:
    """Tests for ELFExtractor helper methods."""

    def test_is_elf_file_true(self, elf_binary_path, mock_logger):
        """Test _is_elf_file returns True for valid ELF."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            assert extractor._is_elf_file() is True

    def test_is_elf_file_cached(self, elf_binary_path, mock_logger):
        """Test _is_elf_file result is cached."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            # First call
            result1 = extractor._is_elf_file()
            # Second call should use cached value
            result2 = extractor._is_elf_file()

            assert result1 == result2
            # Cache should be set
            assert extractor._elf_file_valid is not None

    def test_is_64bit(self, elf_binary_path, mock_logger):
        """Test _is_64bit method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor._is_64bit()
            # Result depends on the test binary
            assert isinstance(result, bool)

    def test_is_stripped(self, elf_binary_path, mock_logger):
        """Test _is_stripped method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor._is_stripped()
            assert isinstance(result, bool)

    def test_has_debug_info(self, elf_binary_path, mock_logger):
        """Test _has_debug_info method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor._has_debug_info()
            assert isinstance(result, bool)

    def test_get_architecture(self, elf_binary_path, mock_logger):
        """Test _get_architecture method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor._get_architecture()
            # Should return a string (architecture name)
            assert isinstance(result, str)
            assert result != ""

    def test_get_endianness(self, elf_binary_path, mock_logger):
        """Test _get_endianness method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor._get_endianness()
            # Should be one of: "little", "big", or "unknown"
            assert result in ["little", "big", "unknown"]

    def test_get_file_type(self, elf_binary_path, mock_logger):
        """Test _get_file_type method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor._get_file_type()
            # Should return a file type string
            assert isinstance(result, str)
            # Common values: "executable", "shared_object", "relocatable", etc.
            expected_types = ["none", "relocatable", "executable", "shared_object", "core_dump", "unknown"]
            assert result in expected_types or result.startswith("ET_")

    def test_is_pie(self, elf_binary_path, mock_logger):
        """Test _is_pie method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor._is_pie()
            assert isinstance(result, bool)

    def test_has_stack_protection(self, elf_binary_path, mock_logger):
        """Test _has_stack_protection method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor._has_stack_protection()
            assert isinstance(result, bool)

    def test_has_nx_bit(self, elf_binary_path, mock_logger):
        """Test _has_nx_bit method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor._has_nx_bit()
            assert isinstance(result, bool)

    def test_has_relro(self, elf_binary_path, mock_logger):
        """Test _has_relro method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor._has_relro()
            assert isinstance(result, bool)

    def test_get_build_id(self, elf_binary_path, mock_logger):
        """Test _get_build_id method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor._get_build_id()
            # Could be None if no build ID, or a hex string
            assert result is None or isinstance(result, str)

    def test_count_sections(self, elf_binary_path, mock_logger):
        """Test _count_sections method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor._count_sections()
            assert isinstance(result, int)
            assert result >= 0

    def test_count_segments(self, elf_binary_path, mock_logger):
        """Test _count_segments method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor._count_segments()
            assert isinstance(result, int)
            assert result >= 0

    def test_count_symbols(self, elf_binary_path, mock_logger):
        """Test _count_symbols method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor._count_symbols()
            assert isinstance(result, int)
            assert result >= 0

    def test_get_dependencies(self, elf_binary_path, mock_logger):
        """Test _get_dependencies method."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            result = extractor._get_dependencies()
            assert isinstance(result, list)


class TestWithELFFile:
    """Tests for the _with_elf_file context manager method."""

    def test_with_elf_file_success(self, elf_binary_path, mock_logger):
        """Test _with_elf_file executes operation successfully."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            # Define a simple operation
            def get_header(elf):
                return elf.header is not None

            result = extractor._with_elf_file(get_header)
            assert result is True

    def test_with_elf_file_error_handling(self, temp_text_file, mock_logger):
        """Test _with_elf_file handles errors gracefully."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(temp_text_file, mock_logger)

            # Define an operation that would fail
            def get_header(elf):
                return elf.header

            result = extractor._with_elf_file(get_header)
            # Should return None on error
            assert result is None


class TestELFExtractorTag:
    """Tests for tag method in ELF extractors."""

    def test_elf_features_tag(self, elf_binary_path, mock_logger):
        """Test that ELFFeaturesExtractor returns correct tag."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)
            tag = extractor.tag()
            # Should return the tag string
            assert isinstance(tag, str)
            assert "elf" in tag.lower() or "features" in tag.lower()


class TestELFExtractorClickHouseTable:
    """Tests for get_clickhouse_table method in ELF extractors."""

    def test_elf_features_clickhouse_table(self, elf_binary_path, mock_logger):
        """Test that ELFFeaturesExtractor returns correct ClickHouse table name."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_elf_features"


class TestELFExtractorExtract:
    """Tests for extract method in ELF extractors."""

    def test_elf_features_extract(self, elf_binary_path, mock_logger):
        """Test ELFFeaturesExtractor.extract() returns valid data."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor
        from redb.models.dataclasses import ELFFeatures

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

            result = extractor.extract()
            assert result is not None
            assert isinstance(result, ELFFeatures)

            # Check some expected fields
            assert isinstance(result.ei_class, int)
            assert isinstance(result.ei_data, int)
            assert isinstance(result.e_entry, int)
            assert isinstance(result.number_of_sections, int)
            assert isinstance(result.number_of_segments, int)

    def test_elf_features_extract_invalid_file(self, pe_binary_path, mock_logger):
        """Test ELFFeaturesExtractor.extract() handles invalid ELF."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(pe_binary_path, mock_logger)

            result = extractor.extract()
            # Should return None for invalid ELF
            assert result is None


class TestELFExtractorPrepareExportData:
    """Tests for prepare_export_data method in ELF extractors."""

    def test_elf_features_prepare_export_elasticsearch(self, elf_binary_path, mock_logger):
        """Test prepare_export_data for Elasticsearch."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            # First extract
            extractor.extract()
            result = extractor.prepare_export_data("ElasticsearchExporter")
            # Should return the elf_features dataclass
            assert result is extractor.elf_features

    def test_elf_features_prepare_export_clickhouse(self, elf_binary_path, mock_logger):
        """Test prepare_export_data for ClickHouse."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

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

            # First extract
            extractor.extract()
            result = extractor.prepare_export_data("ClickHouseExporter")

            # Should return tuple of (data, column_names, column_type_names)
            assert isinstance(result, tuple)
            assert len(result) == 3
            data, column_names, column_type_names = result
            assert isinstance(data, list)
            assert isinstance(column_names, list)
            assert isinstance(column_type_names, list)
            # Column names and types should match in length
            assert len(column_names) == len(column_type_names)


class TestELFExtractorAdvanced:
    """Advanced tests for ELF extraction using hello_advanced binary."""

    def test_elf_advanced_features(self, elf_advanced_binary_path, mock_logger):
        """Test ELFFeaturesExtractor with more complex ELF binary."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_advanced_binary_path, mock_logger)

            result = extractor.extract()
            assert result is not None

            # Check that we can extract meaningful data
            assert result.number_of_sections > 0
            assert result.number_of_segments > 0

    def test_elf_advanced_architecture(self, elf_advanced_binary_path, mock_logger):
        """Test architecture detection for advanced ELF binary."""
        from redb.extractors.elf_extractors.elf_features import ELFFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = ELFFeaturesExtractor(elf_advanced_binary_path, mock_logger)

            arch = extractor._get_architecture()
            # Should detect a valid architecture
            assert arch != "unknown"
            assert arch != ""