_# jeffery # focus on Odoo and other open source IT solutions # IT基础架构资深专家,开源解决方案专家,odoo资深专家__Q:913547235 讨论群397750860

Locust压力测试Odoo

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 ] 不等于 同时在线用户数

   

   

   

posted on 2018-01-01 20:13  odoouse  阅读(2240)  评论(0)    收藏  举报

导航

_# jeffery # focus on Odoo and other open source IT solutions # IT基础架构资深专家,开源解决方案专家,odoo资深专家