Celery压力测试和集成测试支持。
项目描述
- 版本::
1.3.0
- 网页::
- 下载::
- 源代码::
- 关键词::
celery, stress, integration, functional, testing
简介
此压力测试套件将尝试以不同方式破坏Celery工作进程,也可以用于为依赖于Celery基础设施的项目编写新的压力测试套件。
当前必须单独启动工作进程,并建议使用具有不同配置值的启动的工作进程重复套件。
想法包括
- 默认,单进程
$ celery -A cyanide worker -c 1
- 默认,多进程
$ celery -A cyanide worker -c 8
频繁maxtasksperchild回收,单个子进程
$ celery -A cyanide worker -c 1 --maxtasksperchild=1
- 频繁自动缩放缩小 & maxtasksperchild,单个子进程
$ AUTOSCALE_KEEPALIVE=0.01 celery -A cyanide worker \ > --autoscale=1,0 --maxtasksperchild=1
- 频繁maxtasksperchild,多个子进程
$ celery -A cyanide worker -c 8 --maxtasksperchild=1
- 由时间限制终止的进程
$ celery -A cyanide worker --time-limit=1
- 频繁maxtasksperchild,单个子进程(晚确认)
$ celery -A cyanide worker -c1 --maxtasksperchild=1 -Z acks_late
使用eventlet池的工作进程
启动工作进程,这里有千个绿色线程
$ celery -A cyanide worker -c1000 -P eventlet
在启动测试套件时必须激活green测试组
$ celery cyanide -g green
使用gevent池的工作进程
启动工作进程,这里有千个绿色线程
$ celery -A cyanide worker -c1000 -P gevent
在启动测试套件时必须激活green测试组
$ celery cyanide -g green
提示
包含--purge <celery worker --purge>参数以清除先前运行的作业是个好主意。
请注意,如果测试失败,压力客户端可能会挂起,因此当前此测试套件不适合自动运行。
配置模板
您可以使用任何celery -A cyanide命令或执行测试套件的celery cyanide命令的-Z命令行参数选择配置模板。
可用的模板有
默认
使用AMQP作为代理,RPC作为结果后端,并使用JSON序列化任务和结果消息。
代理和结果存储都预计将在本地运行。
vagrant1
使用celery vagrant up启动的虚拟机作为代理和结果后端(RabbitMQ)。
vagrant1_redis
使用celery vagrant up启动的虚拟机作为代理和结果后端(Redis)。
redis
使用Redis作为代理和结果后端。
redistore
仅使用Redis作为结果后端。
acks_late
全局启用晚确认。
pickle
使用pickle作为任务和结果的序列化器(也允许工作进程接收和处理pickle消息)
confirms
启用RabbitMQ发布者确认。
events
配置工作进程发送任务事件。
proto1
使用任务消息协议的1版本(4.0之前)
您可以通过运行命令查看任何模板的配置结果
$ celery -A cyanide report -Z redis
示例
使用redis配置模板运行压力测试的示例
$ cyanide -Z redis
使用redis配置模板运行工作进程的示例
$ celery -A cyanide worker -Z redis
您也可以通过提供逗号分隔的列表混合几个模板
$ celery -A cyanide worker -Z redis,acks_late
在这个例子中(redis,acks_late),redis模板将被用作主要配置,然后从acks_late模板合并的额外键作为更改。
测试套件选项
启动一个或多个工作实例后,您可以开始执行测试。
默认情况下,将执行完整的测试套件
$ celery cyanide
您也可以通过提供一个或多个名称作为参数来指定要运行的测试用例
$ celery cyanide revoketermfast revoketermslow
可以使用-l <celery cyanide -l>开关检索测试用例名称的完整列表
$ celery cyanide -l .> 1) chain, .> 2) chaincomplex, .> 3) parentids_chain, .> 4) parentids_group, .> 5) manyshort, .> 6) unicodetask, .> 7) always_timeout, .> 8) termbysig, .> 9) timelimits, .> 10) timelimits_soft, .> 11) alwayskilled, .> 12) alwaysexits, .> 13) bigtasksbigvalue, .> 14) bigtasks, .> 15) smalltasks, .> 16) revoketermfast, .> 17) revoketermslow
您也可以从列表中的某个偏移量开始,例如,要跳过前两个测试,请使用 --offset=2 <celery cyanide --offset>
$ celery cyanide --offset=2
查看所有可用的命令行选项,请运行 celery cyanide --help
Vagrant
开始
Cyanide 随附一个完整的虚拟机解决方案来运行您的测试。该镜像包含 Celery、Cyanide、RabbitMQ 和 Redis,只需运行 celery vagrant 命令即可部署
$ celery vagrant up
新虚拟机的 IP 地址将是 192.168.33.123,您可以通过指定 vagrant1(RabbitMQ)或 vagrant1_redis 模板轻松地将工作器和 cyanide 测试套件指向它
$ celery -A worker -Z vagrant1 $ celery cyanide -Z vagrant1
SSH
在用 celery vagrant up 启动虚拟机后,要打开 SSH 会话,请执行以下操作
$ ssh $(celery vagrant sshargs)
停止
要关闭虚拟机,请运行以下命令
$ celery vagrant halt
要销毁实例,请运行以下命令
$ celery vagrant destroy
环境变量
CYANIDE_TRANS
如果设置了 CYANIDE_TRANS 环境变量,则压力测试套件将使用短暂的任务消息,而不是将消息持久化到磁盘。
为了避免声明冲突,当此选项启用时,将使用 cstress.trans 队列名称。
CYANIDE_BROKER
您可以将 CYANIDE_BROKER 环境变量设置为更改默认代理。
$ CYANIDE_BROKER='amqp://' celery -A cyanide worker # ... $ CYANIDE_BROKER='amqp://' celery cyanide
CYANIDE_BACKEND
您可以将 CYANIDE_BACKEND 环境变量设置为更改使用的后端。
$ CYANIDE_BACKEND='amqp://' celery -A cyanide worker # ... $ CYANIDE_BACKEND='amqp://' celery cyanide
CYANIDE_QUEUE
默认情况下,创建并使用名为 c.stress 的队列进行所有任务通信。
您可以使用 CYANIDE_QUEUE 环境变量更改此队列的名称。
$ CYANIDE_QUEUE='cyanide' celery -A cyanide worker # ... $ CYANIDE_QUEUE='cyanide' celery cyanide
CYANIDE_PREFETCH
CYANIDE_PREFETCH 环境变量设置默认预取乘数(默认值为 10)。
AWS_REGION
AWS_REGION 环境变量更改 Amazon AWS 区域,使其不同于默认的 us-east-1,用于与 sqs 模板一起使用。
自定义套件
您可以定义自定义套件(查看 cyanide.suites.default 的源代码以获取灵感),并通过指定 celery cyanide -S 选项来告诉 cyanide 使用该套件。
$ celery cyanide -S proj.funtests:MySuite
安装
您可以通过 Python 包索引(PyPI)或从源代码安装 cyanide。
使用 pip 安装
$ pip install -U cyanide
从源代码下载和安装
从 http://pypi.python.org/pypi/cyanide 下载 cyanide 的最新版本
您可以执行以下操作进行安装
$ tar xvfz cyanide-0.0.0.tar.gz $ cd cyanide-0.0.0 $ python setup.py build # python setup.py install
如果您当前没有使用 virtualenv,则最后一个命令必须以特权用户执行。
使用开发版本
使用 pip
您可以使用以下 pip 命令使用 cyanide 的最新快照
$ pip install https://github.com/celery/cyanide/zipball/master#egg=cyanide
项目详细信息
下载文件
下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码发行版
构建分发
cyanide-1.3.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5a75f962f313dd64bbe5b21983a76cf4def64cdfc249bfa1d92994c29bcc6326 |
|
MD5 | b299b0826df450ca518b63a925c0c633 |
|
BLAKE2b-256 | 653c5cc5a38e2c24d68ddfa39c3e5e7f547a7be2e59702fee5d2e23a4327e157 |
cyanide-1.3.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0f9e682dc493151b9c3b0aad417a8be98b29fddf311974e5a9470d00091eaa50 |
|
MD5 | 59960406f02e4beb1f6418bcda70ede8 |
|
BLAKE2b-256 | ce4d89b72e4c7c160d58b0a85e0fb01f4e41d2c25a03d73d295e2cb39a3e5a21 |