Locust压力测试Odoo
Table of Contents
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的更多相关文章
- Locust压力测试使用总结
https://blog.csdn.net/jojoy_tester/article/details/77926470 参考网址 上次做接口压力测试前一直研究使用jmeter,本以为可以拿来使用了, ...
- 1、Locust压力测试环境搭建
环境准备:阿里云服务器一台.python2.7.pip Locust 介绍 Locust 是一个开源负载测试工具.使用 Python 代码定义用户行为,也可以仿真百万个用户. Locust 简单易用, ...
- 2、Locust压力测试 实战
创建测试脚本 创建Test()类继承TaskSet类 创建beigong() 方法表示一个行为,访问北弓官网首页.用@task() 装饰该方法为一个任务.1表示一个Locust实例被挑选执行的权重,数 ...
- 压力测试工具ab,wrk,locust简介
ab 无疑是目前最常见的压力测试工具.其典型用法如下: shell> ab -k -c 100 -t 10 http://domain/path 其中,参数「c」表示的是并发, 参数「t」表示的 ...
- python locust 进行压力测试
最近公司项目周期比较赶, 项目是软硬结合,在缺少硬件的情况下,通过接口模拟设备上下架和购买情况,并进行压力测试, 本次主要使用三个接口 分别是3个场景: 生成商品IP, 对商品进行上架, 消费者购买商 ...
- 面向Web应用的并发压力测试工具——Locust实用攻略
1. 概述 该方案写作目的在于描述一个基于Locust实现的压力测试,文中详细地描述了如何利用locustfile.py文件定义期望达成的测试用例,并利用Locust对目标站点进行并发压力测试. 特别 ...
- 在Rainbond上使用Locust进行压力测试
Locust简介 Locust 是一种易于使用.可编写脚本且可扩展的性能测试工具.并且有一个用户友好的 Web 界面,可以实时显示测试进度.甚至可以在测试运行时更改负载.它也可以在没有 UI 的情况下 ...
- Web服务器压力测试一例
近期部门新上线一个服务,我们使用ab和locust分别测试 目前项目属于demo阶段,对访问量的支持不要求太高,我们暂且设定在500请求,20并发 工具介绍 ab ab全称为:Apache HTTP ...
- Locust 分布式测试
转:http://www.testclass.net/locust/distributed/ 参考:官方文档 分布式运行Locust 一旦单台机器不够模拟足够多的用户时,Locust支持运行在多台机器 ...
随机推荐
- HDU6438 Buy and Resell 解题报告(一个有趣的贪心问题的严格证明)
写在前面 此题是一个很容易想到的贪心题目,但是正确性的证明是非常复杂的.然而,目前网上所有题解并未给出本题贪心算法的任何正确性证明,全部仅停留在描述出一个贪心算法.本着对算法与计算机科学的热爱(逃), ...
- nginx问题
1.杀死nginx之后,找不到pid http://bbs.pxecn.com/thread-122116-1-1.html
- fetch上传cookie数据方法
Fetch 请求默认是不带cookie的.需要设置fetch的第二个参数: 先来看下,请求头部信息Request method - 使用的HTTP动词,GET, POST, PUT, DELETE, ...
- VMware Esxi5.5中嵌套虚拟机的网络设置方法
环境: Esxi5.5服务器->虚拟机(WinServer2008R2)->VMware WorkStation(Win7虚拟机) 网络问题: VMware WorkStation中的虚拟 ...
- 10个HTML和CSS必须知道的重点难点问题
前端日刊 登录 10个HTML和CSS必须知道的重点难点问题 2018-02-26 阅读 2982 收藏 6 原链:segmentfault.com 分享到: 前端必备图书<深入浅出Node ...
- linux下的用户管理(二)
创建帐号: 手工创建-> 1.在/etc/passwd中添加一条记录 2.创建用户主目录 3.在用户的家目录下设置默认的配置文件 4.设置用户初始口令 命令创建-> useradd或add ...
- requireJs杂项
如果设置了baseUrl,那么baseUrl目录下的模块可以被加载,那么被加载之后的模块Id是什么?文件名吗? 入口函数的写法?是不是要执行,后面加() 中文网中指的优化工具是什么? ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---5
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- 《手把手教你学C语言》学习笔记(2)---学习C语言的目标和方法
一.学习C语言的目标主要是: 熟练掌握C语言的关键字,语法规则,程序控制等: 掌握基本的数据结构,数组.链表.栈和队列等: 掌握C语言中指针和内存.数组与指针.函数与指针.变量和指针.结构体和指针.硬 ...
- mysql中PDO参数化引号引起的Warning: PDOStatement::execute(): SQLSTATE[HY093]:报错
sql语句之前是这样写的:INSERT INTO tablename SET a = ':a',b = ':b',c = ':c',d = :d,e = :e $data = array ( [':a ...