Xiaojian Liu

64 papers A 1B 2C 5Misc 2Journal 29Unranked 24
YearRankTypeTitle / Venue / Authors
2026 J jnl
Intell. Data Anal.
Tongyu Wu, Xiaojian Liu, Yi Zhu, Yun Li, Yun-Hao Yuan, Jipeng Qiang
2026 J jnl
Eng. Appl. Artif. Intell.
Chenqi Hua, Xiaojian Liu, Yi Zhu, Chaowei Zhang, Yun Li, Yunhao Yuan, Jipeng Qiang
2025 J jnl
IEEE Access
Yechuan Lin, Lin Wang, Zhixuan Zhang, Xiaojian Liu
2025 J jnl
CoRR
Bingkun Guo, Wentian Li, Xiaojian Liu, Jiaqi Luo, Zibin Yu, Dalong Dong, Shuyou Zhang, Yiming Zhang
2025 J jnl
IEEE Trans. Consumer Electron.
Lanlan Cui, Fei Wu, Xiaojian Liu, Meng Zhang, Zhonghai Lu, Miao Li, Changsheng Xie
2025 J jnl
J. Netw. Syst. Manag.
Yechuan Lin, Xianglan Jin, Xiaojian Liu, Zhixuan Zhang, Amin Rezaeipanah
2024 conf
IWESQ@APSEC
Yimeng Liu, Xiaojian Liu, Xuejun Yu
2024 J jnl
Comput. Biol. Medicine
Hehe Wu, Xiaojian Liu, Yi Fang, Yang Yang, Yan Huang, Xiaoyong Pan, Hong-Bin Shen
2024 conf
ISCID
Xiling Liu, Xiaojian Liu, Yi Liu
2024 conf
BIBM
Yichong Li, Xiaojian Liu, Fan Cheng, Xiaoyong Pan, Yang Yang
2024 J jnl
Int. J. Appl. Earth Obs. Geoinformation
Xiqi Wang, Shunyi Zheng, Xiaohu Lin, Qiyuan Zhang, Xiaojian Liu
2023 J jnl
Frontiers Comput. Sci.
Xiaojian Liu, Yi Zhu, Xindong Wu
2022 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Lanlan Cui, Xiaojian Liu, Fei Wu, Zhonghai Lu, Changsheng Xie
2022 J jnl
CCF Trans. Pervasive Comput. Interact.
Lekai Zhang, Ming Li, Yan Sun, Xiaojian Liu, Boqun Xu, Lingyan Zhang
2022 conf
DSIE
Fangwei Xu, Xiaojian Liu
2022 J jnl
J. Supercomput.
Yonghua Zhang, Hongxu Jiang, Xiaojian Liu, Haiheng Cao, Yu Du
2022 J jnl
ACM Trans. Design Autom. Electr. Syst.
Lanlan Cui, Fei Wu, Xiaojian Liu, Meng Zhang, Renzhi Xiao, Changsheng Xie
2022 J jnl
ISPRS Int. J. Geo Inf.
Xiaojian Liu, Ourania Kounadi, Raúl Zurita-Milla
2020 conf
ICKG
Xian Zu, Fei Xie, Xiaojian Liu
2020 J jnl
IEEE Access
Jianfeng Wu, Baixi Xing, Huahao Si, Jian Dou, Jin Wang, Yuning Zhu, Xiaojian Liu
2020 conf
ICKG
Xiaojian Liu, Yi Zhu, Shengwei Ji
2019 J jnl
Clust. Comput.
Zhilin Zhu, Xiaojian Liu
2019 J jnl
J. Biomed. Informatics
Shanen Chen, Jian Xu, Yongsheng Wu, Xin Wang, Shisong Fang, Jinquan Cheng, Hanwu Ma, Ren-li Zhang, Yachuan Liu, Li Zhang, Xi Zhang, Lili Chen, Xiaojian Liu
2019 conf
IWESQ@APSEC
Yangyang Zhang, Xiaojian Liu, Xun Sun
2019 J jnl
Grey Syst. Theory Appl.
Xiaoyi He, Liping Li, Xiaojian Liu, Yongsheng Wu, Shujiang Mei, Zhen Zhang
2019 C conf
ICCD
Lanlan Cui, Fei Wu, Xiaojian Liu, Meng Zhang, Changsheng Xie
2018 C conf
SNPD
Xiaojian Liu, Yangyang Zhang, Xiuming Yu, Zengzhi Liu
2018 conf
ICCNS
Xiaojian Liu, Xiaofeng Dong, Qian Lei
2018 conf
ICBK
Yingchun Shan, Chenyang Bu, Xiaojian Liu, Shengwei Ji, Lei Li
2018 C conf
SNPD
Yangyang Zhang, Xiaojian Liu, Zengzhi Liu, Wenpeng Li
2017 C conf
ICIS
Guodong Wang, Xiaojian Liu
2017 C conf
ICIS
Guodong Wang, Xiaojian Liu
2017 conf
WCSP
Xiaojian Liu, Yuejun Wei, Ming Jiang
2017 conf
ISCID (2)
Xiangyang She, Tao Lv, Xiaojian Liu
2017 J jnl
计算机科学
Xinkao Liao, Lisheng Wang, Xiaojian Liu, Xiaojie Xu
2016 conf
ICDM Workshops
Lei Sang, Fei Xie, Xiaojian Liu, Xindong Wu
2016 J jnl
计算机科学
Xiaojian Liu, Lisheng Wang, Xinkao Liao
2015 J jnl
IEEE Trans. Veh. Technol.
Yang Zhang, Lihua Pang, Xiao Liang, Xiaojian Liu, Rui Chen, Jiandong Li
2014 conf
WCSP
Jingjing Zhao, Wei Xu, Hua Zhang, Xiaohu You, Xiaojian Liu
2014 J jnl
Concurr. Comput. Pract. Exp.
Chunqi Tian, Xiaojian Liu, Lisheng Wang, Shihong Zou
2014 J jnl
Comput. Networks
Chunqi Tian, Baijian Yang, Jidong Zhong, Xiaojian Liu
2012 A conf
ICST
Zhiqiang Zhang, Xiaojian Liu, Jian Zhang
2012 conf
ISCTCS
Chuanyi Liu, Xiaojian Liu, Lei Wan
2011 B conf
TrustCom
Xiaojian Liu, Zhixue Wang
2011 J jnl
IEICE Trans. Commun.
Xiaojun Sun, Xiaojian Liu, Ming Jiang, Pengcheng Zhu, Chunming Zhao
2010 conf
BIC-TA
Yan Sun, Wanliang Wang, Xiaojian Liu
2010 conf
TTSS
Xiaojian Liu, Zhilin Zhu
2010 Misc conf
ICNC
Yan Sun, Wanliang Wang, Xiaojian Liu
2009 J jnl
Formal Aspects Comput.
Liang Zhao, Xiaojian Liu, Zhiming Liu, Zongyan Qiu
2009 J jnl
IEEE Commun. Lett.
Xiaojian Liu, Xiaofu Wu, Chunming Zhao
2008 conf
CIS (2)
Xiaojian Liu, Xuejun Liu, Jianxin Li
2008 conf
ICYCS
Xiaojian Liu, Xuejun Liu, Jianxin Li, Yanzhi Zhao, Zhixue Wang
2006 conf
PROLAMAT
Guiqin Li, Xiaojian Liu, Qinfeng Yuan, Minglun Fang
2006 conf
APWeb Workshops
Xin Wang, Changsong Sun, Xiaojian Liu, Bo Xu
2006 Misc conf
International Conference on Computational Science (1)
Min Ma, Shiyao Jin, Chaoqun Ye, Xiaojian Liu
2006 conf
PROLAMAT
Wenbin Wang, Tao Yu, Xiaojian Liu, Tan Liu
2006 conf
Refine@ICFEM
Xiaojian Liu, Zhiming Liu, Liang Zhao
2006 conf
PROLAMAT
Xiaojian Liu, Tao Yu, Wenbin Wang
2003 B conf
CCGRID
Luc Moreau, Simon Miles, Carole A. Goble, Robert Mark Greenwood, Vijay Dialani, Matthew Addis, Mahmut Nedim Alpdemir, Rich Cawley, David De Roure, Justin Ferris, Robert J. Gaizauskas, Kevin Glover, Chris Greenhalgh, Peter Li, Xiaojian Liu, Phillip W. Lord, Michael Luck, Darren Marvin, Thomas M. Oinn, Norman W. Paton, Steve Pettifer, Milena V. Radenkovic, Angus Roberts, Alan J. Robinson, Tom Rodden, Martin Senger, Nick Sharman, Robert Stevens, Brian Warboys, Anil Wipat, Chris Wroe
1999
Xiaojian Liu
1996 J jnl
IEEE Trans. Signal Process.
Xiaojian Liu, Leonard T. Bruton
1995 J jnl
Signal Process.
Xiaojian Liu, Leonard T. Bruton
1994 conf
ICASSP (6)
Xiaojian Liu, Leonard T. Bruton
1990 J jnl
Multidimens. Syst. Signal Process.
Xiaojian Liu, Alfred Fettweis
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)