Fix code quality: trailing whitespace, unused imports, clippy warnings
- Fix trailing whitespace in kex.rs and s3.rs - Add missing KexProposal import in kex_complete.rs - Auto-fix clippy warnings across all crates - All 153 tests pass
This commit is contained in:
441
data/sftp_client_test_recommendations.md
Normal file
441
data/sftp_client_test_recommendations.md
Normal file
@@ -0,0 +1,441 @@
|
||||
# SFTP Client 测试建议与分析
|
||||
|
||||
**测试目标**:验证 MarkBaseSSH SFTP 实现(Phase 7)的兼容性和稳定性
|
||||
**测试环境**:MarkBaseSSH server (port 2024) + macOS client
|
||||
**测试用户**:demo (password: demo123)
|
||||
|
||||
---
|
||||
|
||||
## 推荐测试方案 ⭐⭐⭐⭐⭐
|
||||
|
||||
### 方案 1: OpenSSH sftp client(必须测试)
|
||||
|
||||
**推荐等级**:⭐⭐⭐⭐⭐ **最高优先级**
|
||||
|
||||
**理由**:
|
||||
- ✅ OpenSSH 是标准实现,MarkBaseSSH 必须完全兼容
|
||||
- ✅ macOS 内置,无需额外安装
|
||||
- ✅ 命令行工具,适合自动化测试
|
||||
- ✅ 完整的 SFTP 协议支持(SSH_FXP_* 所有 packet)
|
||||
- ✅ 错误信息清晰,易于调试
|
||||
|
||||
**测试命令**:
|
||||
```bash
|
||||
# 基本连接测试
|
||||
sftp -P 2024 demo@127.0.0.1
|
||||
|
||||
# 批量测试脚本
|
||||
sftp -P 2024 -b /tmp/sftp_test_batch.txt demo@127.0.0.1
|
||||
|
||||
# 大文件传输测试
|
||||
sftp -P 2024 demo@127.0.0.1 <<EOF
|
||||
put /tmp/test_100mb.bin /data/test_100mb.bin
|
||||
get /data/test_100mb.bin /tmp/test_download.bin
|
||||
ls -la /data/
|
||||
bye
|
||||
EOF
|
||||
|
||||
# MD5 校验
|
||||
md5 /tmp/test_100mb.bin /tmp/test_download.bin
|
||||
```
|
||||
|
||||
**测试覆盖**:
|
||||
- ✅ SSH_FXP_INIT/VERSION(握手)
|
||||
- ✅ SSH_FXP_REALPATH(路径解析)
|
||||
- ✅ SSH_FXP_OPENDIR/READDIR(目录浏览)
|
||||
- ✅ SSH_FXP_OPEN/READ/WRITE(文件传输)
|
||||
- ✅ SSH_FXP_CLOSE(句柄管理)
|
||||
- ✅ SSH_FXP_STAT/LSTAT(文件属性)
|
||||
- ✅ SSH_FXP_MKDIR/RMDIR(目录操作)
|
||||
- ✅ SSH_FXP_REMOVE/RENAME(文件操作)
|
||||
|
||||
**预期结果**:
|
||||
- ✅ 所有操作成功
|
||||
- ✅ 文件完整性校验一致
|
||||
- ✅ 错误处理正确(权限、路径不存在等)
|
||||
|
||||
---
|
||||
|
||||
### 方案 2: Cyberduck(macOS 推荐 GUI client)
|
||||
|
||||
**推荐等级**:⭐⭐⭐⭐⭐ **强烈推荐**
|
||||
|
||||
**理由**:
|
||||
- ✅ macOS 原生应用,用户友好
|
||||
- ✅ 广泛使用,稳定可靠
|
||||
- ✅ 支持 SFTP、FTP、WebDAV 等多种协议
|
||||
- ✅ 支持大文件传输(断点续传)
|
||||
- ✅ 支持同步功能(同步本地和远程目录)
|
||||
- ✅ 书签管理(保存连接配置)
|
||||
|
||||
**安装方式**:
|
||||
```bash
|
||||
# Homebrew 安装
|
||||
brew install --cask cyberduck
|
||||
|
||||
# 或从 App Store 下载
|
||||
# https://apps.apple.com/app/cyberduck/id409222152
|
||||
```
|
||||
|
||||
**测试配置**:
|
||||
```
|
||||
协议: SFTP
|
||||
服务器: 127.0.0.1
|
||||
端口: 2024
|
||||
用户名: demo
|
||||
密码: demo123
|
||||
路径: /Users/accusys/markbase/data
|
||||
```
|
||||
|
||||
**测试覆盖**:
|
||||
- ✅ GUI 连接测试(用户交互)
|
||||
- ✅ 文件上传(拖拽上传)
|
||||
- ✅ 文件下载(拖拽下载)
|
||||
- ✅ 目录浏览(双击进入)
|
||||
- ✅ 文件删除(右键菜单)
|
||||
- ✅ 文件重命名(右键菜单)
|
||||
- ✅ 新建目录(右键菜单)
|
||||
- ✅ 大文件传输(100MB+)
|
||||
- ✅ 断点续传测试(中断后重新连接)
|
||||
|
||||
**预期结果**:
|
||||
- ✅ 连接成功,显示文件列表
|
||||
- ✅ 上传/下载正常,进度显示
|
||||
- ✅ 文件操作正常,错误提示清晰
|
||||
|
||||
---
|
||||
|
||||
### 方案 3: FileZilla(跨平台 GUI client)
|
||||
|
||||
**推荐等级**:⭐⭐⭐⭐ **推荐**
|
||||
|
||||
**理由**:
|
||||
- ✅ 跨平台(Windows, macOS, Linux)
|
||||
- ✅ 广泛使用,社区活跃
|
||||
- ✅ 支持多种协议(SFTP, FTP, FTPS)
|
||||
- ✅ 详细日志显示(packet 级别)
|
||||
- ✅ 支持并发传输(多文件同时上传/下载)
|
||||
- ✅ 站点管理器(保存连接配置)
|
||||
|
||||
**安装方式**:
|
||||
```bash
|
||||
# Homebrew 安装
|
||||
brew install --cask filezilla
|
||||
|
||||
# 或从官网下载
|
||||
# https://filezilla-project.org/download.php
|
||||
```
|
||||
|
||||
**测试配置**:
|
||||
```
|
||||
协议: SFTP - SSH File Transfer Protocol
|
||||
主机: 127.0.0.1
|
||||
端口: 2024
|
||||
用户: demo
|
||||
密码: demo123
|
||||
```
|
||||
|
||||
**测试覆盖**:
|
||||
- ✅ GUI 连接测试
|
||||
- ✅ 文件传输(上传/下载)
|
||||
- ✅ 目录浏览
|
||||
- ✅ 文件操作(删除、重命名、新建目录)
|
||||
- ✅ 并发传输测试(多文件同时传输)
|
||||
- ✅ 日志分析(查看 SFTP packet)
|
||||
- ✅ 大文件传输(100MB+)
|
||||
|
||||
**预期结果**:
|
||||
- ✅ 连接成功
|
||||
- ✅ 日志显示 SSH_FXP_* packet(验证协议实现)
|
||||
- ✅ 文件传输正常
|
||||
- ✅ 并发传输正常(Window Control 验证)
|
||||
|
||||
---
|
||||
|
||||
### 方案 4: lftp(高级命令行 client)
|
||||
|
||||
**推荐等级**:⭐⭐⭐⭐ **推荐(高级测试)**
|
||||
|
||||
**理由**:
|
||||
- ✅ 功能丰富(镜像、同步、断点续传)
|
||||
- ✅ 支持多种协议(SFTP, FTP, HTTP, HTTPS)
|
||||
- ✅ 支持并行传输(多连接并发)
|
||||
- ✅ 支持脚本化(批量操作)
|
||||
- ✅ 详细日志(调试信息)
|
||||
|
||||
**安装方式**:
|
||||
```bash
|
||||
# Homebrew 安装
|
||||
brew install lftp
|
||||
```
|
||||
|
||||
**测试命令**:
|
||||
```bash
|
||||
# 基本连接测试
|
||||
lftp sftp://demo:demo123@127.0.0.1:2024
|
||||
|
||||
# 镜像测试(同步目录)
|
||||
lftp sftp://demo:demo123@127.0.0.1:2024 <<EOF
|
||||
mirror -R /tmp/test_folder /data/test_folder
|
||||
mirror /data/test_folder /tmp/download_folder
|
||||
bye
|
||||
EOF
|
||||
|
||||
# 并行传输测试
|
||||
lftp sftp://demo:demo123@127.0.0.1:2024 <<EOF
|
||||
set sftp:parallel 4
|
||||
mput /tmp/test_*.bin
|
||||
bye
|
||||
EOF
|
||||
|
||||
# 断点续传测试
|
||||
lftp sftp://demo:demo123@127.0.0.1:2024 <<EOF
|
||||
pget -n 4 -c /data/test_100mb.bin
|
||||
bye
|
||||
EOF
|
||||
```
|
||||
|
||||
**测试覆盖**:
|
||||
- ✅ 基本操作(ls, get, put, rm)
|
||||
- ✅ 镜像功能(mirror,同步目录)
|
||||
- ✅ 并行传输(mput, mget)
|
||||
- ✅ 断点续传(pget -c)
|
||||
- ✅ 高级功能验证
|
||||
|
||||
**预期结果**:
|
||||
- ✅ 连接成功
|
||||
- ✅ 镜像同步正常
|
||||
- ✅ 并行传输正常(Window Control 验证)
|
||||
- ✅ 断点续传正常
|
||||
|
||||
---
|
||||
|
||||
## 测试优先级排序 ⭐⭐⭐⭐⭐
|
||||
|
||||
| 优先级 | Client | 类型 | 安装状态 | 测试必要性 |
|
||||
|--------|--------|------|---------|-----------|
|
||||
| **1** | OpenSSH sftp | 命令行 | ✅ 已安装 | ⭐⭐⭐⭐⭐ **必须测试** |
|
||||
| **2** | Cyberduck | GUI | ❌ 未安装 | ⭐⭐⭐⭐⭐ **强烈推荐** |
|
||||
| **3** | FileZilla | GUI | ❌ 未安装 | ⭐⭐⭐⭐ **推荐** |
|
||||
| **4** | lftp | 命令行 | ❌ 未安装 | ⭐⭐⭐⭐ **推荐(高级测试)** |
|
||||
|
||||
---
|
||||
|
||||
## 建议测试流程 ⭐⭐⭐⭐⭐
|
||||
|
||||
### Phase 1: OpenSSH sftp(必须)
|
||||
|
||||
**时间**:30 分钟
|
||||
|
||||
**步骤**:
|
||||
1. 基本连接测试(pwd, ls, cd)
|
||||
2. 文件上传测试(put)
|
||||
3. 文件下载测试(get)
|
||||
4. 文件操作测试(rm, rename, mkdir)
|
||||
5. 大文件传输测试(100MB)
|
||||
6. MD5 校验验证
|
||||
|
||||
**验证重点**:
|
||||
- ✅ SSH_FXP_* packet 完整实现
|
||||
- ✅ Window Control 正常工作
|
||||
- ✅ 文件完整性校验
|
||||
|
||||
---
|
||||
|
||||
### Phase 2: Cyberduck(强烈推荐)
|
||||
|
||||
**时间**:20 分钟
|
||||
|
||||
**步骤**:
|
||||
1. GUI 连接测试
|
||||
2. 文件拖拽上传
|
||||
3. 文件拖拽下载
|
||||
4. 目录浏览测试
|
||||
5. 文件操作测试(右键菜单)
|
||||
6. 大文件传输测试(100MB)
|
||||
7. 断点续传测试
|
||||
|
||||
**验证重点**:
|
||||
- ✅ 用户交互友好性
|
||||
- ✅ 大文件传输稳定性
|
||||
- ✅ 错误提示清晰性
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: FileZilla(推荐)
|
||||
|
||||
**时间**:30 分钟
|
||||
|
||||
**步骤**:
|
||||
1. GUI 连接测试
|
||||
2. 文件传输测试
|
||||
3. 并发传输测试(多文件同时)
|
||||
4. 日志分析(SSH_FXP_* packet)
|
||||
5. 大文件传输测试
|
||||
|
||||
**验证重点**:
|
||||
- ✅ 并发传输(Window Control)
|
||||
- ✅ 协议实现验证(packet 日志)
|
||||
- ✅ 错误处理
|
||||
|
||||
---
|
||||
|
||||
### Phase 4: lftp(高级测试)
|
||||
|
||||
**时间**:40 分钟
|
||||
|
||||
**步骤**:
|
||||
1. 基本连接测试
|
||||
2. 镜像同步测试(mirror)
|
||||
3. 并行传输测试(mput)
|
||||
4. 断点续传测试(pget)
|
||||
5. 性能对比
|
||||
|
||||
**验证重点**:
|
||||
- ✅ 高级功能兼容性
|
||||
- ✅ 性能优化验证
|
||||
- ✅ 稳定性测试
|
||||
|
||||
---
|
||||
|
||||
## 测试脚本建议 ⭐⭐⭐⭐⭐
|
||||
|
||||
### OpenSSH sftp 批量测试脚本
|
||||
|
||||
**文件**:`/tmp/sftp_test_batch.txt`
|
||||
|
||||
```bash
|
||||
# 基本操作测试
|
||||
pwd
|
||||
ls -la
|
||||
cd data
|
||||
ls -la
|
||||
|
||||
# 文件上传测试
|
||||
put /tmp/test_5mb.bin test_5mb.bin
|
||||
put /tmp/test_10mb.bin test_10mb.bin
|
||||
put /tmp/test_100mb.bin test_100mb.bin
|
||||
|
||||
# 文件下载测试
|
||||
get test_100mb.bin /tmp/test_download.bin
|
||||
|
||||
# 文件操作测试
|
||||
mkdir test_dir
|
||||
rename test_5mb.bin test_5mb_renamed.bin
|
||||
rm test_10mb.bin
|
||||
rmdir test_dir
|
||||
|
||||
# 属性查询测试
|
||||
stat test_100mb.bin
|
||||
ls -la
|
||||
|
||||
# 退出
|
||||
bye
|
||||
```
|
||||
|
||||
**执行命令**:
|
||||
```bash
|
||||
# 创建测试文件
|
||||
dd if=/dev/urandom of=/tmp/test_5mb.bin bs=1M count=5
|
||||
dd if=/dev/urandom of=/tmp/test_10mb.bin bs=1M count=10
|
||||
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1M count=100
|
||||
|
||||
# 执行批量测试
|
||||
sftp -P 2024 -b /tmp/sftp_test_batch.txt demo@127.0.0.1
|
||||
|
||||
# MD5 校验
|
||||
md5 /tmp/test_100mb.bin /tmp/test_download.bin
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 错误处理测试 ⭐⭐⭐⭐⭐
|
||||
|
||||
**测试场景**:
|
||||
1. ✅ 路径不存在(SSH_FXP_NO_SUCH_FILE)
|
||||
2. ✅ 权限不足(SSH_FXP_PERMISSION_DENIED)
|
||||
3. ✅ 文件已存在(SSH_FXP_FILE_ALREADY_EXISTS)
|
||||
4. ✅ 磁盘空间不足(SSH_FXP_FAILURE)
|
||||
5. ✅ 连接中断(断点续传)
|
||||
|
||||
**测试命令**:
|
||||
```bash
|
||||
# 路径不存在测试
|
||||
sftp -P 2024 demo@127.0.0.1 <<EOF
|
||||
get /data/nonexistent_file.bin /tmp/test.bin
|
||||
EOF
|
||||
# 预期: "No such file"
|
||||
|
||||
# 权限不足测试
|
||||
sftp -P 2024 demo@127.0.0.1 <<EOF
|
||||
put /tmp/test.bin /root/test.bin
|
||||
EOF
|
||||
# 预期: "Permission denied"
|
||||
|
||||
# 文件已存在测试
|
||||
sftp -P 2024 demo@127.0.0.1 <<EOF
|
||||
put /tmp/test_100mb.bin /data/test_100mb.bin
|
||||
EOF
|
||||
# 预期: 文件已存在,询问是否覆盖
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 性能测试建议 ⭐⭐⭐⭐⭐
|
||||
|
||||
**测试指标**:
|
||||
- 传输速率(MB/s)
|
||||
- 并发传输能力(多文件同时)
|
||||
- 大文件传输稳定性(100MB+)
|
||||
- Window Control 效率(window adjust frequency)
|
||||
|
||||
**测试命令**:
|
||||
```bash
|
||||
# OpenSSH sftp 性能测试
|
||||
time sftp -P 2024 demo@127.0.0.1 <<EOF
|
||||
put /tmp/test_100mb.bin /data/test_100mb.bin
|
||||
bye
|
||||
EOF
|
||||
|
||||
# FileZilla 并发传输测试
|
||||
# 同时上传 10 个 10MB 文件,测试 Window Control
|
||||
|
||||
# lftp 并行传输测试
|
||||
lftp sftp://demo:demo123@127.0.0.1:2024 <<EOF
|
||||
set sftp:parallel 4
|
||||
mput /tmp/test_1*.bin
|
||||
bye
|
||||
EOF
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 总结与建议 ⭐⭐⭐⭐⭐
|
||||
|
||||
**必须测试**:
|
||||
- ⭐⭐⭐⭐⭐ **OpenSSH sftp**(标准实现,兼容性验证)
|
||||
|
||||
**强烈推荐**:
|
||||
- ⭐⭐⭐⭐⭐ **Cyberduck**(macOS 原生,用户友好)
|
||||
- ⭐⭐⭐⭐ **FileZilla**(跨平台,日志详细)
|
||||
|
||||
**可选测试**:
|
||||
- ⭐⭐⭐⭐ **lftp**(高级功能,性能优化)
|
||||
|
||||
**测试时间估算**:
|
||||
- Phase 1(OpenSSH sftp):30 分钟
|
||||
- Phase 2(Cyberduck):20 分钟
|
||||
- Phase 3(FileZilla):30 分钟
|
||||
- Phase 4(lftp):40 分钟
|
||||
- **总计**:约 2 小时
|
||||
|
||||
**预期结果**:
|
||||
- ✅ 所有 client 连接成功
|
||||
- ✅ 所有操作正常(上传、下载、浏览、删除等)
|
||||
- ✅ 文件完整性校验一致
|
||||
- ✅ 错误处理正确
|
||||
- ✅ Window Control 正常工作
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-06-17
|
||||
Reference in New Issue
Block a user