Vasile-Marian Scuturici

59 papers A* 3A 2B 5C 5Misc 1Journal 15Unranked 28
YearRankTypeTitle / Venue / Authors
2025 conf
ECML/PKDD (10)
Taha Boussaid, François Rousset, Marc Clausse, Vasile-Marian Scuturici
2025 J jnl
CoRR
Mathilde Marcy, Jean-Marc Petit, Vasile-Marian Scuturici, Jocelyn Bonjour, Camille Fertel, Gérald Cavalier
2023 conf
ICIAP Workshops (2)
Tess Masclef, Mihaela Scuturici, Benjamin Bertin, Vincent Barrellon, Vasile-Marian Scuturici, Serge Miguet
2023 J jnl
CoRR
Simon Vilmin, Pierre Faure-Giovagnoli, Jean-Marc Petit, Vasile-Marian Scuturici
2023 Misc conf
ICCS
Simon Vilmin, Pierre Faure-Giovagnoli, Jean-Marc Petit, Vasile-Marian Scuturici
2023 C conf
IDEAS
Elodie Toufaili, Christophe Bortolaso, Youssef Miloudi, Jean-Marc Petit, Vasile-Marian Scuturici
2022 A* conf
ICDE
Pierre Faure-Giovagnoli, Jean-Marc Petit, Vasile-Marian Scuturici
2022 J jnl
Data Knowl. Eng.
Marie Le Guilly, Jean-Marc Petit, Vasile-Marian Scuturici
2021 J jnl
Proc. VLDB Endow.
Pierre Faure-Giovagnoli, Marie Le Guilly, Vasile-Marian Scuturici, Jean-Marc Petit
2021 C conf
ADBIS
Benjamin Chazelle, Pierre-Loic Maisonneuve, Ammar Mechouche, Jean-Marc Petit, Vasile-Marian Scuturici
2020 conf
ISMIS (Industrial Paper)
Marie Le Guilly, Claudia Capo, Jean-Marc Petit, Vasile-Marian Scuturici, Rémi Revellin, Jocelyn Bonjour, Gérald Cavalier
2020 conf
ADBIS (Short Papers)
Marie Le Guilly, Nassia Daouayry, Pierre-Loic Maisonneuve, Ammar Mechouche, Jean-Marc Petit, Vasile-Marian Scuturici
2020 J jnl
Trans. Large Scale Data Knowl. Centered Syst.
Marie Le Guilly, Jean-Marc Petit, Vasile-Marian Scuturici
2019 conf
IEEE BigData
Nassia Daouayry, Ammar Mechouche, Pierre-Loic Maisonneuve, Vasile-Marian Scuturici, Jean-Marc Petit
2019 A conf
CIKM
Marie Le Guilly, Jean-Marc Petit, Vasile-Marian Scuturici, Ihab F. Ilyas
2019 conf
EGC
Nassia Daouayry, Pierre-Loic Maisonneuve, Ammar Mechouche, Vasile-Marian Scuturici, Jean-Marc Petit
2019 B conf
DaWaK
Amine El Ouassouli, Lionel Robinault, Vasile-Marian Scuturici
2019 C conf
IDEAS
Amine El Ouassouli, Lionel Robinault, Vasile-Marian Scuturici
2018 J jnl
CoRR
Marie Le Guilly, Jean-Marc Petit, Vasile-Marian Scuturici
2017 B conf
EDBT
Julien Cumin, Jean-Marc Petit, Vasile-Marian Scuturici, Sabina Surdu
2017 J jnl
J. Intell. Inf. Syst.
Yutaka Deguchi, Daisuke Takayama, Shigeru Takano, Vasile-Marian Scuturici, Jean-Marc Petit, Einoshin Suzuki
2016 conf
ISIP
Nicu-Razvan Stancioiu, Lhouari Nourine, Jean-Marc Petit, Vasile-Marian Scuturici, Dominique Fouchez, Emmanuel Gangler, Philippe Gris
2016 J jnl
Intell. Data Anal.
Marc Plantevit, Céline Robardet, Vasile-Marian Scuturici
2016 conf
EGC
Julien Cumin, Jean-Marc Petit, Fabien Rouge, Vasile-Marian Scuturici, Christian Surace, Sabina Surdu
2015 conf
ADBIS (Short Papers and Workshops)
Vasile-Marian Scuturici, Yann Gripay, Jean-Marc Petit, Yutaka Deguchi, Einoshin Suzuki
2015 A* conf
ICDE
Azhar Ait Ouassarah, Nicolas Aversengy, Xavier Fournety, Jean-Marc Petit, Romain Revol, Vasile-Marian Scuturici
2014 conf
AmI
Daisuke Takayama, Yutaka Deguchi, Shigeru Takano, Vasile-Marian Scuturici, Jean-Marc Petit, Einoshin Suzuki
2014 conf
PETRA
Yutaka Deguchi, Daisuke Takayama, Shigeru Takano, Vasile-Marian Scuturici, Jean-Marc Petit, Einoshin Suzuki
2014 conf
NFMCP
Marc Plantevit, Vasile-Marian Scuturici, Céline Robardet
2013 J jnl
Ingénierie des Systèmes d Inf.
Benjamin Bertin, Vasile-Marian Scuturici, Jean-Marie Pinon, Emmanuel Risler
2013 J jnl
Trans. Large Scale Data Knowl. Centered Syst.
Sabina Surdu, Yann Gripay, Vasile-Marian Scuturici, Jean-Marc Petit
2013 conf
CAIP (1)
Loreta Adriana Suta, Mihaela Scuturici, Vasile-Marian Scuturici, Serge Miguet
2013 conf
ISIP
Einoshin Suzuki, Yutaka Deguchi, Daisuke Takayama, Shigeru Takano, Vasile-Marian Scuturici, Jean-Marc Petit
2013 A* conf
KDD
Céline Robardet, Vasile-Marian Scuturici, Marc Plantevit, Antoine Fraboulet
2012 conf
EDBT/ICDT Workshops
Benjamin Bertin, Vasile-Marian Scuturici, Emmanuel Risler, Jean-Marie Pinon
2012 A conf
CIKM
Benjamin Bertin, Vasile-Marian Scuturici, Jean-Marie Pinon, Emmanuel Risler
2012 B conf
EDBT
Yann Gripay, Frédérique Laforest, François Lesueur, Nicolas Lumineau, Jean-Marc Petit, Vasile-Marian Scuturici, Samir Sebahi, Sabina Surdu
2012 conf
INFORSID
Benjamin Bertin, Vasile-Marian Scuturici, Jean-Marie Pinon, Emmanuel Risler
2011 C conf
IDEAS
Sabina Surdu, Vasile-Marian Scuturici
2010 conf
EGC
Vasile-Marian Scuturici, Dan-Mircea Suciu, Romain Vuillemot, Aris M. Ouksel, Lionel Brunie
2010 B conf
Mobile Data Management
Addisalem Negash Shiferaw, Vasile-Marian Scuturici, Lionel Brunie
2010 B conf
Mobile Data Management
Addisalem Negash Shiferaw, Lionel Brunie, Vasile-Marian Scuturici, Yaser Fawaz
2010 conf
PerCom Workshops
Addisalem Negash Shiferaw, Sonia Lajmi, Vasile-Marian Scuturici, Lionel Brunie
2008 J jnl
Int. J. Digit. Multim. Broadcast.
Yaser Fawaz, Girma Berhe, Lionel Brunie, Vasile-Marian Scuturici, David Coquil
2007 J jnl
J. Syst. Softw.
Tarak Chaari, Dejene Ejigu, Frédérique Laforest, Vasile-Marian Scuturici
2007 conf
PerCom Workshops
Dejene Ejigu, Vasile-Marian Scuturici, Lionel Brunie
2007 conf
ITNG
Dejene Ejigu, Vasile-Marian Scuturici, Lionel Brunie
2007 conf
ICPS
Yaser Fawaz, Addisalem Negash Shiferaw, Lionel Brunie, Vasile-Marian Scuturici
2007 conf
ECUMN
Charles-Eric Pigeot, Yann Gripay, Vasile-Marian Scuturici, Jean-Marc Pierson
2006 J jnl
J. Digit. Inf. Manag.
Pascal Bihler, Vasile-Marian Scuturici, Lionel Brunie
2006 conf
ICPS
Tarak Chaari, Dejene Ejigu, Frédérique Laforest, Vasile-Marian Scuturici
2006 conf
ICPS
Vasile-Marian Scuturici, Dejene Ejigu
2005 J jnl
Int. J. Intell. Syst.
Djamel A. Zighed, Gilbert Ritschard, Walid Erray, Vasile-Marian Scuturici
2005 conf
SITIS
Pascal Bihler, Vasile-Marian Scuturici, Lionel Brunie
2005 C conf
EUC
Pascal Bihler, Lionel Brunie, Vasile-Marian Scuturici
2005 J jnl
J. Exp. Theor. Artif. Intell.
Mihaela Scuturici, Jérémy Clech, Vasile-Marian Scuturici, Djamel A. Zighed
2004 conf
EGC
Mihaela Scuturici, Jérémy Clech, Vasile-Marian Scuturici, Djamel A. Zighed
2004 conf
INFORSID
Mihaela Scuturici, Vasile-Marian Scuturici, Jérémy Clech, Djamel A. Zighed
2003 conf
PKDD
Djamel A. Zighed, Gilbert Ritschard, Walid Erray, Vasile-Marian Scuturici
tests/integration/test_pe_extractor.py
← Index tests/integration/test_pe_extractor.py python
"""
Integration tests for the PEExtractor base class.
"""
import pytest
from unittest.mock import Mock, patch, MagicMock

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


