Table of Contents

编写测试任务集 TaskSet

运行 Locust

分布式

运行 master

运行 slave.

 
 

Locust 是个伸缩性很好的压力测试框架,OdooLocust 是
基于 Locust 和 openerplib 的 Locust扩展

下载 OdooLocust 源码

$ git clone https://github.com/nseinlet/OdooLocust.git

 
 

安装 python依赖包

$ cd OdooLocust

$ sudo pip install -r requirements.txt

 
 

安装 OdooLocust

$ sudo python setup.py install

 
 

 
 

编写测试任务集 TaskSet

 
 

新建一个 py 文件 OdooLoadingTest.py ,
内容
如下

from locust import task, TaskSet

 
 

class SellerTaskSet(TaskSet):

# @task(5)

# def read_partners(self):

# cust_model = self.client.get_model('res.partner')

# cust_ids = cust_model.search([])

# prtns = cust_model.read(cust_ids)

 

# @task(5)

# def read_products(self):

# prod_model = self.client.get_model('product.product')

# ids = prod_model.search([])

# prods = prod_model.read(ids)

 

@task(20)

def create_so(self):

prod_model = self.client.get_model('product.product')

cust_model = self.client.get_model('res.partner')

so_model = self.client.get_model('sale.order')

 

cust_ids = cust_model.search([('name', 'ilike', 'agrolait')])

prod_ids = prod_model.search([('name', 'ilike', 'ipad')])

 
 

for cust_id in cust_ids:

 
 

for prod_id in prod_ids:

 

order_id = so_model.create({

'partner_id': cust_id,

'order_line': [(0,0,{'product_id': prod_id,

'product_uom_qty':1}),

(0,0,{'product_id': prod_id,

'product_uom_qty':2}),

],

 

})

so_model.action_confirm([order_id])

 
 

 
 

from OdooLocust import OdooLocust

 
 

class Seller(OdooLocust):

host = "192.168.30.128"

database = "odoo"

min_wait = 0

max_wait = 100

weight = 3

 

task_set = SellerTaskSet

 
 

以上
测试集
用于建立销售订单、并确认销售订单;
至于其他用途的测试集,
则根据用户的需求定制,
基于openerplib 库撰写。

 
 

运行 Locust

 
 

进入 taskset 存放目录,
运行以下命令

$ locust -f OdooLoadingTest.py Seller

说明

OdooLoadingTest.py 为 taskset 任务集定义py文件

Seller 为 Locust 实例

 
 

运行 Locust 后,
它会开启一个
管理控制台,
输入
运行 Locust URL,
例如
http://127.0.0.1:8089/

 
 

输入
需要模拟的
用户数量 Number of users to simulate ,
以及
每秒钟产生的
用户数 Hatch rate, 点击 start swarming

 
 

Locust 开始运行 taskset

 
 


统计页卡,
表格形式
展示 taskset 运行情况


图表页卡,
图表形式
展示 taskset 运行情况

 
 

 
 

分布式

因为 Locust 是单进程运行的,
为了有效发挥
压测节点的性能,
一般要根据节点的配置,
调整为 master/slave分布式

 
 

运行 master

$ locust -f OdooLoadingTest.py Seller --master

 
 

 
 

运行 slave.

$ locust -f OdooLoadingTest.py Seller --slave

 
 

此时可以从 master 看到新加入的 slave.

 
 

登陆 Locust 控制台,
可以看到
加入的slave 数量。

 
 

 
 

备注:

 
 

RPS [ requests per second ] 不等于 同时在线用户数

 
 

 
 

 
 

