Radu-Ioan Ciobanu

72 papers B 7C 10Misc 1Journal 26Unranked 26
YearRankTypeTitle / Venue / Authors
2025 conf
CSCS
Andrei-Cristian Traistaru, Radu-Ioan Ciobanu
2025 conf
CSCS
Andrei Toma, Radu-Ioan Ciobanu, Ciprian Dobre, Gabriela Raducan
2025 conf
CSCS
Theo Chihaia, Radu-Ioan Ciobanu
2024 conf
DCOSS-IoT
Ioana-Valentina Marin, Eduard-Claudiu Ciurezu, Radu-Ioan Ciobanu, Ciprian Dobre
2024 conf
CCGridW
George-Mircea Grosu, Silvia-Elena Nistor, Radu-Ioan Ciobanu, Joanna Kolodziej, Florin Pop
2024 conf
CCGridW
George-Mircea Grosu, Silvia-Elena Nistor, Radu-Ioan Ciobanu, Ciprian Dobre, Florin Pop
2024 C conf
PDP
Corina Marin, Radu-Ioan Ciobanu, Ciprian Dobre
2023 B conf
WiMob
Vlad-Florin Ilie, Mihail-Andrei Banica, Radu-Ioan Ciobanu, Ciprian Dobre
2023 C conf
ISPDC
Ioana Branescu, Radu-Ioan Ciobanu, Ciprian Dobre, Constandinos X. Mavromoustakis
2023 conf
DCOSS-IoT
Vlad-Alexandru Proteasa, Radu-Ioan Ciobanu, Ciprian Dobre, Radu-Corneliu Marin
2023 C conf
ISPDC
George-Mircea Grosu, Silvia-Elena Nistor, Mihaela-Andreea Vasile, Radu-Ioan Ciobanu, Ciprian Dobre, Florin Pop
2023 conf
CSCS
Camelia-Raluca Farkas, Radu-Ioan Ciobanu, Ciprian Dobre
2023 conf
PerCom Workshops
Sergiu-Cristian Toader, Radu-Ioan Ciobanu, Ciprian Dobre
2022 C conf
ISPDC
Cosmin-Stefan Stoica, Radu-Ioan Ciobanu, Ciprian Dobre
2021 C conf
ISPDC
Bianca-Gabriela Petrica, Radu-Ioan Ciobanu, Ciprian Dobre
2021 conf
CSCS
Marius-Robert Draghici, Radu-Ioan Ciobanu
2021 J jnl
Sensors
Aida-Stefania Manole, Radu-Ioan Ciobanu, Ciprian Dobre, Raluca Purnichescu-Purtan
2021 B conf
CCGRID
Silvia-Elena Nistor, George-Mircea Grosu, Raluca-Maria Hampau, Radu-Ioan Ciobanu, Florin Pop, Ciprian Mihai Dobre, Pawel Szynkiewicz
2021 conf
CSCS
Florin Pop, Ciprian Mihai Dobre, Elena Simona Apostol, Radu-Ioan Ciobanu, Ciprian-Octavian Truica, Ion-Dorinel Filip, Catalin Negru
2020 J jnl
Sensors
Matei-Sorin Axente, Ciprian Dobre, Radu-Ioan Ciobanu, Raluca Purnichescu-Purtan
2020 J jnl
Simul. Model. Pract. Theory
George-Eduard Zaharia, Tiberiu-Alex-Irinel Sosea, Radu-Ioan Ciobanu, Ciprian Dobre
2020 conf
PerCom Workshops
Andreea Sonea, Ciprian Dobre, Radu-Ioan Ciobanu, George Suciu
2020 J jnl
Sensors
Delia-Georgiana Stuparu, Radu-Ioan Ciobanu, Ciprian Dobre
2019 conf
CSCS
Mihaela Balanescu, Iulia Oprea, George Suciu, Marius-Alexandru Dobrea, Cristina Mihaela Balaceanu, Radu-Ioan Ciobanu, Ciprian Dobre
2019 conf
GIoTS
Elena Cebanov, Ciprian Dobre, Alexandru Gradinaru, Radu-Ioan Ciobanu, Valeriu-Daniel Stanciu
2019 J jnl
IEEE Access
Radu-Ioan Ciobanu, Vladut-Constantin Tabusca, Ciprian Dobre, Lidia Bajenaru, Constandinos X. Mavromoustakis, George Mastorakis
2019 J jnl
IEEE Access
Radu-Ioan Ciobanu, Ciprian Dobre, Mihaela Balanescu, George Suciu
2019 conf
PerCom Workshops
Radu-Corneliu Marin, Alexandru Gherghina-Pestrea, Alexandru Florin Robert Timisica, Radu-Ioan Ciobanu, Ciprian Dobre
2019 J jnl
Future Gener. Comput. Syst.
Radu-Ioan Ciobanu, Catalin Negru, Florin Pop, Ciprian Dobre, Constandinos X. Mavromoustakis, George Mastorakis
2019 J jnl
Sensors
Robert-Andrei Voicu, Ciprian Dobre, Lidia Bajenaru, Radu-Ioan Ciobanu
2019 conf
ECBS
George Suciu, Mihaela Balanescu, Carmen Nadrag, Andrei Birdici, Cristina Mihaela Balaceanu, Marius-Alexandru Dobrea, Adrian Pasat, Radu-Ioan Ciobanu
2018 C ed.
EUC
Ciprian Dobre, Francisco J. Melero, Radu-Ioan Ciobanu, Francesco Palmieri
2018 J jnl
Ann. des Télécommunications
Radu-Ioan Ciobanu, Daniel Gutiérrez-Reina, Ciprian Dobre, Sergio L. Toral Marín
2018 conf
CSE
Vladut-Constantin Tabusca, Radu-Ioan Ciobanu, Ciprian Dobre
2018 conf
GIIS
Andrei Ionescu-Tautu, Radu-Ioan Ciobanu, Radu-Corneliu Marin, Ciprian Dobre
2018 ch.
Modeling and Simulation in HPC and Cloud Systems
Radu-Ioan Ciobanu, Radu-Corneliu Marin, Ciprian Dobre
2018 conf
NBiS
Radu-Ioan Ciobanu, Ciprian Dobre
2018 conf
GIoTS
Tudor Rogojanu, Mihai Ghita, Valeriu-Daniel Stanciu, Radu-Ioan Ciobanu, Radu-Corneliu Marin, Florin Pop, Ciprian Dobre
2018 B conf
GLOBECOM
Radu-Ioan Ciobanu, Ciprian Dobre
2018 conf
PerCom Workshops
Radu Dragan, Radu-Ioan Ciobanu, Ciprian Dobre
2017 J jnl
Comput. Networks
Radu-Corneliu Marin, Radu-Ioan Ciobanu, Ciprian Dobre, Constandinos X. Mavromoustakis, George Mastorakis
2017 conf
ConTEL
Radu-Ioan Ciobanu, Ciprian Dobre, Daniel Gutiérrez-Reina, Sergio L. Toral Marín
2017 J jnl
IEEE Commun. Mag.
Radu-Corneliu Marin, Radu-Ioan Ciobanu, Ciprian Dobre
2017 J jnl
J. Syst. Archit.
Radu-Ioan Ciobanu, Radu-Corneliu Marin, Ciprian Dobre, Florin Pop
2017 C conf
ISPDC
Radu Dragan, Radu-Ioan Ciobanu, Ciprian Dobre
2017 J jnl
Concurr. Comput. Pract. Exp.
Mihail Costea, Radu-Ioan Ciobanu, Radu-Corneliu Marin, Ciprian Dobre, Constandinos X. Mavromoustakis, George Mastorakis, Fatos Xhafa
2017 J jnl
Pervasive Mob. Comput.
Radu-Ioan Ciobanu, Radu-Corneliu Marin, Ciprian Dobre, Valentin Cristea
2016 J jnl
Int. J. Distributed Sens. Networks
Daniel Gutiérrez-Reina, Patricia Ruiz, Radu-Ioan Ciobanu, Sergio L. Toral Marín, Bernabé Dorronsoro, Ciprian Dobre
2016 J jnl
Expert Syst. Appl.
Daniel Gutiérrez-Reina, Radu-Ioan Ciobanu, Sergio L. Toral Marín, Ciprian Dobre
2016 J jnl
Comput. Networks
Cristian-Octavian Ojog, Radu-Corneliu Marin, Radu-Ioan Ciobanu, Ciprian Dobre
2016 B conf
ICCP
Radu Dragan, Radu-Ioan Ciobanu, Ciprian Dobre, Constandinos X. Mavromoustakis, George Mastorakis
2015 J jnl
Concurr. Comput. Pract. Exp.
Florin Pop, Radu-Ioan Ciobanu, Ciprian Dobre
2015 conf
GLOBECOM Workshops
Cristian Pop, Radu-Ioan Ciobanu, Radu-Corneliu Marin, Ciprian Dobre, Constandinos X. Mavromoustakis, George Mastorakis, Joel J. P. C. Rodrigues
2015 J jnl
Ad Hoc Networks
Radu-Ioan Ciobanu, Radu-Corneliu Marin, Ciprian Dobre, Valentin Cristea
2015 conf
ICC
Radu-Ioan Ciobanu, Radu-Corneliu Marin, Ciprian Dobre, Valentin Cristea, Constandinos X. Mavromoustakis, George Mastorakis
2015 J jnl
Mob. Inf. Syst.
Radu-Ioan Ciobanu, Ciprian Dobre, Valentin Cristea, Florin Pop, Fatos Xhafa
2014 ch.
Big Data and Internet of Things
Radu-Ioan Ciobanu, Valentin Cristea, Ciprian Dobre, Florin Pop
2014 J jnl
Trans. Emerg. Telecommun. Technol.
Radu-Ioan Ciobanu, Radu-Corneliu Marin, Ciprian Dobre
2014 J jnl
J. Netw. Comput. Appl.
Radu-Ioan Ciobanu, Daniel Gutiérrez-Reina, Ciprian Dobre, Sergio L. Toral Marín, Princy Johnson
2014 B conf
NOMS
Radu-Ioan Ciobanu, Radu-Corneliu Marin, Ciprian Dobre, Valentin Cristea, Constandinos X. Mavromoustakis
2014 J jnl
J. Netw. Comput. Appl.
Radu-Ioan Ciobanu, Ciprian Dobre, Mihai Dascalu, Stefan Trausan-Matu, Valentin Cristea
2013 C conf
DeSE
Daniel Gutiérrez-Reina, Radu-Ioan Ciobanu, Sergio L. Toral Marín, Ciprian Dobre, Federico Barrero
2013 B conf
IM
Radu-Ioan Ciobanu, Ciprian Dobre, Mihai Dascalu, Stefan Trausan-Matu, Valentin Cristea
2013 J jnl
Int. J. Virtual Communities Soc. Netw.
Radu-Ioan Ciobanu, Ciprian Dobre
2013 B conf
AINA
Radu-Ioan Ciobanu, Ciprian Dobre, Valentin Cristea
2013 C conf
WOWMOM
Radu-Ioan Ciobanu, Ciprian Dobre, Valentin Cristea
2013 J jnl
Int. J. Intell. Syst. Technol. Appl.
Radu-Ioan Ciobanu, Ciprian Dobre
2012 J jnl
CoRR
Radu-Ioan Ciobanu, Ciprian Dobre
2012 conf
HP-MOSys
Radu-Ioan Ciobanu, Ciprian Dobre
2012 C conf
ISPDC
Radu-Ioan Ciobanu, Ciprian Dobre, Valentin Cristea, Dhiya Al-Jumeily
2012 conf
ADHOC-NOW
Radu-Ioan Ciobanu, Ciprian Dobre, Valentin Cristea
2011 Misc conf
SYNASC
Radu-Ioan Ciobanu, Ciprian Dobre, Valentin Cristea
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)