class TestPEExtractorInitialization:
    """Tests for PEExtractor initialization."""

    def test_pe_extractor_with_valid_pe(self, pe_binary_path, mock_logger):
        """Test PEExtractor initialization with valid PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

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

            assert extractor.pe is not None
            assert extractor.filepath == pe_binary_path

    def test_pe_extractor_with_provided_pe_object(self, pe_binary_path, mock_logger, pe_object):
        """Test PEExtractor initialization with pre-existing PE object."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

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

            # Should use the provided PE object, not create a new one
            assert extractor.pe is pe_object

    def test_pe_extractor_with_invalid_file(self, elf_binary_path, mock_logger):
        """Test PEExtractor initialization with non-PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

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

            # Should return None for pe when file is not a valid PE
            assert extractor.pe is None
            # Logger should have recorded an error
            assert mock_logger.error.called


class TestPEExtractorMethods:
    """Tests for PEExtractor helper methods."""

    def test_check_dotnet_true(self, pe_binary_path, mock_logger):
        """Test _check_dotnet returns True for .NET PE."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

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

            # The test PE file is a .NET binary
            if extractor.pe is not None:
                result = extractor._check_dotnet()
                # d8637bdbcfc9112fcb1f0167b398e771 is a .NET binary
                assert result is True

    def test_check_dotnet_false(self, elf_binary_path, mock_logger):
        """Test _check_dotnet returns False for non-PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

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

            # Should return False when PE is None
            result = extractor._check_dotnet()
            assert result is False

    def test_is_signed_false(self, pe_binary_path, mock_logger):
        """Test _is_signed method."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

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

            if extractor.pe is not None:
                result = extractor._is_signed()
                # Result depends on the actual binary
                assert isinstance(result, bool)

    def test_has_overlay(self, pe_binary_path, mock_logger):
        """Test _has_overlay method."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

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

            if extractor.pe is not None:
                result = extractor._has_overlay()
                assert isinstance(result, bool)


class TestGeneratePEFileObject:
    """Tests for _generate_pefile_object method."""

    def test_generate_pefile_object_valid(self, pe_binary_path, mock_logger):
        """Test _generate_pefile_object with valid PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

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

            # The PE object should be created successfully
            assert extractor.pe is not None

    def test_generate_pefile_object_invalid(self, temp_text_file, mock_logger):
        """Test _generate_pefile_object with invalid file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

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

            # Should return None for invalid PE
            assert extractor.pe is None


class TestGenerateDotNetFileObject:
    """Tests for _generate_dotnetfile_object method."""

    def test_generate_dotnetfile_object_valid(self, pe_binary_path, mock_logger):
        """Test _generate_dotnetfile_object with .NET PE file."""
        from redb.extractors.pe_extractors.pe_dotnet import PEDotNetExtractor

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

            if extractor.pe is not None and extractor._check_dotnet():
                dotnet, error = extractor._generate_dotnetfile_object()
                # Should create dotnet object for .NET PE
                assert dotnet is not None
                assert error is None

    def test_generate_dotnetfile_object_invalid(self, elf_binary_path, mock_logger):
        """Test _generate_dotnetfile_object with non-.NET file."""
        from redb.extractors.pe_extractors.pe_dotnet import PEDotNetExtractor

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

            dotnet, error = extractor._generate_dotnetfile_object()
            # Should return error for non-.NET file
            assert dotnet is None
            assert error is not None


class TestPEExtractorTag:
    """Tests for tag method in PE extractors."""

    def test_pe_features_tag(self, pe_binary_path, mock_logger):
        """Test that PEFeaturesExtractor returns correct tag."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor
        from redb.extractors.enum import Tag

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)
            assert extractor.tag() == Tag.PE_FEATURES.value

    def test_pe_import_tag(self, pe_binary_path, mock_logger):
        """Test that PEImportExtractor returns correct tag."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor
        from redb.extractors.enum import Tag

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)
            assert extractor.tag() == Tag.PE_IMPORT.value

    def test_pe_section_tag(self, pe_binary_path, mock_logger):
        """Test that PESectionExtractor returns correct tag."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor
        from redb.extractors.enum import Tag

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)
            assert extractor.tag() == Tag.PE_SECTION.value


