Oreste Villa

75 papers A* 7A 11B 2C 9Misc 3Journal 20Unranked 16
YearRankTypeTitle / Venue / Authors
2023 A* conf
HPCA
Harini Muthukrishnan, Daniel Lustig, Oreste Villa, Thomas F. Wenisch, David W. Nellans
2023 A conf
CGO
Vijay Kandiah, Daniel Lustig, Oreste Villa, David W. Nellans, Nikos Hardavellas
2021 A conf
DSN
Timothy Tsai, Siva Kumar Sastry Hari, Michael B. Sullivan, Oreste Villa, Stephen W. Keckler
2021 A* conf
HPCA
Oreste Villa, Daniel Lustig, Zi Yan, Evgeny Bolotin, Yaosheng Fu, Niladrish Chatterjee, Nan Jiang, David W. Nellans
2020 A* conf
HPCA
Xiaowei Ren, Daniel Lustig, Evgeny Bolotin, Aamer Jaleel, Oreste Villa, David W. Nellans
2019 A* conf
MICRO
Oreste Villa, Mark Stephenson, David W. Nellans, Stephen W. Keckler
2019 J jnl
J. Parallel Distributed Comput.
Antonino Tumeo, John Feo, Oreste Villa
2018 A* conf
MICRO
Vinson Young, Aamer Jaleel, Evgeny Bolotin, Eiman Ebrahimi, David W. Nellans, Oreste Villa
2017 A* conf
MICRO
Ugljesa Milic, Oreste Villa, Evgeny Bolotin, Akhil Arunkumar, Eiman Ebrahimi, Aamer Jaleel, Alex Ramírez, David W. Nellans
2017 J jnl
IEEE Trans. Parallel Distributed Syst.
Marco Ceriani, Simone Secchi, Oreste Villa, Antonino Tumeo, Gianluca Palermo
2017 A* conf
ISCA
Akhil Arunkumar, Evgeny Bolotin, Benjamin Y. Cho, Ugljesa Milic, Eiman Ebrahimi, Oreste Villa, Aamer Jaleel, Carole-Jean Wu, David W. Nellans
2016 J jnl
Parallel Comput.
Antonino Tumeo, John Feo, Oreste Villa
2015 J jnl
IEEE Micro
Evgeny Bolotin, David W. Nellans, Oreste Villa, Mike O'Connor, Alex Ramírez, Stephen W. Keckler
2015 ch.
Big Data - Algorithms, Analytics, and Applications
Alessandro Morari, Vito Giovanni Castellana, Oreste Villa, Jesse Weaver, Gregory Todd Williams, David J. Haglin, Antonino Tumeo, John Feo
2015 C conf
CLUSTER
Alessandro Morari, Jesse Weaver, Oreste Villa, David J. Haglin, Antonino Tumeo, Vito Giovanni Castellana, John Feo
2015 J jnl
Computer
Vito Giovanni Castellana, Alessandro Morari, Jesse Weaver, Antonino Tumeo, David Haglin, Oreste Villa, John Feo
2015 ed.
IA3@SC
Antonino Tumeo, John Feo, Oreste Villa
2015 J jnl
J. Parallel Distributed Comput.
Antonino Tumeo, John Feo, Oreste Villa, Simone Secchi, Timothy G. Mattson
2014 ch.
Numerical Computations with GPUs
Antonino Tumeo, Nitin Gawande, Oreste Villa
2014 ed.
IA3@SC
Antonino Tumeo, John Feo, Oreste Villa
2014 A conf
IPDPS
Alessandro Morari, Antonino Tumeo, Daniel G. Chavarría-Miranda, Oreste Villa, Mateo Valero
2014 J jnl
IEEE Micro
Alessandro Morari, Vito Giovanni Castellana, Oreste Villa, Antonino Tumeo, Jesse Weaver, David Haglin, Sutanay Choudhury, John Feo
2014 A conf
SC
Oreste Villa, Daniel R. Johnson, Mike O'Connor, Evgeny Bolotin, David W. Nellans, Justin Luitjens, Nikolai Sakharnykh, Peng Wang, Paulius Micikevicius, Anthony Scudiero, Stephen W. Keckler, William J. Dally
2014 J jnl
Parallel Comput.
Jesse Weaver, Vito Giovanni Castellana, Alessandro Morari, Antonino Tumeo, Sumit Purohit, Alan R. Chappell, David Haglin, Oreste Villa, Sutanay Choudhury, Karen Schuchardt, John Feo
2013 conf
IEEE BigData
Alessandro Morari, Vito Giovanni Castellana, David Haglin, John Feo, Jesse Weaver, Antonino Tumeo, Oreste Villa
2013 C conf
CLUSTER
Oreste Villa, Nitin Gawande, Antonino Tumeo
2013 conf
SocialCom
Vito Giovanni Castellana, Antonino Tumeo, Oreste Villa, David Haglin, John Feo
2013 Misc conf
SAC
Selim Ciraci, Oreste Villa
2013 Misc conf
FCCM
Marco Ceriani, Gianluca Palermo, Simone Secchi, Antonino Tumeo, Oreste Villa
2013 conf
ASAP
Simone Secchi, Marco Ceriani, Antonino Tumeo, Oreste Villa, Gianluca Palermo, Luigi Raffo
2013 conf
Hot Chips Symposium
Marco Ceriani, Simone Secchi, Antonino Tumeo, Oreste Villa, Gianluca Palermo
2013 J jnl
Clust. Comput.
Wenjing Ma, Sriram Krishnamoorthy, Oreste Villa, Karol Kowalski, Gagan Agrawal
2013 conf
Euro-Par
Oreste Villa, Massimiliano Fatica, Nitin Gawande, Antonino Tumeo
2013 ed.
IA3
Antonino Tumeo, John Feo, Oreste Villa, Simone Secchi
2013 conf
RAPIDO
Marco Ceriani, Simone Secchi, Antonino Tumeo, Oreste Villa
2013 conf
DISCS@SC
Alan R. Chappell, Sutanay Choudhury, John Feo, David J. Haglin, Alessandro Morari, Sumit Purohit, Karen Schuchardt, Antonino Tumeo, Jesse Weaver, Oreste Villa
2013 C conf
RSP
Silvia Lovergine, Antonino Tumeo, Oreste Villa, Fabrizio Ferrandi
2012 B conf
CCGRID
Simone Secchi, Antonino Tumeo, Oreste Villa
2012 conf
SC Companion
Oreste Villa, Antonino Tumeo, Selim Ciraci, Jeff A. Daily, Jason C. Fuller
2012 J jnl
IEEE Trans. Parallel Distributed Syst.
Antonino Tumeo, Oreste Villa, Daniel G. Chavarría-Miranda
2012 J jnl
Int. J. High Perform. Comput. Appl.
Mahantesh Halappanavar, John Feo, Oreste Villa, Antonino Tumeo, Alex Pothen
2012 J jnl
Computer
Antonino Tumeo, Simone Secchi, Oreste Villa
2012 C conf
SBAC-PAD
Alessandro Morari, Antonino Tumeo, Oreste Villa, Simone Secchi, Mateo Valero
2012 J jnl
IEEE Trans. Parallel Distributed Syst.
Oreste Villa, Antonino Tumeo, Simone Secchi, Joseph B. Manzano
2012 ed.
Conf. Computing Frontiers
John Feo, Paolo Faraboschi, Oreste Villa
2011 B conf
CCGRID
Simone Secchi, Antonino Tumeo, Oreste Villa
2011 conf
ARCS
Antonino Tumeo, Simone Secchi, Oreste Villa
2011 C conf
CLUSTER
Long Chen, Oreste Villa, Guang R. Gao
2011 conf
IA3@SC
John Feo, Oreste Villa, Antonino Tumeo, Simone Secchi
2011 ed.
IA3@SC
John Feo, Oreste Villa, Antonino Tumeo, Simone Secchi
2011 conf
IA3@SC
John Feo, Oreste Villa, Antonino Tumeo, Simone Secchi
2010 conf
SASP
Antonino Tumeo, Oreste Villa
2010 C conf
CLUSTER
Wenjing Ma, Sriram Krishnamoorthy, Oreste Villa, Karol Kowalski
2010 J jnl
Adv. Comput.
Anuj R. Shah, Joshua N. Adkins, Douglas J. Baxter, William R. Cannon, Daniel G. Chavarría-Miranda, Sutanay Choudhury, Ian Gorton, Deborah K. Gracio, Todd D. Halter, Navdeep Jaitly, John R. Johnson, Richard T. Kouzes, Matthew C. Macduff, Andrés Márquez, Matthew E. Monroe, Christopher S. Oehmen, William A. Pike, Chad Scherrer, Oreste Villa, Bobbie-Jo M. Webb-Robertson, Paul D. Whitney, Nino Zuljevic
2010 A conf
IPDPS
Long Chen, Oreste Villa, Sriram Krishnamoorthy, Guang R. Gao
2010 conf
Conf. Computing Frontiers
Antonino Tumeo, Oreste Villa, Donatella Sciuto
2010 C conf
ISCAS
Oreste Villa, Long Chen, Sriram Krishnamoorthy
2009 A conf
IPDPS
Oreste Villa, Daniel G. Chavarría-Miranda, Kristyn J. Maschhoff
2009 conf
Conf. Computing Frontiers
Oreste Villa, Sriram Krishnamoorthy, Jarek Nieplocha, David M. Brown Jr.
2008 C conf
DSD
Matteo Monchiero, Gianluca Palermo, Cristina Silvano, Oreste Villa
2008 J jnl
Computer
Oreste Villa, Daniele Paolo Scarpazza, Fabrizio Petrini
2008 Misc conf
CASES
Oreste Villa, Gianluca Palermo, Cristina Silvano
2008 J jnl
IEEE Trans. Parallel Distributed Syst.
Daniele Paolo Scarpazza, Oreste Villa, Fabrizio Petrini
2008 conf
Conf. Computing Frontiers
Daniele Paolo Scarpazza, Oreste Villa, Fabrizio Petrini
2008 A conf
IPDPS
Daniele Paolo Scarpazza, Oreste Villa, Fabrizio Petrini
2007 A conf
IPDPS
Oreste Villa, Daniele Paolo Scarpazza, Fabrizio Petrini, Juan Fernández Peinador
2007 J jnl
J. Syst. Archit.
Matteo Monchiero, Gianluca Palermo, Cristina Silvano, Oreste Villa
2007 J jnl
CoRR
Oreste Villa, Patrick Schaumont, Ingrid Verbauwhede, Matteo Monchiero, Gianluca Palermo
2007 A conf
IPDPS
Daniele Paolo Scarpazza, Oreste Villa, Fabrizio Petrini
2007 C conf
CLUSTER
Daniele Paolo Scarpazza, Patrick Mullaney, Oreste Villa, Fabrizio Petrini, Vinod Tipparaju, David M. L. Brown, Jarek Nieplocha
2006 J jnl
SIGARCH Comput. Archit. News
Matteo Monchiero, Gianluca Palermo, Cristina Silvano, Oreste Villa
2006 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Matteo Monchiero, Gianluca Palermo, Cristina Silvano, Oreste Villa
2006 conf
ICSAMOS
Matteo Monchiero, Gianluca Palermo, Cristina Silvano, Oreste Villa
2006 A conf
DATE
Matteo Monchiero, Gianluca Palermo, Cristina Silvano, Oreste Villa
2005 A conf
DATE
Oreste Villa, Patrick Schaumont, Ingrid Verbauwhede, Matteo Monchiero, Gianluca Palermo
tests/conftest.py
← Index tests/conftest.py python
"""
Pytest configuration and shared fixtures for REDB unit tests.
"""
import os
import sys
import pytest
import logging
import tempfile
import hashlib
from unittest.mock import Mock, MagicMock, patch
from pathlib import Path

