2 Benchmark based on the `sale_mrp` addons (in `sale_mrp/test/sale_mrp.yml`).
7 from .benchmarks import Bench
9 class BenchSaleMrp(Bench):
11 Similar to `sale_mrp/test/sale_mrp.yml`.
13 This benchmarks the OpenERP server `sale_mrp` module by creating and
14 confirming a sale order. As it creates data in the server, it is necessary
15 to ensure unique names for the newly created data. You can use the --seed
16 argument to give a lower bound to those names. (The number of generated
17 names is --jobs * --samples.)
20 command_name = 'bench-sale-mrp'
21 bench_name = '`sale_mrp/test/sale_mrp.yml`'
23 def measure_once(self, i):
25 i = int(self.args.seed) + i + (self.worker * int(self.args.samples))
27 i = int(self.args.seed) + i
29 # Resolve a few external-ids (this has little impact on the running
30 # time of the whole method).
31 product_uom_unit = self.execute('ir.model.data', 'get_object_reference', 'product', 'product_uom_unit')[1]
32 my_slider_mobile_0 = self.execute('ir.model.data', 'get_object_reference', 'bench_sale_mrp', 'my_slider_mobile_0')[1]
33 res_partner_4 = self.execute('ir.model.data', 'get_object_reference', 'base', 'res_partner_4')[1]
34 res_partner_address_7 = self.execute('ir.model.data', 'get_object_reference', 'base', 'res_partner_address_7')[1]
35 list0 = self.execute('ir.model.data', 'get_object_reference', 'product', 'list0')[1]
36 shop = self.execute('ir.model.data', 'get_object_reference', 'sale', 'shop')[1]
38 # Create a sale order for the product `Slider Mobile`.
40 'client_order_ref': 'ref_xxx_' + str(i).rjust(6, '0'),
41 'date_order': time.strftime('%Y-%m-%d'),
42 'invoice_quantity': 'order',
43 'name': 'sale_order_ref_xxx_' + str(i).rjust(6, '0'),
44 'order_line': [(0, 0, {
45 'name': 'Slider Mobile',
47 'product_uom': product_uom_unit,
48 'product_uom_qty': 5.0,
51 'product_id': my_slider_mobile_0,
53 'type': 'make_to_order',
55 'order_policy': 'manual',
56 'partner_id': res_partner_4,
57 'partner_invoice_id': res_partner_address_7,
58 'partner_order_id': res_partner_address_7,
59 'partner_shipping_id': res_partner_address_7,
60 'picking_policy': 'direct',
61 'pricelist_id': list0,
64 sale_order_id = self.execute('sale.order', 'create', data, {})
66 # Confirm the sale order.
67 self.object_proxy.exec_workflow(self.database, self.uid, self.password, 'sale.order', 'order_confirm', sale_order_id, {})