Carleton Coffrin

76 papers A* 2A 6B 6Misc 4Journal 46Unranked 11
YearRankTypeTitle / Venue / Authors
2025 J jnl
INFORMS J. Comput.
Carleton Coffrin, Elisabeth Lobe, Giacomo Nannicini, Ojas Parekh
2025 conf
CPAIOR (1)
Rosemary Barrass, Harsha Nagarajan, Carleton Coffrin
2024 J jnl
CoRR
Sergio I. Bugosen, Robert B. Parker, Carleton Coffrin
2024 J jnl
CoRR
Parikshit Pareek, Abhijith Jayakumar, Carleton Coffrin, Sidhant Misra
2024 J jnl
INFORMS J. Comput.
Russell Bent, Byron Tasseff, Carleton Coffrin
2024 J jnl
CoRR
Robert B. Parker, Carleton Coffrin
2024 J jnl
J. Heuristics
Byron Tasseff, Tameem Albash, Zachary Morrell, Marc Vuffray, Andrey Y. Lokhov, Sidhant Misra, Carleton Coffrin
2024 J jnl
ACM Trans. Quantum Comput.
Thomas Lubinski, Carleton Coffrin, Catherine McGeoch, Pratik Sathe, Joshua Apanavicius, David E. Bernal Neira, Quantum Economic Development Consortium(QED-C) Collaboration
2024 J jnl
INFORMS J. Comput.
Byron Tasseff, Russell Bent, Carleton Coffrin, Clayton Barrows, Devon Sigler, Jonathan J. Stickel, Ahmed S. Zamzam, Yang Liu, Pascal Van Hentenryck
2024 Misc conf
QCE
Zachary Morrell, Marc Vuffray, Sidhant Misra, Carleton Coffrin
2024 J jnl
Quantum
Abhijith Jayakumar, Stefano Chessa, Carleton Coffrin, Andrey Y. Lokhov, Marc Vuffray, Sidhant Misra
2023 J jnl
CoRR
Elena R. Henderson, Harsha Nagarajan, Carleton Coffrin
2023 Misc conf
QCE
Abhijith Jayakumar, Stefano Chessa, Carleton Coffrin, Andrey Y. Lokhov, Marc Vuffray, Sidhant Misra
2023 conf
CDC
Kaarthik Sundar, Harsha Nagarajan, Sidhant Misra, Mowen Lu, Carleton Coffrin, Russell Bent
2023 J jnl
CoRR
Mohannad Alkhraijah, Rachel Harris, Carleton Coffrin, Daniel K. Molzahn
2023 J jnl
CoRR
Noah Rhodes, Carleton Coffrin, Line Roald
2023 Misc conf
QCE
Adrien Suau, Jon Nelson, Marc Vuffray, Andrey Y. Lokhov, Lukasz Cincio, Carleton Coffrin
2023 J jnl
INFORMS J. Comput.
Carleton Coffrin, Elisabeth Lobe, Giacomo Nannicini, Ojas Parekh
2022 J jnl
Comput. Chem. Eng.
Byron Tasseff, Carleton Coffrin, Russell Bent, Kaarthik Sundar, Anatoly Zlotnik
2022 J jnl
ACM Trans. Quantum Comput.
Abhijith Jayakumar, Adetokunbo Adedoyin, John Ambrosiano, Petr M. Anisimov, William Casper, Gopinath Chennupati, Carleton Coffrin, Hristo N. Djidjev, David Gunter, Satish Karra, Nathan Lemons, Shizeng Lin, Alexander Malyzhenkov, David Mascarenas, Susan M. Mniszewski, Balu Nadiga, Daniel O'Malley, Diane Oyen, Scott Pakin, Lakshman Prasad, Randy Roberts, Phillip Romero, Nandakishore Santhi, Nikolai Sinitsyn, Pieter J. Swart, James G. Wendelberger, Boram Yoon, Richard J. Zamora, Wei Zhu, Stephan J. Eidenbenz, Andreas Bärtschi, Patrick J. Coles, Marc Vuffray, Andrey Y. Lokhov
2022 J jnl
CoRR
Noah Rhodes, Carleton Coffrin, Line Roald
2022 Misc conf
QCE
Adrien Suau, Marc Vuffray, Andrey Y. Lokhov, Lukasz Cincio, Carleton Coffrin
2021 J jnl
Constraints An Int. J.
Yuchen Pang, Carleton Coffrin, Andrey Y. Lokhov, Marc Vuffray
2021 J jnl
CoRR
Jon Nelson, Marc Vuffray, Andrey Y. Lokhov, Tameem Albash, Carleton Coffrin
2021 J jnl
CoRR
Jon Nelson, Marc Vuffray, Andrey Y. Lokhov, Carleton Coffrin
2021 J jnl
Constraints An Int. J.
Yuchen Pang, Carleton Coffrin, Andrey Y. Lokhov, Marc Vuffray
2020 conf
e-Energy
Frederik Geth, Carleton Coffrin, David M. Fobes
2020 J jnl
CoRR
Frederik Geth, Carleton Coffrin, David M. Fobes
2020 J jnl
INFORMS J. Comput.
Ksenia Bestuzheva, Hassan L. Hijazi, Carleton Coffrin
2020 J jnl
CoRR
Forrest C. Sheldon, Francesco Caravelli, Carleton Coffrin
2020 J jnl
CoRR
David M. Fobes, Sander Claeys, Frederik Geth, Carleton Coffrin
2020 J jnl
CoRR
Noah Rhodes, David M. Fobes, Carleton Coffrin, Line Roald
2020 J jnl
CoRR
Marc Vuffray, Carleton Coffrin, Yaroslav A. Kharkov, Andrey Y. Lokhov
2020 J jnl
CoRR
Carleton Coffrin, Bernard Knueven, Jesse Holzer, Marc Vuffray
2019 B conf
CPAIOR
Carleton Coffrin, Harsha Nagarajan, Russell Bent
2019 J jnl
CoRR
Carleton Coffrin, James Arnold, Stephan J. Eidenbenz, Derek Aberle, John Ambrosiano, Zachary K. Baker, Sara Brambilla, Michael J. Brown, K. Nolan Carter, Pinghan Chu, Patrick Conry, Keeley Costigan, Ariane Eberhardt, David M. Fobes, Adam Gausmann, Sean N. Harris, Donovan Heimer, Marlin Holmes, Bill Junor, Csaba Kiss, Steve Linger, Rodman R. Linn, Li-Ta Lo, Jonathan MacCarthy, Omar Marcillo, Clay McGinnis, Alexander McQuarters, Eric Michalak, Arvind T. Mohan, Matt Nelson, Diane Oyen, Nidhi Parikh, Donatella Pasqualini, Aaron S. Pope, Reid B. Porter, Chris Rawlings, Hannah Reinbolt, Reid D. Rivenburgh, Philip Romero, Kevin Schoonover, Alexei N. Skurikhin, Daniel R. Tauritz, Dima Tretiak, Zhehui Wang, James Wernicke, Brad Wolfe, Phillip Wolfram, Jonathan Woodring
2019 J jnl
CoRR
Sogol Babaeinejadsarookolaee, Adam B. Birchfield, Richard D. Christie, Carleton Coffrin, Christopher L. DeMarco, Ruisheng Diao, Michael Ferris, Stephane Fliscounakis, Scott Greene, Renke Huang, Cédric Josz, Roman Korab, Bernard C. Lesieutre, Jean Maeght, Daniel K. Molzahn, Thomas J. Overbye, Patrick Panciatici, Byungkwon Park, Jonathan Snodgrass, Ray Zimmerman
2018 B conf
CPAIOR
Ole Kröger, Carleton Coffrin, Hassan L. Hijazi, Harsha Nagarajan
2018 J jnl
CoRR
Kaarthik Sundar, Harsha Nagarajan, Sidhant Misra, Mowen Lu, Carleton Coffrin, Russell Bent
2018 J jnl
Networks
Kaarthik Sundar, Carleton Coffrin, Harsha Nagarajan, Russell Bent
2018 J jnl
CoRR
Patrick J. Coles, Stephan J. Eidenbenz, Scott Pakin, Adetokunbo Adedoyin, John Ambrosiano, Petr M. Anisimov, William Casper, Gopinath Chennupati, Carleton Coffrin, Hristo N. Djidjev, David Gunter, Satish Karra, Nathan Lemons, Shizeng Lin, Andrey Y. Lokhov, Alexander Malyzhenkov, David Mascarenas, Susan M. Mniszewski, Balu Nadiga, Dan O'Malley, Diane Oyen, Lakshman Prasad, Randy Roberts, Philip Romero, Nandakishore Santhi, Nikolai Sinitsyn, Pieter J. Swart, Marc Vuffray, Jim Wendelberger, Boram Yoon, Richard J. Zamora, Wei Zhu
2017 J jnl
Math. Program. Comput.
Hassan L. Hijazi, Carleton Coffrin, Pascal Van Hentenryck
2017 J jnl
CoRR
Carleton Coffrin, Harsha Nagarajan, Russell Bent
2017 J jnl
CoRR
Carleton Coffrin, Russell Bent, Kaarthik Sundar, Yeesian Ng, Miles Lubin
2017 J jnl
CoRR
Kaarthik Sundar, Carleton Coffrin, Harsha Nagarajan, Russell Bent
2016 conf
PSCC
Carleton Coffrin, Hassan L. Hijazi, Pascal Van Hentenryck
2016 conf
PSCC
Hassan L. Hijazi, Carleton Coffrin, Pascal Van Hentenryck
2015 J jnl
Constraints An Int. J.
Carleton Coffrin
2015 J jnl
CoRR
Carleton Coffrin, Hassan L. Hijazi, Pascal Van Hentenryck
2015 J jnl
CoRR
Carleton Coffrin, Hassan L. Hijazi, Pascal Van Hentenryck
2015 A conf
LAK
Gregor E. Kennedy, Carleton Coffrin, Paula G. de Barba, Linda Corrin
2015 A conf
CP
Carleton Coffrin, Hassan L. Hijazi, Pascal Van Hentenryck
2015 J jnl
CoRR
Carleton Coffrin, Hassan L. Hijazi, Pascal Van Hentenryck
2015 J jnl
Math. Program.
Pascal Van Hentenryck, Carleton Coffrin
2014 J jnl
INFORMS J. Comput.
Carleton Coffrin, Pascal Van Hentenryck
2014 J jnl
CoRR
Carleton Coffrin, Dan Gordon, Paul Scott
2014 conf
PSCC
Terrence W. K. Mak, Carleton Coffrin, Pascal Van Hentenryck, Ian A. Hiskens, David J. Hill
2014 conf
PSCC
Carleton Coffrin, Hassan L. Hijazi, Karsten Lehmann, Pascal Van Hentenryck
2014 A conf
SIGCSE
Pascal Van Hentenryck, Carleton Coffrin
2014 conf
PSCC
Russell Bent, Carleton Coffrin, Rodrigo R. E. Gumucio, Pascal Van Hentenryck
2014 conf
PSCC
Carleton Coffrin, Pascal Van Hentenryck
2014 A conf
LAK
Carleton Coffrin, Linda Corrin, Paula G. de Barba, Gregor E. Kennedy
2013 A* conf
IJCAI
Sylvie Thiébaux, Carleton Coffrin, Hassan L. Hijazi, John K. Slaney
2012 J jnl
CoRR
Carleton Coffrin, Pascal Van Hentenryck
2012
Carleton Coffrin
2012 A conf
ECAI
Pascal Van Hentenryck, Nabeel Gillani, Carleton Coffrin
2012 A* conf
AAAI
Carleton Coffrin, Pascal Van Hentenryck, Russell Bent
2012 B conf
EDBT
Hideaki Kimura, Carleton Coffrin, Alexander Rasin, Stanley B. Zdonik
2012 B conf
CPAIOR
Ben Simon, Carleton Coffrin, Pascal Van Hentenryck
2011 J jnl
CoRR
Hideaki Kimura, Carleton Coffrin, Alexander Rasin, Stanley B. Zdonik
2011 J jnl
Constraints An Int. J.
Pierre Schaus, Pascal Van Hentenryck, Jean-Noël Monette, Carleton Coffrin, Laurent Michel, Yves Deville
2011 B conf
CPAIOR
Carleton Coffrin, Pascal Van Hentenryck, Russell Bent
2010 conf
AMEC/TADA
Jordan Berg, Carleton Coffrin, Amy Greenwald, Eric Sodomka
2010 B conf
CPAIOR
Pascal Van Hentenryck, Russell Bent, Carleton Coffrin
2009 A conf
CP
Pascal Van Hentenryck, Carleton Coffrin, Boris Gutkovich
2009 conf
SEDE
Carleton Coffrin, Laurent D. Michel, Alexander A. Shvartsman, Elaine L. Sonderegger, Pascal Van Hentenryck
tests/unit/conftest.py
← Index tests/unit/conftest.py python
"""
Unit test configuration.

Replaces the redb.extractors package with a minimal stub so that
``from redb.extractors.database_exporters import ...`` works without
pulling in the heavy __init__.py import chain (pefile, elftools,
signify, magic, etc.).

Also stubs out redb.settings so that Elasticsearch / ClickHouse
clients are never actually created during unit tests.

Additionally installs binaryninja stubs for decompiler unit tests.

Stubs heavy third-party packages (pefile, magic, psutil, etc.) so that
redb.workers, redb.queries, redb.ingestor, and redb.s3_utils can all
be imported and patched in unit tests without requiring the real packages.
"""
import sys
import types
from pathlib import Path
from unittest.mock import MagicMock

