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