Locust压力测试Odoo的更多相关文章

  1. Locust压力测试使用总结

    https://blog.csdn.net/jojoy_tester/article/details/77926470  参考网址 上次做接口压力测试前一直研究使用jmeter,本以为可以拿来使用了, ...

  2. 1、Locust压力测试环境搭建

    环境准备:阿里云服务器一台.python2.7.pip Locust 介绍 Locust 是一个开源负载测试工具.使用 Python 代码定义用户行为,也可以仿真百万个用户. Locust 简单易用, ...

  3. 2、Locust压力测试 实战

    创建测试脚本 创建Test()类继承TaskSet类 创建beigong() 方法表示一个行为,访问北弓官网首页.用@task() 装饰该方法为一个任务.1表示一个Locust实例被挑选执行的权重,数 ...

  4. 压力测试工具ab,wrk,locust简介

    ab 无疑是目前最常见的压力测试工具.其典型用法如下: shell> ab -k -c 100 -t 10 http://domain/path 其中,参数「c」表示的是并发, 参数「t」表示的 ...

  5. python locust 进行压力测试

    最近公司项目周期比较赶, 项目是软硬结合,在缺少硬件的情况下,通过接口模拟设备上下架和购买情况,并进行压力测试, 本次主要使用三个接口 分别是3个场景: 生成商品IP, 对商品进行上架, 消费者购买商 ...

  6. 面向Web应用的并发压力测试工具——Locust实用攻略

    1. 概述 该方案写作目的在于描述一个基于Locust实现的压力测试,文中详细地描述了如何利用locustfile.py文件定义期望达成的测试用例,并利用Locust对目标站点进行并发压力测试. 特别 ...

  7. 在Rainbond上使用Locust进行压力测试

    Locust简介 Locust 是一种易于使用.可编写脚本且可扩展的性能测试工具.并且有一个用户友好的 Web 界面,可以实时显示测试进度.甚至可以在测试运行时更改负载.它也可以在没有 UI 的情况下 ...

  8. Web服务器压力测试一例

    近期部门新上线一个服务,我们使用ab和locust分别测试 目前项目属于demo阶段,对访问量的支持不要求太高,我们暂且设定在500请求,20并发 工具介绍 ab ab全称为:Apache HTTP ...

  9. Locust 分布式测试

    转:http://www.testclass.net/locust/distributed/ 参考:官方文档 分布式运行Locust 一旦单台机器不够模拟足够多的用户时,Locust支持运行在多台机器 ...

随机推荐

  1. 【bzoj3083】遥远的国度 树链剖分+线段树

    题目描述 描述zcwwzdjn在追杀十分sb的zhx,而zhx逃入了一个遥远的国度.当zcwwzdjn准备进入遥远的国度继续追杀时,守护神RapiD阻拦了zcwwzdjn的去路,他需要zcwwzdjn ...

  2. 【bzoj3435】[Wc2014]紫荆花之恋 替罪点分树套SBT

    题目描述 强强和萌萌是一对好朋友.有一天他们在外面闲逛,突然看到前方有一棵紫荆树.这已经是紫荆花飞舞的季节了,无数的花瓣以肉眼可见的速度从紫荆树上长了出来.仔细看看的话,这个大树实际上是一个带权树.每 ...

  3. android在JNI_OnLoad入口函数下断点动态调试so库

    一般来说,很多APK的校验代码,都会在程序运行的时候自动加载一些动态so库,然后执行这些库中的校验代码.所以为了能够通过程序的校验,我们必须在执行这些函数之前下断点——理想的方法就是在JNI_OnLo ...

  4. 适配IPhone X的技巧

    #define TabbarHeight ([[UIApplication sharedApplication] statusBarFrame].size.height>20?83:49) // ...

  5. 洛谷 [P3338] 力

    FFT \[E_i = F_i / q_i = \sum_{i<j} \frac {q_j} {(i - j)^2} - \sum _{ i > j} \frac{q _ j} {(i - ...

  6. .net显示今天农历的代码!

    原文发布时间为:2010-04-11 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Globalization;//namespace Proje ...

  7. poj 3261 Milk Patterns 后缀数组 + 二分

    题目链接 题目描述 给定一个字符串,求至少出现 \(k\) 次的最长重复子串,这 \(k\) 个子串可以重叠. 思路 二分 子串长度,据其将 \(h\) 数组 分组,判断是否存在一组其大小 \(\ge ...

  8. Linux signal 那些事儿(4)信号的deliver顺序【转】

    转自:http://blog.chinaunix.net/uid-24774106-id-4084864.html 上一篇博文提到了,如果同时有多个不同的信号处于挂起状态,kernel如何选择deli ...

  9. golang xorm reverse 自动生成数据库实体文件

    一.先安装好需要的东西 xorm 也可以参考官方文档 readme.md https://github.com/go-xorm/cmd 和 http://xorm.io/docs/ go get gi ...

  10. 获取网页是手机端还是PC端访问

    C#方式: /// <summary> /// 是否手机访问 /// </summary> /// <returns></returns> public ...