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 ] 不等於 同時在線用戶數

   

   

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM