odoo/openerpcommand/bench_sale_mrp.py

69 lines
2.9 KiB
Python

"""
Benchmark based on the `sale_mrp` addons (in `sale_mrp/test/sale_mrp.yml`).
"""
import time
from .benchmarks import Bench
class BenchSaleMrp(Bench):
"""\
Similar to `sale_mrp/test/sale_mrp.yml`.
This benchmarks the OpenERP server `sale_mrp` module by creating and
confirming a sale order. As it creates data in the server, it is necessary
to ensure unique names for the newly created data. You can use the --seed
argument to give a lower bound to those names. (The number of generated
names is --jobs * --samples.)
"""
command_name = 'bench-sale-mrp'
bench_name = '`sale_mrp/test/sale_mrp.yml`'
def measure_once(self, i):
if self.worker >= 0:
i = int(self.args.seed) + i + (self.worker * int(self.args.samples))
else:
i = int(self.args.seed) + i
# Resolve a few external-ids (this has little impact on the running
# time of the whole method).
product_uom_unit = self.execute('ir.model.data', 'get_object_reference', 'product', 'product_uom_unit')[1]
my_slider_mobile_0 = self.execute('ir.model.data', 'get_object_reference', 'bench_sale_mrp', 'my_slider_mobile_0')[1]
res_partner_4 = self.execute('ir.model.data', 'get_object_reference', 'base', 'res_partner_4')[1]
res_partner_address_7 = self.execute('ir.model.data', 'get_object_reference', 'base', 'res_partner_address_7')[1]
list0 = self.execute('ir.model.data', 'get_object_reference', 'product', 'list0')[1]
shop = self.execute('ir.model.data', 'get_object_reference', 'sale', 'shop')[1]
# Create a sale order for the product `Slider Mobile`.
data = {
'client_order_ref': 'ref_xxx_' + str(i).rjust(6, '0'),
'date_order': time.strftime('%Y-%m-%d'),
'invoice_quantity': 'order',
'name': 'sale_order_ref_xxx_' + str(i).rjust(6, '0'),
'order_line': [(0, 0, {
'name': 'Slider Mobile',
'price_unit': 2,
'product_uom': product_uom_unit,
'product_uom_qty': 5.0,
'state': 'draft',
'delay': 7.0,
'product_id': my_slider_mobile_0,
'product_uos_qty': 5,
'type': 'make_to_order',
})],
'order_policy': 'manual',
'partner_id': res_partner_4,
'partner_invoice_id': res_partner_address_7,
'partner_order_id': res_partner_address_7,
'partner_shipping_id': res_partner_address_7,
'picking_policy': 'direct',
'pricelist_id': list0,
'shop_id': shop,
}
sale_order_id = self.execute('sale.order', 'create', data, {})
# Confirm the sale order.
self.object_proxy.exec_workflow(self.database, self.uid, self.password, 'sale.order', 'order_confirm', sale_order_id, {})