# ---------------------------------------------------------------------------
# 0. Install binaryninja stubs FIRST — must happen before any decompiler
#    module is imported (triggered by __init__.py chain).
# ---------------------------------------------------------------------------
from tests.unit.conftest_binja_stubs import install_binja_stubs as _install_binja_stubs
_install_binja_stubs()

# ---------------------------------------------------------------------------
# 1. Stub external packages required by database_exporters.py itself,
#    the decompiler chain, and the workers/ingestor modules.
# ---------------------------------------------------------------------------
_heavy_deps = [
    # Database / networking
    "elasticsearch", "clickhouse_connect", "dotenv",
    # Binary analysis — top-level packages
    "pefile", "magic", "machofile",
    # Archive handling
    "py7zr", "pyzipper",
    # File type detection
    "magika",
    # System monitoring
    "psutil",
    # S3 / MinIO (submodule paths needed for `from minio.error import S3Error`)
    "minio", "minio.error",
    # YARA
    "yara_x",
    # Binary parsing — elftools tree
    "elftools", "elftools.elf", "elftools.elf.elffile",
    "elftools.common", "elftools.common.exceptions",
    # Code signing — signify tree
    "signify", "signify.fingerprinter", "signify.authenticode",
    # LIEF
    "lief",
    # Fuzzy hashing
    "ppdeep",
    # .NET analysis
    "dotnetfile",
    # Crypto / ASN.1
    "asn1crypto", "asn1crypto.cms", "asn1crypto.pem", "asn1crypto.x509", "asn1crypto.core",
    # Hashing
    "xxhash", "blake3", "mmh3", "numpy",
    # APK analysis
    "androguard", "androguard.core", "androguard.core.apk",
    "androguard.core.dex", "androguard.core.api_specific_resources",
    "androguard.misc",
    "permhash",
]
for _mod in _heavy_deps:
    if _mod not in sys.modules:
        try:
            __import__(_mod)
        except (ImportError, ModuleNotFoundError):
            sys.modules[_mod] = MagicMock()

