Commit 1393d7ad authored by Jérome Perrin's avatar Jérome Perrin

scalability_test: script to create some sales order

parent 2ac1f9f6
if context.getSimulationState() == 'confirmed':
context.cancel()
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Delivery_tryToCancel</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
"""Create test data for sales order / sales packing list build benchmark.
"""
import random
rng = random.Random(random_seed)
portal = context.getPortalObject()
sale_trade_condition, = portal.portal_catalog(
portal_type="Sale Trade Condition",
reference='STC-General',
)
sale_trade_condition = sale_trade_condition.getObject()
resources = []
for _ in range(10):
resource = portal.product_module.newContent(
title='Scalability Test Resource %s %s' %
(random_seed, rng.randint(0, 10000)), )
resource.validate()
resources.append(resource)
customers = []
for _ in range(10):
customer = portal.organisation_module.newContent(
title='Scalability Test Organisation %s %s' %
(random_seed, rng.randint(0, 10000)), )
customer.validate()
customers.append(customer)
def makeSaleOrder():
sale_order = portal.sale_order_module.newContent(
portal_type='Sale Order',
title='Scalability Test Sale Order %s %s' %
(random_seed, rng.randrange(10000)),
start_date=DateTime() + (rng.random() * 100.),
specialise_value=sale_trade_condition,
)
# note: we use "edit" to have multiple entries in edit_workflow, like when
# a real user inputs data.
sale_order.edit(stop_date=sale_order.getStopDate() + (rng.random() * 100.))
sale_order.edit(destination_section_value=rng.choice(customers))
sale_order.edit(destination_value=rng.choice(customers))
sale_order.SaleOrder_applySaleTradeCondition()
for i in range(rng.randint(1, 10)):
sale_order.newContent(
portal_type='Sale Order Line',
resource_value=rng.choice(resources),
quantity=1 + rng.random() * 20,
price=rng.random() * 100,
).edit(
int_index=i, )
sale_order.Base_checkConsistency()
sale_order.confirm()
return sale_order
for _ in range(order_count):
order = makeSaleOrder()
# build packing lists one by one, because we create a lot and don't want the
# global builder to try to build them all in one big transaction
expand_tag = 'build:%s' % order.getPath()
order.reindexObject(activate_kw={'tag': expand_tag})
portal.portal_deliveries.sale_packing_list_builder.activate(
activity='SQLQueue',
after_tag=expand_tag,
).build(explanation_uid=order.getUid())
# cancel packing lists, so that they are not selected by
# DeliveryBuilder_selectConfirmedDeliveryList
portal.portal_catalog.searchAndActivate(
portal_type='Sale Packing List',
simulation_state='confirmed',
method_id='Delivery_tryToCancel',
)
# undo redirect from SaleOrder_applySaleTradeCondition
container.REQUEST.RESPONSE.setStatus(200)
return "Done"
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>random_seed, order_count=50</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ERP5Site_createScalabilityTestSaleOrderBatch</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment