Manish Kumar

68 papers A 1B 2C 30Journal 24Unranked 10
YearRankTypeTitle / Venue / Authors
2025 J jnl
IEEE Trans Autom. Sci. Eng.
Drew Scott, Satyanarayana G. Manyam, Isaac E. Weintraub, David W. Casbeer, Manish Kumar
2024 C conf
ACC
Drew Scott, Satyanarayana G. Manyam, David W. Casbeer, Manish Kumar, Isaac E. Weintraub
2024 J jnl
CoRR
Drew Scott, Satyanarayana G. Manyam, David W. Casbeer, Manish Kumar, Isaac E. Weintraub
2024 J jnl
CoRR
Will Ferenc, Hannah Kastein, Lauren Lieu, Ryan Wilson, Yuan Rick Huang, Jérôme Gilles, Andrea L. Bertozzi, Balaji R. Sharma, Baisravan Homchaudhuri, Subramanian Ramakrishnan, Manish Kumar
2024 C conf
ACC
Aman Kumar Singh, Noelle Boltz, Manish Kumar, Subramanian Ramakrishnan
2023 C conf
ACC
Shraddha Barawkar, Manish Kumar
2023 J jnl
IEEE Trans Autom. Sci. Eng.
Drew Scott, Satyanarayana Gupta Manyam, David W. Casbeer, Manish Kumar
2023 J jnl
CoRR
Aditya Milind Deshpande, Eric Hurd, Ali A. Minai, Manish Kumar
2023 J jnl
IEEE Trans. Cogn. Dev. Syst.
Aditya Milind Deshpande, Eric Hurd, Ali A. Minai, Manish Kumar
2022 conf
NAFIPS
Dipin Nair, Kelly Cohen, Manish Kumar
2022 conf
EMBC
Shubham Agarwal, Ishita Basu, Manish Kumar, Pariya Salami, Sydney S. Cash
2022 C conf
ACC
Bennett Breese, Manish Kumar, Michael Bolender, David W. Casbeer
2022 C conf
ACC
Drew Scott, Satyanarayana G. Manyam, David W. Casbeer, Manish Kumar, Michael J. Rothenberger, Isaac E. Weintraub
2021 C conf
ACC
James Z. Wells, Rumit Kumar, Manish Kumar
2021 J jnl
CoRR
Aditya Milind Deshpande, Ali A. Minai, Manish Kumar
2020 J jnl
CoRR
Aditya Milind Deshpande, Anil Kumar Telikicherla, Vinay Jakkali, David A. Wickelhaus, Manish Kumar, Sam Anand
2020 J jnl
CoRR
Aditya Milind Deshpande, Rumit Kumar, Ali A. Minai, Manish Kumar
2020 A conf
IROS
Rumit Kumar, Aditya Milind Deshpande, James Z. Wells, Manish Kumar
2020 J jnl
CoRR
Rumit Kumar, Aditya Milind Deshpande, James Z. Wells, Manish Kumar
2020 C conf
ACC
Drew Scott, Satyanarayana G. Manyam, David W. Casbeer, Manish Kumar
2020 C conf
ACC
Mohammadreza Radmanesh, Alireza Nemati, Manish Kumar, Donald French
2020 J jnl
CoRR
Aditya Milind Deshpande, Ali A. Minai, Manish Kumar
2020 C conf
ACC
Rumit Kumar, Mahathi Bhargavapuri, Aditya Milind Deshpande, Siddharth Sridhar, Kelly Cohen, Manish Kumar
2020 J jnl
CoRR
Rumit Kumar, Mahathi Bhargavapuri, Aditya Milind Deshpande, Siddharth Sridhar, Kelly Cohen, Manish Kumar
2020 conf
CCNC
Jose Joseph, Mohammadreza Radmanesh, Mohammad Nazmus Sadat, Rui Dai, Manish Kumar
2019 C conf
ACC
Siddharth Sridhar, Gaurang Gupta, Rumit Kumar, Manish Kumar, Kelly Cohen
2018 C conf
ACC
Shraddha Barawkar, Mohammadreza Radmanesh, Manish Kumar, Kelly Cohen
2018 J jnl
Int. J. Intell. Robotics Appl.
Gaurav Patil, Lillian Rigoli, Michael J. Richardson, Manish Kumar, Tamara Lorenz
2018 J jnl
Unmanned Syst.
Mohammadreza Radmanesh, Manish Kumar, Paul H. Guentert, Mohammad Sarim
2018 J jnl
Ad Hoc Networks
Rui Dai, Sneha Fotedar, Mohammadreza Radmanesh, Manish Kumar
2018 C conf
ACC
Aditya Milind Deshpande, Rumit Kumar, Mohammadreza Radmanesh, Nalini Veerabhadrappa, Manish Kumar, Ali A. Minai
2017 C conf
ACC
Mohammadreza Radmanesh, Paul H. Guentert, Manish Kumar, Kelly Cohen
2017 J jnl
Swarm Intell.
Adam Schroeder, Subramanian Ramakrishnan, Manish Kumar, Brian Trease
2016 C conf
ACC
Adam M. Schroeder, Manish Kumar
2016 B conf
GLOBECOM
Kevon Scott, Rui Dai, Manish Kumar
2016 C conf
ACC
Mohammadreza Radmanesh, Manish Kumar, Alireza Nemati, Mohammad Sarim
2015 B conf
IC2E
Prasad Calyam, Sripriya Seetharam, Baisravan Homchaudhuri, Manish Kumar
2014 C conf
ACC
Baisravan Homchaudhuri, Manish Kumar
2013 J jnl
J. Intell. Robotic Syst.
Elad Kivelevitch, Kelly Cohen, Manish Kumar
2013 C conf
ACC
Sushil Garg, Balaji R. Sharma, Kelly Cohen, Manish Kumar
2013 J jnl
Swarm Evol. Comput.
Koushik S. Venkata Narasimha, Elad Kivelevitch, Balaji R. Sharma, Manish Kumar
2013 J jnl
Robotica
Balaji R. Sharma, Subramanian Ramakrishnan, Manish Kumar
2012 conf
Infotech@Aerospace
Elad Kivelevitch, Kelly Cohen, Manish Kumar
2012 C conf
ACC
Koushik S. Venkata Narasimha, Elad Kivelevitch, Manish Kumar
2012 conf
Infotech@Aerospace
Elad Kivelevitch, Kelly Cohen, Manish Kumar
2012 C conf
ACC
Baisravan Homchaudhuri, Manish Kumar, Vijay K. Devabhaktuni
2012 conf
Infotech@Aerospace
Elad Kivelevitch, Kelly Cohen, Manish Kumar
2012 C conf
ACC
Jérôme Gilles, Balaji R. Sharma, Will Ferenc, Hannah Kastein, Lauren Lieu, Ryan Wilson, Yuan Rick Huang, Andrea L. Bertozzi, Baisravan Homchaudhuri, Subramanian Ramakrishnan, Manish Kumar
2012 conf
Infotech@Aerospace
Robert Charvat, Rodger Ozburn, Scott Bushong, Kelly Cohen, Manish Kumar
2012 J jnl
Int. J. Robotics Autom.
Sheng Zhao, Manish Kumar
2012 conf
Infotech@Aerospace
Chelsea Sabo, Manish Kumar, Kelly Cohen, Derek B. Kingston
2011 C conf
ACC
Koushik S. Venkata Narasimha, Manish Kumar
2011 J jnl
J. Aerosp. Comput. Inf. Commun.
Manish Kumar, Kelly Cohen, Baisravan Homchaudhuri
2011 C conf
ACC
Sheng Zhao, Subramanian Ramakrishnan, Manish Kumar
2011 C conf
ACC
Baisravan Homchaudhuri, Manish Kumar
2011 conf
Complex Adaptive Systems
Elad Kivelevitch, Kelly Cohen, Manish Kumar
2010 C conf
ACC
Sheng Zhao, Manish Kumar
2010 C conf
ACC
Baisravan Homchaudhuri, Manish Kumar, Kelly Cohen
2010 J jnl
IEEE Trans. Autom. Control.
Manish Kumar, Devendra P. Garg, Vijay Kumar
2009 J jnl
Control. Intell. Syst.
Manish Kumar, Devendra P. Garg
2008 ch.
Wiley Encyclopedia of Computer Science and Engineering
Devendra P. Garg, Manish Kumar
2008 C conf
ACC
Manish Kumar, Dejan Milutinovic, Devendra P. Garg
2008 C conf
ACC
Manish Kumar, Devendra P. Garg, Vijay Kumar
2006 C conf
ACC
Manish Kumar, Devendra P. Garg, Randy A. Zachery
2005 J jnl
Ind. Robot
Manish Kumar, Devendra P. Garg
2004 C conf
ACC
Manish Kumar, Devendra P. Garg
2003 conf
ISIC
Manish Kumar, Devendra P. Garg
2002 C conf
ACC
Devendra P. Garg, Manish Kumar
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)