Valentina Salapura

61 papers A* 3A 5B 8C 9Misc 1Journal 20Unranked 12
YearRankTypeTitle / Venue / Authors
2024 A ed.
ICS
Kenji Kise, Valentina Salapura, Murali Annavaram, Ana Lucia Varbanescu
2022 A* ed.
ISCA
Valentina Salapura, Mohamed Zahran, Fred Chong, Lingjia Tang
2019 B conf
SMARTCOMP
Valentina Salapura, David Wood, Shonda Adena Witherspoon, Keith Grueneberg, Elisa Bertino, Amani Abu Jabal, Seraphin B. Calo
2019 J jnl
CoRR
Michael P. Perrone, Haidar Khan, Changhoan Kim, Anastasios Kyrillidis, Jerry Quinn, Valentina Salapura
2019 conf
DSN (Industry Track)
Long Wang, Harigovind V. Ramasamy, Valentina Salapura, Robin Arnold, Xu Wang, Senthil Bakthavachalam, Phil Coulthard, Lee Suprenant, John Timm, Denis Ricard, Richard E. Harper, Ahut Gupta
2018 conf
DSN Workshops
Pratik Mukherjee, Valentina Salapura
2018 J jnl
IEEE Cloud Comput.
Valentina Salapura, Rick Harper
2017 C conf
CLOSER
Valentina Salapura, Ruchi Mahindru, Richard E. Harper
2017 C conf
CLOSER
Valentina Salapura
2017 J jnl
Clust. Comput.
Min Li, Jian Tan, Yandong Wang, Li Zhang, Valentina Salapura
2017 J jnl
Commun. ACM
Valentina Salapura
2016 conf
CLOSER (2)
Valentina Salapura, Ruchi Mahindru
2016 J jnl
IBM J. Res. Dev.
M. Kim, Ajay Mohindra, Vinod Muthusamy, Rohit Ranchal, Valentina Salapura, Aleksander Slominski, Rania Khalaf
2016 B conf
IC2E
Valentina Salapura, Ruchi Mahindru
2016 J jnl
IBM J. Res. Dev.
Valentina Salapura, Ruchi Mahindru
2016 J jnl
Int. J. Parallel Program.
Ching-Hsien Hsu, Valentina Salapura
2015 C conf
CLOSER
Valentina Salapura, Richard E. Harper
2015 ed.
Conf. Computing Frontiers
Claudia Di Napoli, Valentina Salapura, Hubertus Franke, Rui Hou
2015 B conf
CLOUD
Valentina Salapura, Richard E. Harper
2015 conf
AIMC@EuroSys
Valentina Salapura, Richard E. Harper, Mahesh Viswanathan
2015 conf
Conf. Computing Frontiers
Min Li, Jian Tan, Yandong Wang, Li Zhang, Valentina Salapura
2015 conf
Conf. Computing Frontiers
Valentina Salapura, Kirk A. Beaty, Alan Bivens, Minkyong Kim, Min Li
2014 C ed.
NPC
Ching-Hsien Hsu, Xuanhua Shi, Valentina Salapura
2014 ed.
CS2@HiPEAC
Jens Knoop, Valentina Salapura, Israel Koren, Gerardo Pelosi
2013 conf
IEEE SCC
Maja Vukovic, Valentina Salapura, Sriram Rajagopal
2013 J jnl
IBM J. Res. Dev.
Valentina Salapura, Richard E. Harper, Mahesh Viswanathan
2012 A* conf
HPCA
Valentina Salapura, Tejas Karkhanis, Priya Nagpurkar, José E. Moreira
2012 C conf
ICCD
Valentina Salapura
2012 J jnl
Int. J. Parallel Program.
Valentina Salapura, Michael Gschwind, Jens Knoop
2012 J jnl
IEEE Micro
Dong Chen, Noel Eisley, Philip Heidelberger, Robert M. Senger, Yutaka Sugawara, Sameer Kumar, Valentina Salapura, David L. Satterfield, Burkhard D. Steinmacher-Burow, Jeffrey J. Parker
2012 conf
IEEE SCC
Maja Vukovic, Jim Laredo, Valentina Salapura
2011 J jnl
Trans. High Perform. Embed. Archit. Compil.
Matthias A. Blumrich, Valentina Salapura, Alan Gara
2011 J jnl
Int. J. Parallel Program.
Valentina Salapura, José E. Moreira, Sally A. McKee
2011 C conf
ICCD
Michael Gschwind, Valentina Salapura, Catherine Trammell, Sally A. McKee
2011 A conf
SC
Dong Chen, Noel Eisley, Philip Heidelberger, Robert M. Senger, Yutaka Sugawara, Sameer Kumar, Valentina Salapura, David L. Satterfield, Burkhard D. Steinmacher-Burow, Jeffrey J. Parker
2011 ch.
Encyclopedia of Parallel Computing
Valentina Salapura
2010 B ed.
PACT
Valentina Salapura, Michael Gschwind, Jens Knoop
2009 A ed.
ICS
Michael Gschwind, Alexandru Nicolau, Valentina Salapura, José E. Moreira
2008 B conf
ICPP
Karthik Ganesan, Lizy Kurian John, Valentina Salapura, James C. Sexton
2008 A* conf
HPCA
Valentina Salapura, Matthias A. Blumrich, Alan Gara
2008 J jnl
IBM J. Res. Dev.
Pavlos Vranas, Matthias A. Blumrich, Dong Chen, Alan Gara, Mark Giampapa, Philip Heidelberger, Valentina Salapura, James C. Sexton, Ron Soltz, Gyan Bhanot
2008 B conf
ISPASS
Valentina Salapura, Karthik Ganesan, Alan Gara, Michael Gschwind, James C. Sexton, Robert Walkup
2008 conf
Conf. Computing Frontiers
Valentina Salapura
2007 C conf
ICCD
Valentina Salapura, José R. Brunheroto, Fernando F. Redígolo, Alan Gara
2007 conf
MEDEA@PACT
Valentina Salapura, Matthias A. Blumrich, Alan Gara
2007 J jnl
Int. J. Parallel Program.
José E. Moreira, Valentina Salapura, George Almási, Charles Archer, Ralph Bellofatto, Peter Bergner, Randy Bickford, Matthias A. Blumrich, José R. Brunheroto, Arthur A. Bright, Michael Brutman, José G. Castaños, Dong Chen, Paul Coteus, Paul Crumley, Sam Ellis, Thomas Engelsiepen, Alan Gara, Mark Giampapa, Tom Gooding, Shawn Hall, Ruud A. Haring, Roger L. Haskin, Philip Heidelberger, Dirk Hoenicke, Todd Inglett, Gerard V. Kopcsay, Derek Lieber, David Limpert, Patrick McCarthy, Mark Megerian, Michael B. Mundy, Martin Ohmacht, Jeff Parker, Rick A. Rand, Don Reed, Ramendra K. Sahoo, Alda Sanomiya, Richard Shok, Brian E. Smith, Gordon G. Stewart, Todd Takken, Pavlos Vranas, Brian P. Wallenfelt, Michael Blocksome, Joe Ratterman
2006 J jnl
IEEE Micro
Valentina Salapura, Robert Walkup, Alan Gara
2006 A conf
SC
Pavlos Vranas, Gyan Bhanot, Matthias A. Blumrich, Dong Chen, Alan Gara, Philip Heidelberger, Valentina Salapura, James C. Sexton
2005 J jnl
IBM J. Res. Dev.
Mark Giampapa, Ralph Bellofatto, Matthias A. Blumrich, Dong Chen, Marc Boris Dombrowa, Alan Gara, Ruud A. Haring, Philip Heidelberger, Dirk Hoenicke, Gerard V. Kopcsay, Ben J. Nathanson, Burkhard D. Steinmacher-Burow, Martin Ohmacht, Valentina Salapura, Pavlos Vranas
2005 J jnl
IBM J. Res. Dev.
Martin Ohmacht, Reinaldo A. Bergamaschi, Subhrajit Bhattacharya, Alan Gara, Mark Giampapa, Balaji Gopalsamy, Ruud A. Haring, Dirk Hoenicke, David J. Krolak, James A. Marcella, Ben J. Nathanson, Valentina Salapura, Michael E. Wazlowski
2005 C conf
SBAC-PAD
José R. Brunheroto, Valentina Salapura, Fernando F. Redígolo, Dirk Hoenicke, Alan Gara
2005 conf
Conf. Computing Frontiers
Valentina Salapura, Randy Bickford, Matthias A. Blumrich, Arthur A. Bright, Dong Chen, Paul Coteus, Alan Gara, Mark Giampapa, Michael Gschwind, Manish Gupta, Shawn Hall, Ruud A. Haring, Philip Heidelberger, Dirk Hoenicke, Gerard V. Kopcsay, Martin Ohmacht, Rick A. Rand, Todd Takken, Pavlos Vranas
2004 Misc conf
CASES
Valentina Salapura, Christos J. Georgiou, Indira Nair
2001 J jnl
IBM Syst. J.
Frances E. Allen, George S. Almási, Wanda Andreoni, Daniel K. Beece, Bruce J. Berne, Arthur A. Bright, José R. Brunheroto, Calin Cascaval, José G. Castaños, Paul Coteus, Paul Crumley, Alessandro Curioni, Monty Denneau, Wilm E. Donath, Maria Eleftheriou, Blake G. Fitch, Bruce M. Fleischer, Christos J. Georgiou, Robert S. Germain, Mark Giampapa, Donna L. Gresh, Manish Gupta, Ruud A. Haring, C. T. Howard Ho, Peter H. Hochschild, Susan Flynn Hummel, Tiziana Jonas, Derek Lieber, Glenn J. Martyna, Kiran K. Maturu, José E. Moreira, Dennis M. Newns, Matthew Newton, Robert Philhower, Thomas Picunko, Jed W. Pitera, Michael Pitman, Rick A. Rand, Ajay K. Royyuru, Valentina Salapura, Alda Sanomiya, Rahul S. Shah, Yuk Yin Sham, Sarabjeet Singh, Marc Snir, Frank Suits, Richard A. Swetz, William C. Swope, Nagesh K. Vishnumurthy, T. J. Christopher Ward, Henry S. Warren Jr., Ruhong Zhou
2001 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Michael Gschwind, Valentina Salapura, Dietmar Maurer
2000 J jnl
IEEE Trans. Fuzzy Syst.
Valentina Salapura
1998 A conf
DATE
Valentina Salapura, Michael Gschwind
1996 conf
EURO-DAC
Valentina Salapura, Volker Hamann
1995 B conf
FPL
Michael Gschwind, Valentina Salapura
1994 B conf
FPL
Valentina Salapura, Michael Gschwind, Oliver Maischberger
1994 C conf
ISCAS
Valentina Salapura
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)