[MERGE] forward port of branch 7.0 up to revid 5270 chs@openerp.com-20140403084524...
[odoo/odoo.git] / openerpcommand / bench_sale_mrp.py
1 """
2 Benchmark based on the `sale_mrp` addons (in `sale_mrp/test/sale_mrp.yml`).
3 """
4
5 import time
6
7 from .benchmarks import Bench
8
9 class BenchSaleMrp(Bench):
10     """\
11     Similar to `sale_mrp/test/sale_mrp.yml`.
12
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.)
18     """
19
20     command_name = 'bench-sale-mrp'
21     bench_name = '`sale_mrp/test/sale_mrp.yml`'
22
23     def measure_once(self, i):
24         if self.worker >= 0:
25             i = int(self.args.seed) + i + (self.worker * int(self.args.samples))
26         else:
27             i = int(self.args.seed) + i
28
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]
37
38         # Create a sale order for the product `Slider Mobile`.
39         data = {
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',
46                 'price_unit': 2,
47                 'product_uom': product_uom_unit,
48                 'product_uom_qty': 5.0,
49                 'state': 'draft',
50                 'delay': 7.0,
51                 'product_id': my_slider_mobile_0,
52                 'product_uos_qty': 5,
53                 'type': 'make_to_order',
54             })],
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,
62             'shop_id': shop,
63         }
64         sale_order_id = self.execute('sale.order', 'create', data, {})
65
66         # Confirm the sale order.
67         self.object_proxy.exec_workflow(self.database, self.uid, self.password, 'sale.order', 'order_confirm', sale_order_id, {})
68