Xiang Sun

78 papers B 8C 2Misc 2Journal 54Unranked 12
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Zhirun Li, Derek Hollenbeck, Ruikun Wu, Michelle Sherman, Sihua Shao, Xiang Sun, Mostafa Hassanalian
2025 J jnl
ACM Trans. Sens. Networks
Zhongcheng Wei, Wei Chen, Shuli Ning, Weidong Lin, Nan Li, Bin Lian, Xiang Sun, Jijun Zhao
2025 J jnl
IEEE Trans. Parallel Distributed Syst.
Daniel Manu, Abee Alazzwi, Jingjing Yao, Youzuo Lin, Xiang Sun
2025 J jnl
IEEE Wirel. Commun.
Michelle Sherman, Sihua Shao, Xiang Sun, Jun Zheng
2025 J jnl
IEEE Trans. Mob. Comput.
Liangkun Yu, Zhirun Li, Nirwan Ansari, Xiang Sun
2025 J jnl
IEEE Internet Things J.
Jingjing Yao, Semih Cal, Xiang Sun
2024 J jnl
Phys. Commun.
Zishan Huang, Xiang Sun, Yuchen Wang, Zhongcheng Wei, Chao Wang, Yongjian Fan, Jijun Zhao
2024 J jnl
IEEE Internet Things J.
Liangshun Wu, Junsuo Qu, Shilin Li, Cong Zhang, Jianbo Du, Xiang Sun, Jiehan Zhou
2024 J jnl
Comput. Commun.
Zhongcheng Wei, Wei Chen, Weitao Tao, Shuli Ning, Bin Lian, Xiang Sun, Jijun Zhao
2024 conf
ICC
Semih Cal, Xiang Sun, Jingjing Yao
2024 J jnl
CoRR
Liangkun Yu, Xiang Sun, Rana Albelaihi, Chaeeun Park, Sihua Shao
2024 conf
ICC Workshops
Semih Cal, Xiang Sun, Jingjing Yao
2024 conf
ICC Workshops
Daniel Manu, Youzuo Lin, Jingjing Yao, Zhirun Li, Xiang Sun
2024 J jnl
IEEE ACM Trans. Comput. Biol. Bioinform.
Daniel Manu, Jingjing Yao, Wuji Liu, Xiang Sun
2024 Misc conf
ICNC
Jingjing Yao, Semih Cal, Xiang Sun
2024 conf
ICC Workshops
Liangkun Yu, Zhirun Li, Jingjing Yao, Xiang Sun
2024 conf
ICC Workshops
Kasun Prabhath, Xiang Sun, Sudharman K. Jayaweera
2023 J jnl
IEEE Trans. Netw. Sci. Eng.
Liangkun Yu, Xiang Sun, Sihua Shao, Yougan Chen, Rana Albelaihi
2023 J jnl
IEEE Internet Things J.
Rana Albelaihi, Akhil Alasandagutti, Liangkun Yu, Jingjing Yao, Xiang Sun
2023 C conf
HPSR
Jingjing Yao, Xiang Sun
2023 conf
WOCC
Xiang Sun, Liangkun Yu, Abee Alazzwi
2023 J jnl
CoRR
Daniel Manu, Jingjing Yao, Wuji Liu, Xiang Sun
2023 B conf
PIMRC
Kasun Prabhath, Xiang Sun, Sudharman K. Jayaweera, Daniel Manu, Karthik Kakaraparty, Pallav Kumar Sah, Ifana Mahbub, Jaya Sravani Mandapaka, Sudesna Das Rochi, Mahdin Meraz, Kamesh Namuduri
2023 J jnl
IEEE Trans. Mob. Comput.
Xiang Sun, Liangkun Yu, Tianrun Zhang
2023 J jnl
Future Internet
Liangkun Yu, Xiang Sun, Rana Albelaihi, Chen Yi
2023 J jnl
IEEE Access
Jean-Elie Pierre, Xiang Sun, Rafael Fierro
2023 J jnl
IEEE Internet Things J.
Michelle Sherman, Sihua Shao, Xiang Sun, Jun Zheng
2022 J jnl
Sensors
Bin Lian, Zhongcheng Wei, Xiang Sun, Zhihua Li, Jijun Zhao
2022 B conf
GLOBECOM
Zeinab Akhavan, Mona Esmaeili, Babak Badnava, Mohammad Yousefi, Xiang Sun, Michael Devetsikiotis, Payman Zarkesh-Ha
2022 J jnl
CoRR
Zeinab Akhavan, Mona Esmaeili, Babak Badnava, Mohammad Yousefi, Xiang Sun, Michael Devetsikiotis, Payman Zarkesh-Ha
2022 B conf
GLOBECOM
Rana Albelaihi, Liangkun Yu, Warren D. Craft, Xiang Sun, Chonggang Wang, Robert Gazda
2022 J jnl
IEEE Internet Things J.
Liangkun Yu, Rana Albelaihi, Xiang Sun, Nirwan Ansari, Michael Devetsikiotis
2022 J jnl
CoRR
Liangkun Yu, Xiang Sun, Rana Albelaihi, Chen Yi
2022 conf
GLOBECOM (Workshops)
Xiang Sun, Tianrun Zhang, Sihua Shao, Bryan Tice, Paul Tice, Sudharman K. Jayaweera
2022 conf
DARS
Jean-Elie Pierre, Xiang Sun, David K. Novick, Rafael Fierro
2022 J jnl
IEEE Internet Things J.
Tianrun Zhang, Xiang Sun, Chonggang Wang
2022 J jnl
IEEE Trans. Commun.
Chen Yi, Xiang Sun, Tianqi Zhang, Chunguo Li, Yong Li, Zhi Ding
2021 B conf
GLOBECOM
Rana Albelaihi, Xiang Sun, Warren D. Craft, Liangkun Yu, Chonggang Wang
2021 J jnl
CoRR
Liangkun Yu, Xiang Sun, Sihua Shao, Yougan Chen, Rana Albelaihi
2021 J jnl
IEEE Access
Jianying Zhu, Yougan Chen, Xiang Sun, Jianming Wu, Zhenwen Liu, Xiaomei Xu
2021 J jnl
Digit. Commun. Networks
Xiang Sun, Liangkun Yu, Yin Yang
2021 conf
MILCOM
Michelle Sherman, Sihua Shao, Xiang Sun, Jun Zheng
2020 J jnl
IEEE Trans. Netw. Sci. Eng.
Di Wu, Xiang Sun, Nirwan Ansari
2020 J jnl
IEEE Trans. Veh. Technol.
Di Wu, Xiang Sun, Nirwan Ansari
2020 Misc conf
SEC
Xiang Sun, Rana Albelaihi, Zeinab Akhavan
2020 J jnl
ICT Express
Nirwan Ansari, Di Wu, Xiang Sun
2020 J jnl
IEEE Trans. Cloud Comput.
Xiang Sun, Nirwan Ansari
2020 J jnl
IEEE Trans. Veh. Technol.
Xiang Sun, Nirwan Ansari, Rafael Fierro
2020 J jnl
IEEE Access
Yougan Chen, Xinrui Zhang, Xiang Sun, Yi Tao, Xiaomei Xu
2020 J jnl
IEEE Access
Meihuang Wang, Yougan Chen, Xiang Sun, Fanggui Xiao, Xiaomei Xu
2020 J jnl
IEEE Wirel. Commun. Lett.
Zhiqun Gu, Jiawei Zhang, Xiang Sun, Yuefeng Ji
2019 B conf
GLOBECOM
Di Wu, Xiang Sun, Nirwan Ansari
2019 J jnl
IEEE Trans. Cloud Comput.
Xiang Sun, Nirwan Ansari
2019 J jnl
IEEE Wirel. Commun.
Nirwan Ansari, Qiang Fan, Xiang Sun, Liang Zhang
2018 J jnl
IEEE Internet Things J.
Xiang Sun, Nirwan Ansari
2018 conf
ICC
Xiang Sun, Nirwan Ansari
2018 J jnl
IEICE Trans. Commun.
Nirwan Ansari, Xiang Sun
2018 J jnl
IEEE Access
Zhiqun Gu, Jiawei Zhang, Yuefeng Ji, Lin Bai, Xiang Sun
2018 conf
Sarnoff Symposium
Shuai Zhang, Xiang Sun, Nirwan Ansari
2018 J jnl
IEEE Trans. Netw. Serv. Manag.
Xiang Sun, Nirwan Ansari
2017 J jnl
IEEE Commun. Lett.
Qiang Fan, Nirwan Ansari, Xiang Sun
2017 J jnl
IEEE Netw.
Xiang Sun, Nirwan Ansari
2017 B conf
GLOBECOM
Xiang Sun, Nirwan Ansari
2017 J jnl
CoRR
Xiang Sun, Nirwan Ansari
2017 J jnl
IEEE Commun. Lett.
Xiang Sun, Nirwan Ansari
2017 J jnl
CoRR
Xiang Sun, Nirwan Ansari
2016 J jnl
IEEE Commun. Mag.
Xiang Sun, Nirwan Ansari
2016 J jnl
CoRR
Xiang Sun, Nirwan Ansari
2016 J jnl
IEEE Commun. Surv. Tutorials
Xiang Sun, Nirwan Ansari, Ruopeng Wang
2016 conf
ICC
Xiang Sun, Nirwan Ansari
2015 B conf
WCNC
Xiang Sun, Nirwan Ansari
2015 C conf
CloudCom
Xiang Sun, Nirwan Ansari, Qiang Fan
2015 J jnl
CoRR
Xiang Sun, Nirwan Ansari, Qiang Fan
2015 J jnl
CoRR
Xiang Sun, Nirwan Ansari
2013 B conf
GLOBECOM
Xiang Sun, Nirwan Ansari
2011 J jnl
Wirel. Sens. Netw.
Jijun Zhao, Xiang Sun, Zhongcheng Wei, Zhihua Li
2011 J jnl
J. Commun.
Jijun Zhao, Zhongcheng Wei, Zhihua Li, Xiang Sun
2010 J jnl
Wirel. Sens. Netw.
Jijun Zhao, Hua Li, Zhiyuan Tang, Xiang Sun
tests/unit/test_extractor_registry.py
← Index tests/unit/test_extractor_registry.py python
"""
Unit tests for the extractor registry (redb/extractor_registry.py).

Verifies that all file-type groups load correctly, return the expected
extractors, and that lookup/filtering logic works as intended.
"""
import pytest