# Stub urllib3 with a real Warning subclass (warnings.filterwarnings needs a class)
if "urllib3" not in sys.modules or isinstance(sys.modules.get("urllib3"), MagicMock):
    try:
        import urllib3  # noqa: F401
    except (ImportError, ModuleNotFoundError):
        _urllib3_mod = types.ModuleType("urllib3")
        _urllib3_exc = types.ModuleType("urllib3.exceptions")

        class _InsecureRequestWarning(UserWarning):
            pass

        _urllib3_exc.InsecureRequestWarning = _InsecureRequestWarning
        _urllib3_mod.exceptions = _urllib3_exc
        sys.modules["urllib3"] = _urllib3_mod
        sys.modules["urllib3.exceptions"] = _urllib3_exc

# Provide a functional ppdeep stub (tests call ppdeep.hash() and expect a string).
# Must overwrite the MagicMock that the loop above may have installed.
_ppdeep_existing = sys.modules.get("ppdeep")
if _ppdeep_existing is None or isinstance(_ppdeep_existing, MagicMock):
    _ppdeep_mod = types.ModuleType("ppdeep")
    _ppdeep_mod.__name__ = "ppdeep"

    def _ppdeep_hash(data):
        """Fake ssdeep hash — returns a deterministic placeholder."""
        if isinstance(data, str):
            data = data.encode("utf-8")
        if len(data) < 50:
            return None
        import hashlib
        h = hashlib.md5(data).hexdigest()
        return f"3:{h[:16]}:{h[16:]}"

    _ppdeep_mod.hash = _ppdeep_hash
    sys.modules["ppdeep"] = _ppdeep_mod

