跳转到主要内容

Celery压力测试和集成测试支持。

项目描述

Build status coverage BSD License Cyanide can be installed via wheel Supported Python versions. Support Python implementations.

版本::

1.3.0

网页::

https://cyanide.readthedocs.io/

下载::

http://pypi.python.org/pypi/cyanide/

源代码::

http://github.com/celery/cyanide/

关键词::

celery, stress, integration, functional, testing

简介

此压力测试套件将尝试以不同方式破坏Celery工作进程,也可以用于为依赖于Celery基础设施的项目编写新的压力测试套件。

当前必须单独启动工作进程,并建议使用具有不同配置值的启动的工作进程重复套件。

想法包括

  1. 默认,单进程
    $ celery -A cyanide worker -c 1
  2. 默认,多进程
    $ celery -A cyanide worker -c 8
  3. 频繁maxtasksperchild回收,单个子进程

    $ celery -A cyanide worker -c 1 --maxtasksperchild=1
  4. 频繁自动缩放缩小 & maxtasksperchild,单个子进程
    $ AUTOSCALE_KEEPALIVE=0.01 celery -A cyanide worker \
    >   --autoscale=1,0 --maxtasksperchild=1
  5. 频繁maxtasksperchild,多个子进程
    $ celery -A cyanide worker -c 8 --maxtasksperchild=1
  6. 由时间限制终止的进程
    $ celery -A cyanide worker --time-limit=1
  7. 频繁maxtasksperchild,单个子进程(晚确认)
    $ celery -A cyanide worker -c1 --maxtasksperchild=1 -Z acks_late
  8. 使用eventlet池的工作进程

    启动工作进程,这里有千个绿色线程

    $ celery -A cyanide worker -c1000 -P eventlet

    在启动测试套件时必须激活green测试组

    $ celery cyanide -g green
  9. 使用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 (70.5 kB 查看哈希值)

上传于 源码

构建分发

cyanide-1.3.0-py2.py3-none-any.whl (30.5 kB 查看哈希值)

上传于 Python 2 Python 3

由以下支持