skills/skills.netease.im/nim-performance-test-data

nim-performance-test-data

SKILL.md

云信性能测试数据生成技能

职责

通过分步交互引导用户完成性能测试数据的创建,避免用户记忆脚本名称和参数。

脚本目录位置

本技能的脚本打包在技能自身目录中,路径为: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(账号文件)参数,说明该脚本依赖已有账号数据,必须在收集其他参数前先处理此依赖

  1. 扫描 <SKILL.md所在目录>/testData/im/ 目录,列出已有账号文件(nim_account_*.txt
  2. 若有已有文件,展示供用户选择:
    ⚠️  该脚本需要账号文件(格式:accid,token)
    
    已有账号文件:
    1. nim_account_xxx_1234567890.txt(共 5000 条)
    2. nim_account_xxx_9876543210.txt(共 1000 条)
    
    请选择账号文件,或输入 0 先去生成账号:
    
  3. 若无已有文件,提示用户先运行账号创建脚本:
    ⚠️  该脚本需要账号文件,但 testData/im/ 下暂无账号数据。
    请先运行 nim_create_accounts.sh 生成账号,再回来创建群组。
    
  4. 用户选择账号文件后,自动计算文件中的账号数量,并在后续参数收集中提示:
    • 当用户填写群数量(-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

确认执行?(是/否)

用户确认后:

  1. 执行 mkdir -p testData/<业务线>/ 确保输出目录存在
  2. 执行 chmod +x <脚本路径> 确保脚本有执行权限
  3. 执行脚本,实时展示输出
  4. 执行完成后展示结果摘要,并告知输出文件路径(<SKILL.md所在目录>/testData/<业务线>/

注意事项

  • 脚本来自技能自身的 scripts/ 目录,不依赖用户项目结构
  • 测试数据输出统一存放在技能自身目录testData/<业务线>/(如 <SKILL.md所在目录>/testData/im/),执行前自动 mkdir -p
  • Shell 脚本执行前需 chmod +x,Python 脚本则直接 python3 调用
  • 涉及 AppKey/AppSecret 等敏感凭证时,只在当前会话使用,不记录或存储
  • 每步引导结束后必须等待用户输入,不要跳步自动执行
  • 参数值收集完毕前不要执行脚本
  • 若用户在任意步骤提供了额外信息(如直接说"生成1000个IM用户"),可跳过已知步骤直接进入下一个待确认步骤
Installs
1
First Seen
Apr 2, 2026