二、rally使用指导

 

一、rally中的json文件

    rally执行过程:读取json文件中的配置,根据json文件中的配置执行相应的并发资源,rally的json文件的存放路径/usr/share/openstack-rally/samples/tasks/scenarios,server代码的存放路径/usr/lib/python2.7/site-packages/rally/plugins/openstack/scenarios/,整个代码包的存放路径/usr/lib/python2.7/site-packages/rally/。

二、json文件详解

    整个json文件大致分为以下四部分:args、runner、context、sla,各部分的功能大致如下:

  • args:主要是定义创建某个资源所需要的参数,定义参数的方式为键值对,调用创建某个资源的方式时,这些参数都会传递过去。
  •  runner:提供测试的运行器情况,比如:并发测试、串行测试等等。runner目前支持四中方式:constant、constant_for_duration、rps、serial。
  • 2.1constant方式,是利用mutiprocessing的Pool方式创建一个进程池,池中的进程数量等于runner的配置参数中的concurrency,执行每个tast时,由池中所有的进程同时测试、模拟多用户并      发的情况。constant方式中要求提供参数times,用于指定一个tast中执行测试用例的次数。
    • constant_for_duration方式,与constant相似,也是构建一个进程池实现并发测试,区别在于,constant_for_duration方式要求额外提供一个参数duration,但是没有参数times。该参数用于指明执行测试的时间, rally一直执行task指定的测试用例,直到达到duration规定的时间长度,任务结束;
    • rps方式,测试任务平均分配到每个processer上,通过对每个process创建thread实现高并发测试。不同于前两种方式(使用multiprocessing.Pool 构建进程池),rps方式使用multiprocessing.Process构建执行task的worker,每个worker执行测试次数的总和是配置中的times,每个worker的rps总和是配置中rps。workers的数量由times和运行rally测试的主机上实际processer数量的最小值确定,times平均分配到每个worker上。
    • serial方式,是使用一个process串行的执行测试 ,在单个基准线程中运行指定次数的脚本。
  • context:提供运行测试用例的上下文环境变量信息,包括模拟几个用户同时测试、租户情况等;定义运行基准测试脚本的环境类型。通常,context的概 念定义了有多少个租户和活动用户与给定的OpenStack项目相关。它还 可以指定特定的授权角色中,每个租户/用户所拥有的资源配额。
    • quotas:指定测试中涉及到资源的配额限制,
  • sla: 成功标准。
{
    "NeutronNetworks.create_and_list_routers": [
        {
            "args": {
                "network_create_args": {},
                "subnet_create_args": {},
                "subnet_cidr_start": "1.1.0.0/30",
                "subnets_per_network": 2,
                "router_create_args": {}
            },
            "runner": {
                "type": "constant",
                "times": 10,
                "concurrency": 5
            },
            "context": {
                "network": {},
                "users": {
                    "tenants": 3,
                    "users_per_tenant": 3
                },
                "quotas": {
                    "neutron": {
                        "network": -1,
                        "subnet": -1,
                        "router": -1
                    }
                }
            },
            "sla": {
                "failure_rate": {
                    "max": 0
                }
            }
        }
    ]
}

三、rally执行流程

1.由命令行发起start_task的任务请求

  • ally task start --task test.json --deployment deployment_uuid --tag task_tag
    • --task参数必选参数,无默认值(必须输入),后跟的test.json对应执行task的配置文件路径。
    • --deployment必选参数,有默认值(可以不输入),用于指定使用rally哪一个部署,如果不指定该参数,自动使用默认的deployment。
    • --tag可选参数,用于为当前的task设置标签(task执行完成后,可以根据标签进行过滤)
    • 命令行执行task的代码:cmd.commands.task.TaskCommands.start_tas。

2.创建的engine对象执行run方法

  • ask validation
  • 验证配置中提供的待测试方法是scenario方法
  • 验证配置文件中的context配置项是否正确
  • 验证配置文件的句法正确
  • 遍历配置文件中的每个待测试scenario类型方法

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值