# Stub mmh3 if the C extension is not available
_mmh3_existing = sys.modules.get("mmh3")
if _mmh3_existing is None or isinstance(_mmh3_existing, MagicMock):
    _mmh3_mod = types.ModuleType("mmh3")
    _mmh3_mod.__name__ = "mmh3"

    def _mmh3_hash(data, seed=0):
        """Fake MurmurHash3 — deterministic hash using built-in hashlib."""
        import hashlib
        if isinstance(data, str):
            data = data.encode("utf-8")
        seed_bytes = (seed & 0xFFFFFFFF).to_bytes(8, "little")
        h = hashlib.md5(data + seed_bytes).digest()
        return int.from_bytes(h[:4], "little", signed=True)

    _mmh3_mod.hash = _mmh3_hash
    sys.modules["mmh3"] = _mmh3_mod

# Stub tlsh if the C extension is not available
if "tlsh" not in sys.modules:
    try:
        import tlsh as _real_tlsh  # noqa: F401
    except (ImportError, ModuleNotFoundError):
        _tlsh_mock = types.ModuleType("tlsh")
        _tlsh_mock.__name__ = "tlsh"

        def _tlsh_hash(data):
            """Fake TLSH hash — returns a deterministic placeholder.

            Returns empty string for data < 50 bytes or data with very
            low entropy (e.g. repeating patterns), mimicking the real
            TLSH library's "TNULL" behaviour.
            """
            if isinstance(data, str):
                data = data.encode("utf-8")
            if len(data) < 50:
                return ""
            # Real TLSH returns "" for low-entropy input
            if len(set(data)) < 8:
                return ""
            import hashlib
            return "T1" + hashlib.sha256(data).hexdigest()[:70].upper()

        _tlsh_mock.hash = _tlsh_hash
        sys.modules["tlsh"] = _tlsh_mock