# Add the project root to the path
sys.path.insert(0, str(Path(__file__).parent.parent))

# Test files directory
TEST_FILES_DIR = Path(__file__).parent.parent / "test_files"


# ============================================================================
# Logger Fixtures
# ============================================================================

@pytest.fixture
def mock_logger():
    """Create a mock logger for testing."""
    logger = Mock()
    logger.debug = Mock()
    logger.info = Mock()
    logger.warning = Mock()
    logger.error = Mock()
    return logger


@pytest.fixture
def real_logger():
    """Create a real logger for testing with debug output."""
    logger = logging.getLogger("test_logger")
    logger.setLevel(logging.DEBUG)
    if not logger.handlers:
        handler = logging.StreamHandler()
        handler.setLevel(logging.DEBUG)
        formatter = logging.Formatter('%(levelname)s - %(message)s')
        handler.setFormatter(formatter)
        logger.addHandler(handler)
    return logger


# ============================================================================
# Test Binary Files Fixtures
# ============================================================================

@pytest.fixture
def elf_binary_path():
    """Path to the ELF test binary."""
    path = TEST_FILES_DIR / "hello"
    if not path.exists():
        pytest.skip(f"Test file not found: {path}")
    return str(path)


@pytest.fixture
def elf_advanced_binary_path():
    """Path to the advanced ELF test binary."""
    path = TEST_FILES_DIR / "hello_advanced"
    if not path.exists():
        pytest.skip(f"Test file not found: {path}")
    return str(path)