from redb.extractor_registry import (
    get_filetype_modules,
    get_extractor_class,
    FILETYPE_TO_GROUP,
    _REGISTRY,
)

pytestmark = [pytest.mark.unit]


# ============================================================================
# get_filetype_modules — group loading
# ============================================================================

class TestGetFiletypeModules:

    @pytest.mark.parametrize("filetype,expected_names", [
        ("pebin", [
            "PEFeaturesExtractor", "PEImportExtractor", "PEResourceExtractor",
            "PEOverlayExtractor", "PESectionExtractor", "PESignatureExtractor",
            "PEExtraFindings", "PEInconstistencyTestsExtractor", "PEDotNetExtractor",
        ]),
        ("elf", [
            "ELFFeaturesExtractor", "ELFSegmentExtractor", "ELFSectionExtractor",
            "ELFDependencyExtractor", "ELFSymbolExtractor", "ELFImportExtractor",
            "ELFExportExtractor", "ELFRelocationExtractor", "ELFNotesExtractor",
        ]),
        ("macho", [
            "MachOFeaturesExtractor", "MachOSegmentExtractor",
            "MachOImportExtractor", "MachOExportExtractor",
            "MachODylibExtractor", "MachOSignatureExtractor",
        ]),
        ("apk", [
            "APKFeaturesExtractor", "APKManifestExtractor",
            "APKPermissionsExtractor", "APKSignatureExtractor",
            "APKDexExtractor", "APKResourceExtractor",
            "APKNativeLibExtractor", "APKInconsistencyTestsExtractor",
        ]),
    ])
    def test_loads_all_extractors_for_filetype(self, filetype, expected_names):
        """Each filetype group should return all its registered extractors."""
        modules = get_filetype_modules(filetype)
        names = [m.__name__ for m in modules]
        for expected in expected_names:
            assert expected in names, f"{expected} missing from {filetype} modules"

    def test_apk_excludes_decompilers(self):
        """get_filetype_modules should not include DecompileAPK."""
        modules = get_filetype_modules("apk")
        names = [m.__name__ for m in modules]
        assert "DecompileAPK" not in names

    def test_unknown_filetype_returns_empty(self):
        """An unrecognized filetype should return an empty list."""
        assert get_filetype_modules("unknown_format") == []

    def test_returned_classes_are_callable(self):
        """All returned extractor classes should be callable (i.e., actual classes)."""
        for filetype in FILETYPE_TO_GROUP:
            for cls in get_filetype_modules(filetype):
                assert callable(cls), f"{cls} is not callable"


