matrixdotorg/sytest-dendriteSyTest是Matrix homeserver实现的集成测试系统,目前主要针对Synapse服务器。它采用"黑盒"测试方式,通过启动多个homeserver实例,并使用常规HTTP交互(类似其他Matrix客户端)测试实例间的交互。测试结果可输出到交互式终端或TAP风格报告,适用于Jenkins等持续集成工具。
在Ubuntu/Debian系统上,需安装以下原生依赖:
bashsudo apt install libpq-dev build-essential
SyTest依赖Perl模块,需先配置Perl环境(非root用户):
.profile文件,添加以下环境变量:
bashexport PERL5LIB=$HOME/lib/perl5 export PERL_MB_OPT=--install_base=$HOME export PERL_MM_OPT=INSTALL_BASE=$HOME
bashsource ~/.profile
cpan进行初始化配置:
提示配置时选择"yes"进行自动配置,完成后输入bashcpan
exit退出。获取SyTest源码并安装依赖:
bashgit clone [***] cd sytest ./install-deps.pl cd ..
获取Synapse源码(默认期望在同级目录synapse中):
bashpip install pynacl --user # 解决pynacl目录排序问题 git clone [***] cd synapse git checkout develop python setup.py develop --user python setup.py test cd ..
注意:Synapse无需安装,SyTest将直接从源码目录运行
使用Homebrew安装libsodium:
bashbrew install libsodium
验证libsodium是否被正确识别:
bashpkg-config --libs libsodium
预期输出类似:-L/usr/local/Cellar/libsodium/1.0.8/lib -lsodium
强制安装Perl模块:
bashcpan cpan> force install Crypt::NaCl::Sodium cpan> force install Shell::Guess
手动安装DBI后再安装DBD::Pg,避免依赖错误:
bashcpan> install DBI cpan> install DBD::Pg
运行依赖安装脚本:
bash./install-deps.pl
默认配置下,直接运行测试脚本:
bashcd sytest ./run-tests.pl
若Synapse源码不在同级目录,使用--synapse-directory指定路径:
bash./run-tests.pl --synapse-directory /home/synapse/synapse
如需使用特定Python环境(如虚拟环境),通过--python指定:
bash./run-tests.pl --python ../synapse/env/bin/python
注意:若运行时出现
ModuleNotFoundError: No module named 'synapse',需激活Synapse虚拟环境:bashsource ../synapse/env/bin/Activate
-C为简写):
bash./run-tests.pl --client-log # 或 ./run-tests.pl -C
-S为简写):
bash./run-tests.pl --server-log # 或 ./run-tests.pl -S
仅运行特定测试文件中的用例,将文件路径作为参数:
bash./run-tests.pl tests/20profile-events.pl
创建符合dictConfig格式的YAML日志配置文件(可从运行中的Synapse复制),命名为log.config,放置于homeserver配置目录(localhost-<port>)。
使用黑名单文件标记预期失败的测试(失败不会导致整个测试套件失败),通过-B指定:
bash./run-tests.pl -B synapse/sytest-blacklist
SyTest支持通过插件扩展功能,插件需遵循与SyTest相同的项目结构,包含以下目录:
lib/SyTest/HomeserverFactorylib/SyTest/Homeserverlib/SyTest/Output默认插件目录为sytest/plugins,可通过SYTEST_PLUGINS环境变量指定自定义路径。示例插件:sytest_conduit
有关SyTest本身的开发(维护或编写新测试),请参考源码中的DEVELOP.rst文件。
使用Postgres测试时,SyTest会检查是否存在sytest_template数据库,若存在则以此为模板创建测试数据库,大幅减少数据库创建时间。
创建模板数据库的简易方法:启动一个指向该数据库的homeserver,待数据库创建完成后停止服务。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务