@pytest.fixture
def pe_binary_path():
    """Path to the PE test binary (.NET PE)."""
    path = TEST_FILES_DIR / "d8637bdbcfc9112fcb1f0167b398e771"
    if not path.exists():
        pytest.skip(f"Test file not found: {path}")
    return str(path)


@pytest.fixture
def elf_binary_content(elf_binary_path):
    """Read the ELF test binary content."""
    with open(elf_binary_path, "rb") as f:
        return f.read()


@pytest.fixture
def pe_binary_content(pe_binary_path):
    """Read the PE test binary content."""
    with open(pe_binary_path, "rb") as f:
        return f.read()


# ============================================================================
# Temporary Files Fixtures
# ============================================================================

@pytest.fixture
def temp_binary_file():
    """Create a temporary binary file for testing."""
    with tempfile.NamedTemporaryFile(delete=False, suffix=".bin") as f:
        # Write some test data
        f.write(b"\x7fELF" + b"\x00" * 100 + b"test data")
        temp_path = f.name

    yield temp_path

    # Cleanup
    if os.path.exists(temp_path):
        os.unlink(temp_path)


@pytest.fixture
def temp_text_file():
    """Create a temporary text file for testing."""
    with tempfile.NamedTemporaryFile(delete=False, suffix=".txt", mode="w") as f:
        f.write("This is a test file with some text content.")
        temp_path = f.name

    yield temp_path

    # Cleanup
    if os.path.exists(temp_path):
        os.unlink(temp_path)


