nim-performance-test-data
云信性能测试数据生成技能
职责
通过分步交互引导用户完成性能测试数据的创建,避免用户记忆脚本名称和参数。
脚本目录位置
本技能的脚本打包在技能自身目录中,路径为:SKILL.md 所在目录下的 scripts/。
执行时需先确定 SKILL.md 的位置,脚本路径即为 <SKILL.md所在目录>/scripts/<业务线>/。
输出数据(testData/)也保存在技能自身目录下,路径为 <SKILL.md所在目录>/testData/<业务线>/,与脚本目录同级。
分步引导流程
每个步骤完成后等待用户回复,再进入下一步。
第一步:选择业务线
首先扫描 scripts/ 目录,动态获取已有业务线(子目录名),将其与内置业务线合并去重后展示。内置业务线为:IM、RTC、Meeting。
以编号形式展示,末尾固定附加"新增业务线"选项:
请选择业务线:
1. IM(即时通讯)
2. RTC(实时音视频)
3. Meeting(会议)
4. 新增业务线
如果用户选择新增业务线:
- 请用户输入新业务线名称(如:
LiveStream) - 在
scripts/<新业务线名>/和testData/<新业务线名>/下分别创建目录 - 提示用户将对应脚本放入
scripts/<新业务线名>/后再继续 - 返回业务线选择步骤
第二步:列出可用脚本
用户选择业务线后,列出 <SKILL.md所在目录>/scripts/<业务线>/ 下的脚本:
- IM →
scripts/im/ - RTC →
scripts/rtc/ - Meeting →
scripts/meeting/ - 其他业务线 →
scripts/<业务线名>/(统一小写)
执行 ls <对应目录> 获取脚本列表,以编号形式展示给用户:
【IM】可用脚本:
1. create_users.py - (读取文件顶部注释获取简介)
2. create_messages.py - (读取文件顶部注释获取简介)
3. create_groups.py - (读取文件顶部注释获取简介)
...
请输入编号选择脚本:
为了给出脚本简介,读取每个脚本文件的顶部(前20行),提取注释中的描述说明。如果没有注释则留空。
如果目录不存在或为空,提示用户:
暂未找到 <业务线> 的测试数据脚本,请确认 scripts/<目录>/ 下是否有脚本文件。
第三步:分析脚本参数
用户选择脚本后,读取该脚本文件,识别所有可配置参数:
- Shell 脚本:查找
case $1 in参数定义块和帮助函数(print_help) - Python 脚本:查找
argparse定义、脚本顶部配置变量、# 参数注释段 - 其他:提取文件顶部使用说明
账号文件依赖检测
读取脚本时,若发现存在 -f/--file(账号文件)参数,说明该脚本依赖已有账号数据,必须在收集其他参数前先处理此依赖:
- 扫描
<SKILL.md所在目录>/testData/im/目录,列出已有账号文件(nim_account_*.txt) - 若有已有文件,展示供用户选择:
⚠️ 该脚本需要账号文件(格式:accid,token) 已有账号文件: 1. nim_account_xxx_1234567890.txt(共 5000 条) 2. nim_account_xxx_9876543210.txt(共 1000 条) 请选择账号文件,或输入 0 先去生成账号: - 若无已有文件,提示用户先运行账号创建脚本:
⚠️ 该脚本需要账号文件,但 testData/im/ 下暂无账号数据。 请先运行 nim_create_accounts.sh 生成账号,再回来创建群组。 - 用户选择账号文件后,自动计算文件中的账号数量,并在后续参数收集中提示:
- 当用户填写群数量(
-t)和每群人数(-m)时,实时计算所需账号数 = 群数量 × 每群人数 - 若所需账号数 > 文件中账号数,立即提示并要求用户调整参数或重新选择账号文件
- 当用户填写群数量(
参数展示格式
展示参数时区分必填和可选,对敏感凭证(AppKey、AppSecret)特别标注,提示用户从应用后台获取。
一次性展示所有参数,让用户在一条消息中填写所有必填项,不要逐参数分步询问。格式如下:
账号创建脚本示例:
【nim_create_accounts.sh】参数配置:
必填参数(请一次性填写):
AppKey(从云信控制台 > 应用信息获取):
AppSecret(从云信控制台 > 应用信息获取):
API 服务器地址(如 https://api.example.com):
生成账号数量:
可选参数(留空使用默认值):
并发数(默认 10):
请求间隔 ms(默认 100):
群/超级群创建脚本示例:
【nim_create_teams.sh】参数配置:
已自动填入:
账号文件:<skill_dir>/testData/im/nim_account_xxx.txt(共 5000 条)
输出目录:<skill_dir>/testData/im/
必填参数(请一次性填写):
AppKey(从云信控制台 > 应用信息获取):
AppSecret(从云信控制台 > 应用信息获取):
API 服务器地址(如 https://api.example.com):
群数量(群数量 × 每群人数 ≤ 5000):
每群人数:
可选参数(留空使用默认值):
批量添加成员数(默认 100,最大 200,且必须整除群人数):
并发数(默认 10):
请求间隔 ms(默认 100):
用户回复后,一次性解析所有参数。若必填项有遗漏,整体补问一次(而非逐条追问)。
-f/--file 和 -o/--outpath 固定自动填入,不展示给用户。
第四步:确认并执行
收集完所有必填参数后,展示完整命令供用户确认:
即将执行:
bash <skill_dir>/scripts/im/nim_create_accounts.sh \
-h https://api.example.com \
-k your_appkey \
-s your_secret \
-n 1000 \
-o <skill_dir>/testData/im/ \
-c 10 \
-i 100
确认执行?(是/否)
用户确认后:
- 执行
mkdir -p testData/<业务线>/确保输出目录存在 - 执行
chmod +x <脚本路径>确保脚本有执行权限 - 执行脚本,实时展示输出
- 执行完成后展示结果摘要,并告知输出文件路径(
<SKILL.md所在目录>/testData/<业务线>/)
注意事项
- 脚本来自技能自身的
scripts/目录,不依赖用户项目结构 - 测试数据输出统一存放在技能自身目录的
testData/<业务线>/(如<SKILL.md所在目录>/testData/im/),执行前自动mkdir -p - Shell 脚本执行前需
chmod +x,Python 脚本则直接python3调用 - 涉及 AppKey/AppSecret 等敏感凭证时,只在当前会话使用,不记录或存储
- 每步引导结束后必须等待用户输入,不要跳步自动执行
- 参数值收集完毕前不要执行脚本
- 若用户在任意步骤提供了额外信息(如直接说"生成1000个IM用户"),可跳过已知步骤直接进入下一个待确认步骤