# ============================================================================
# get_extractor_class — single lookup
# ============================================================================

class TestGetExtractorClass:

    def test_finds_pe_extractor(self):
        cls = get_extractor_class("PEFeaturesExtractor")
        assert cls is not None
        assert cls.__name__ == "PEFeaturesExtractor"

    def test_finds_elf_extractor(self):
        cls = get_extractor_class("ELFSectionExtractor")
        assert cls is not None
        assert cls.__name__ == "ELFSectionExtractor"

    def test_finds_macho_extractor(self):
        cls = get_extractor_class("MachOSignatureExtractor")
        assert cls is not None
        assert cls.__name__ == "MachOSignatureExtractor"

    def test_finds_apk_extractor(self):
        cls = get_extractor_class("APKDexExtractor")
        assert cls is not None
        assert cls.__name__ == "APKDexExtractor"

    def test_finds_decompile_apk(self):
        cls = get_extractor_class("DecompileAPK")
        assert cls is not None
        assert cls.__name__ == "DecompileAPK"

    def test_returns_none_for_unknown(self):
        assert get_extractor_class("NonExistentExtractor") is None


# ============================================================================
# Registry completeness
# ============================================================================

class TestRegistryCompleteness:

    def test_all_filetypes_have_registry_group(self):
        """Every filetype in FILETYPE_TO_GROUP should map to a valid registry group."""
        for filetype, group in FILETYPE_TO_GROUP.items():
            assert group in _REGISTRY, f"filetype {filetype} maps to unknown group {group}"

    def test_all_registry_groups_are_reachable(self):
        """Every registry group should be reachable via at least one filetype."""
        reachable = set(FILETYPE_TO_GROUP.values())
        for group in _REGISTRY:
            assert group in reachable, f"registry group {group} has no filetype mapping"


# ============================================================================
# Integration with workers.get_module_by_name
# ============================================================================

class TestWorkersGetModuleByName:

    def test_resolves_common_extractor(self):
        from redb.workers import get_module_by_name
        cls = get_module_by_name("BasicPropertiesExtractor")
        assert cls is not None
        assert cls.__name__ == "BasicPropertiesExtractor"

    def test_resolves_type_specific_extractor(self):
        from redb.workers import get_module_by_name
        cls = get_module_by_name("PEFeaturesExtractor")
        assert cls is not None
        assert cls.__name__ == "PEFeaturesExtractor"

    def test_resolves_decompile_apk(self):
        from redb.workers import get_module_by_name
        cls = get_module_by_name("DecompileAPK")
        assert cls is not None

    def test_returns_none_for_unknown(self):
        from redb.workers import get_module_by_name
        assert get_module_by_name("BogusExtractor") is None