@pytest.fixture
def temp_pe_like_file():
    """Create a temporary file with PE-like header for testing."""
    with tempfile.NamedTemporaryFile(delete=False, suffix=".exe") as f:
        # MZ header
        f.write(b"MZ" + b"\x00" * 58)
        # e_lfanew pointing to PE header at offset 64
        f.write(b"\x40\x00\x00\x00")
        # PE signature at offset 64
        f.write(b"PE\x00\x00")
        # Minimal COFF header (20 bytes)
        f.write(b"\x4c\x01")  # Machine (i386)
        f.write(b"\x01\x00")  # NumberOfSections
        f.write(b"\x00" * 16)  # Rest of COFF header
        temp_path = f.name

    yield temp_path

    # Cleanup
    if os.path.exists(temp_path):
        os.unlink(temp_path)


# ============================================================================
# Mock Exporter Fixtures
# ============================================================================

@pytest.fixture
def mock_print_exporter(mock_logger):
    """Create a mock PrintExporter."""
    from redb.extractors.database_exporters import PrintExporter
    exporter = PrintExporter(mock_logger, "test_index")
    return exporter


@pytest.fixture
def mock_elasticsearch_exporter(mock_logger):
    """Create a mock ElasticsearchExporter with mocked client."""
    with patch('redb.settings.get_elasticsearch_client') as mock_client:
        mock_client.return_value = Mock()
        from redb.extractors.database_exporters import ElasticsearchExporter
        exporter = ElasticsearchExporter(mock_logger, "test_index")
        return exporter


@pytest.fixture
def mock_clickhouse_exporter(mock_logger):
    """Create a mock ClickHouseExporter with mocked client."""
    with patch('redb.settings.create_clickhouse_client') as mock_client:
        mock_client.return_value = Mock()
        from redb.extractors.database_exporters import ClickHouseExporter
        exporter = ClickHouseExporter(mock_logger, "test_index", client=Mock())
        return exporter


# ============================================================================
# Mock Settings Fixtures
# ============================================================================

@pytest.fixture
def mock_settings():
    """Mock the redb.settings module."""
    with patch.multiple(
        'redb.settings',
        ELASTIC_BINARIES_COLLECTION="test_collection",
        get_elasticsearch_client=Mock(return_value=Mock()),
        create_clickhouse_client=Mock(return_value=Mock()),
    ):
        yield


# ============================================================================
# Hash Fixtures
# ============================================================================

@pytest.fixture
def known_hashes(elf_binary_content):
    """Compute known hashes for the ELF test binary."""
    return {
        'md5': hashlib.md5(elf_binary_content).hexdigest(),
        'sha1': hashlib.sha1(elf_binary_content).hexdigest(),
        'sha256': hashlib.sha256(elf_binary_content).hexdigest(),
    }