class TestPEExtractorClickHouseTable:
    """Tests for get_clickhouse_table method in PE extractors."""

    def test_pe_features_clickhouse_table(self, pe_binary_path, mock_logger):
        """Test that PEFeaturesExtractor returns correct ClickHouse table name."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_pe_features"

    def test_pe_import_clickhouse_table(self, pe_binary_path, mock_logger):
        """Test that PEImportExtractor returns correct ClickHouse table name."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_pe_imports"

    def test_pe_section_clickhouse_table(self, pe_binary_path, mock_logger):
        """Test that PESectionExtractor returns correct ClickHouse table name."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_pe_sections"


class TestPEExtractorPrepareExportData:
    """Tests for prepare_export_data method in PE extractors."""

    def test_pe_features_prepare_export_elasticsearch(self, pe_binary_path, mock_logger):
        """Test prepare_export_data for Elasticsearch."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

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

            if extractor.pe is not None:
                # First extract
                extractor.extract()
                result = extractor.prepare_export_data("ElasticsearchExporter")
                # Should return the pe_features dataclass
                assert result is extractor.pe_features

    def test_pe_features_prepare_export_clickhouse(self, pe_binary_path, mock_logger):
        """Test prepare_export_data for ClickHouse."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

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

            if extractor.pe is not None:
                # 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)