# ---------------------------------------------------------------------------
# 2. Stub redb.settings (package) so module-level code never runs
# ---------------------------------------------------------------------------
_settings_mock = MagicMock()
_settings_mock.__name__ = "redb.settings"
sys.modules["redb.settings"] = _settings_mock
sys.modules["redb.settings.elasticsearch"] = MagicMock()
sys.modules["redb.settings.clickhouse"] = MagicMock()

# ---------------------------------------------------------------------------
# 3. Replace redb.extractors with a minimal package that does NOT eagerly
#    import every extractor (and their heavy deps).  Sub-module imports
#    like ``from redb.extractors.database_exporters import ...`` still work
#    because __path__ points to the real package directory.
# ---------------------------------------------------------------------------
_repo_root = Path(__file__).resolve().parents[2]
_extractors_pkg = types.ModuleType("redb.extractors")
_extractors_pkg.__path__ = [str(_repo_root / "redb" / "extractors")]
_extractors_pkg.__package__ = "redb.extractors"
sys.modules["redb.extractors"] = _extractors_pkg

# ---------------------------------------------------------------------------
# 4. Force-import redb submodules so that @patch('redb.workers.xxx'),
#    @patch('redb.queries.xxx'), etc. can resolve at decoration time.
#    This works because all heavy deps are already stubbed above.
# ---------------------------------------------------------------------------
import redb.logging_utils   # noqa: F401, E402
import redb.s3_utils         # noqa: F401, E402
import redb.queries          # noqa: F401, E402
import redb.workers          # noqa: F401, E402
import redb.ingestor         # noqa: F401, E402