@pytest.fixture
def pe_known_hashes(pe_binary_content):
    """Compute known hashes for the PE test binary."""
    return {
        'md5': hashlib.md5(pe_binary_content).hexdigest(),
        'sha1': hashlib.sha1(pe_binary_content).hexdigest(),
        'sha256': hashlib.sha256(pe_binary_content).hexdigest(),
    }


# ============================================================================
# Sample Data Fixtures
# ============================================================================

@pytest.fixture
def sample_binary_data():
    """Sample binary data for entropy and hash testing."""
    return b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" * 16


@pytest.fixture
def high_entropy_data():
    """High entropy random-like data for testing."""
    import random
    random.seed(42)  # Reproducible
    return bytes(random.randint(0, 255) for _ in range(256))


@pytest.fixture
def low_entropy_data():
    """Low entropy repetitive data for testing."""
    return b"\x00" * 256


# ============================================================================
# PE Object Fixtures
# ============================================================================

@pytest.fixture
def pe_object(pe_binary_path):
    """Create a pefile PE object for testing."""
    import pefile
    try:
        pe = pefile.PE(pe_binary_path)
        yield pe
        pe.close()
    except Exception as e:
        pytest.skip(f"Failed to parse PE file: {e}")


# ============================================================================
# ELF Object Fixtures
# ============================================================================

@pytest.fixture
def elf_object(elf_binary_path):
    """Create an ELFFile object for testing."""
    from elftools.elf.elffile import ELFFile
    try:
        with open(elf_binary_path, 'rb') as f:
            elf = ELFFile(f)
            # We need to keep the file open for ELFFile to work
            yield elf
    except Exception as e:
        pytest.skip(f"Failed to parse ELF file: {e}")


# ============================================================================
# Dataclass Fixtures
# ============================================================================

@pytest.fixture
def sample_hash_dataclass():
    """Create a sample Hash dataclass."""
    from redb.models.dataclasses import Hash
    return Hash(
        md5="d41d8cd98f00b204e9800998ecf8427e",
        sha1="da39a3ee5e6b4b0d3255bfef95601890afd80709",
        sha256="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
    )


@pytest.fixture
def sample_hashes_dataclass():
    """Create a sample Hashes dataclass."""
    from redb.models.dataclasses import Hashes
    return Hashes(
        md5="d41d8cd98f00b204e9800998ecf8427e",
        sha1="da39a3ee5e6b4b0d3255bfef95601890afd80709",
        sha256="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
        ssdeep_hash="3::",
        tlsh_hash=""
    )


@pytest.fixture
def sample_basic_properties():
    """Create a sample BasicProperties dataclass."""
    from redb.models.dataclasses import BasicProperties
    return BasicProperties(
        filename="test.exe",
        sample_name="test.exe",
        filesize=1024,
        filetype="PE32 executable",
        filetype_mime="application/x-dosexec",
        filetype_magika="pebin",
        file_entropy=6.5
    )


# ============================================================================
# Utility Functions for Tests
# ============================================================================

def compute_entropy(data):
    """Compute entropy of data for verification in tests."""
    import math
    from collections import Counter

    if not data:
        return 0.0

    if isinstance(data, str):
        counts = Counter(data)
        frequencies = (i / len(data) for i in counts.values())
        return -sum(f * math.log(f, 2) for f in frequencies)
    else:
        occurrences = Counter(bytearray(data))
        entropy = 0
        for x in occurrences.values():
            p_x = float(x) / len(data)
            entropy -= p_x * math.log(p_x, 2)
        return entropy


# Make the function available as a fixture
@pytest.fixture
def entropy_calculator():
    """Return the entropy calculation function."""
    return compute_entropy


# ============================================================================
# Skip Markers
# ============================================================================

# Mark tests that require external tools
requires_die = pytest.mark.skipif(
    not os.path.exists("/usr/bin/diec") and not os.path.exists("/usr/local/bin/diec"),
    reason="Detect It Easy (diec) not installed"
)

requires_capa = pytest.mark.skipif(
    not os.path.exists("/usr/bin/capa") and not os.path.exists("/usr/local/bin/capa"),
    reason="capa not installed"
)

requires_floss = pytest.mark.skipif(
    not os.path.exists("/usr/bin/floss") and not os.path.exists("/usr/local/bin/floss"),
    reason="floss not installed"
)