_# 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  阅读(2081)  评论(0编辑  收藏  举报

导航

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