69 lines
2.9 KiB
Python
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, {})
|
|
|