Skip to content

test: add unit tests for sslconf and manager modules - #765

Merged
deepin-bot[bot] merged 1 commit into
linuxdeepin:masterfrom
pengfeixx:feat/unit-tests-sslconf-manager
Jul 14, 2026
Merged

test: add unit tests for sslconf and manager modules#765
deepin-bot[bot] merged 1 commit into
linuxdeepin:masterfrom
pengfeixx:feat/unit-tests-sslconf-manager

Conversation

@pengfeixx

Copy link
Copy Markdown
Contributor

Add 216 unit tests for infrastructure/sslconf (108 tests, coverage 26%->95.7%) and lib/common/manager (108 tests, coverage 27.9%->81.9%).

为 infrastructure/sslconf 和 lib/common/manager 模块补充单元测试, sslconf 覆盖率从 26% 提升至 95.7%,manager 从 27.9% 提升至 81.9%。

Log: 补充 sslconf 和 manager 模块单元测试
Influence: 不影响现有功能,仅新增测试代码,提升模块测试覆盖率至 80% 以上。

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @pengfeixx, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@github-actions

Copy link
Copy Markdown
  • 敏感词检查失败, 检测到1个文件存在敏感词
详情
{
    "tests/manager/transferworker_test.cpp": [
        {
            "line": "    QString token = \"invalid.token.value\";",
            "line_number": 253,
            "rule": "S106",
            "reason": "Var naming | 2c1a8db034"
        }
    ]
}

@pengfeixx
pengfeixx force-pushed the feat/unit-tests-sslconf-manager branch from bf61d0b to 68ce64c Compare July 14, 2026 06:46
@github-actions

Copy link
Copy Markdown
  • 敏感词检查失败, 检测到1个文件存在敏感词
详情
{
    "tests/manager/transferworker_test.cpp": [
        {
            "line": "    QString token = \"invalid.token.value\";",
            "line_number": 253,
            "rule": "S106",
            "reason": "Var naming | 2c1a8db034"
        }
    ]
}

@pengfeixx
pengfeixx force-pushed the feat/unit-tests-sslconf-manager branch from 68ce64c to c8837fd Compare July 14, 2026 07:14
@github-actions

Copy link
Copy Markdown
  • 敏感词检查失败, 检测到1个文件存在敏感词
详情
{
    "tests/manager/transferworker_test.cpp": [
        {
            "line": "    QString token = \"invalid.token.value\";",
            "line_number": 253,
            "rule": "S106",
            "reason": "Var naming | 2c1a8db034"
        }
    ]
}

@pengfeixx
pengfeixx force-pushed the feat/unit-tests-sslconf-manager branch from c8837fd to 53f1358 Compare July 14, 2026 07:25
Add 216 unit tests for infrastructure/sslconf (108 tests, coverage
26%->95.7%) and lib/common/manager (108 tests, coverage 27.9%->81.9%).

为 infrastructure/sslconf 和 lib/common/manager 模块补充单元测试,
sslconf 覆盖率从 26% 提升至 95.7%,manager 从 27.9% 提升至 81.9%。

Log: 补充 sslconf 和 manager 模块单元测试
Influence: 不影响现有功能,仅新增测试代码,提升模块测试覆盖率至 80% 以上。
@pengfeixx
pengfeixx force-pushed the feat/unit-tests-sslconf-manager branch from 53f1358 to 37f9fe2 Compare July 14, 2026 07:27
@deepin-ci-robot

Copy link
Copy Markdown

deepin pr auto review

★ 总体评分:75分

■ 【总体评价】

代码实现了单元测试框架搭建及异常处理增强,但生产代码存在侵入式测试反模式
逻辑正确但因生产代码侵入式测试及stub代码可读性差扣25分

■ 【详细分析】

  • 1.语法逻辑(基本正确)✓

CMakeLists.txt中宏定义顺序调整正确,确保测试宏在源码编译前生效。sessionworker.cpp和transferworker.cpp中新增的异常捕获逻辑正确,能够有效防止测试时的崩溃。stub.h中的内存操作和汇编指令逻辑基本正确,支持多架构。
潜在问题:stub.h中的distanceof函数在计算指针差值时可能存在整数溢出风险,但在测试环境中影响有限
建议:对distanceof函数中的指针差值计算进行更严格的边界检查

  • 2.代码质量(较差)✕

生产代码sessionworker.cpp和transferworker.cpp中直接使用#ifdef ENABLE_AUTO_UNIT_TEST侵入业务逻辑,违反开闭原则,增加了代码复杂度和维护成本。stub.h代码缺乏详细注释,宏定义密集,可读性较差。测试代码中存在部分硬编码路径。
潜在问题:生产代码与测试代码耦合度高;stub.h维护困难
建议:移除生产代码中的#ifdef,采用依赖注入或gmock等Mock框架替代stub.h的底层hook方式;为stub.h增加详细注释

  • 3.代码性能(无性能问题)✓

stub.h中的mprotect和memcpy操作在测试环境中性能开销可忽略。单元测试使用临时文件和QSignalSpy,性能良好。
建议:保持当前性能表现

  • 4.代码安全(存在0个安全漏洞)✓

漏洞对比统计:新增漏洞 0 个,减少漏洞 0 个,持平 0 个
总体风险描述:本次修改主要涉及测试代码新增和生产代码的异常捕获增强,未引入新的安全漏洞。stub.h中的内存权限修改和指令覆写属于测试框架的预期行为,不构成安全漏洞。
建议:继续保持安全编码规范

■ 【改进建议代码示例】

// sessionworker.cpp 修复示例:移除生产代码中的条件编译,统一进行异常捕获
case RPC_ERROR: {
    WLOG << "error remote code: " << msg;
    int code = 0;
    try {
        code = std::stoi(msg);
    } catch (...) {
        ELOG << "invalid error code: " << msg;
        emit onConnectChanged(state, addr);
        return false;
    }
    if (asio::error::host_unreachable == code
        || asio::error::timed_out == code) {
        ELOG << "ping failed or timeout: " << msg;
    }
    // ...
}

// transferworker.cpp 修复示例:移除生产代码中的条件编译,统一进行异常捕获
bool TransferWorker::tryStartReceive(QStringList names, QString &ip, int port, QString &accessToken, QString &dirname) {
    // ...
    std::vector<std::string> webs;
    try {
        webs = _file_client->parseWeb(accessToken);
    } catch (...) {
        ELOG << "invalid access token, JWT parse failed";
        return false;
    }
    // ...
}

@deepin-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: lzwind, pengfeixx

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@pengfeixx

Copy link
Copy Markdown
Contributor Author

/forcemerge

@deepin-bot

deepin-bot Bot commented Jul 14, 2026

Copy link
Copy Markdown

This pr force merged! (status: unstable)

@deepin-bot
deepin-bot Bot merged commit c65186e into linuxdeepin:master Jul 14, 2026
20 of 22 checks passed
@pengfeixx
pengfeixx deleted the feat/unit-tests-sslconf-manager branch July 14, 2026 07:34
@github-actions

Copy link
Copy Markdown
  • 敏感词检查失败, 检测到1个文件存在敏感词
详情
{
    "tests/manager/transferworker_test.cpp": [
        {
            "line": "    QString token = \"invalid.token.value\";",
            "line_number": 256,
            "rule": "S106",
            "reason": "Var naming | 2c1a8db034"
        }
    ]
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants