Magento Performance Toolkit Customization

Transcription

oSoftware Engineer, Magento

Magento Performance Toolkit Available at it Designed for EE 1.14, 1.13, 1.12 Compatible with CE* Features:– Generation of sample data– Imitation of user activity– Comparing performance before/after changes* – after some tweaks ;-)

Architecture OverviewPerformance ToolkitProfilesFixturesMagento instanceScenarios

Architecture: FixturesPerformance ToolkitProfilesPredefined state of environmentFixturesMagento instanceScenarios

Architecture: ProfilesPerformance ToolkitProfilesPresets of fixture parametersFixturesMagento instanceScenarios

Architecture: ScenariosPerformance ToolkitProfilesFixturesMagento instanceScenariosUser activity imitation

TechnologiesPerformance ToolkitProfilesPHP, XMLFixturesMagento instanceScenariosJMeter

Repository Structure 1.12/ 1.13/ 1.14/– fixtures/ categories.php – framework/ – profiles/ small.xml – benchmark.jmx– generate.php FixturesProfilesScenariosMagento Performance Toolkit User Guide.pdf

Usage1.2.3.4.Install JMeterInstall JMeter plugins Standard and ExtrasLocate Magento instanceExtract toolkit files to magento dir /dev/tools/performance toolkit/5. Generate fixture dataphp -f generate.php -- --profile profile path 6. Run JMeter scenariojmeter -n -t benchmark.jmx-Jhost magento.example.com -Jbase path /7. Compare results with previous

Customizing the ToolkitCustomizing FixturesCustomizing ProfilesCustomizing Scenarios

How to Create a Custom Fixture1. Create fixture script filefixtures/ fixture name .php2. Register fixture inframework/fixtures.xml3. Describe fixture parameters inframework/labels.xml

Fixture Script Implementation Use Magento APICreate from scratch1. Log data when saving entityin the admin panel2. Clean up logged data3. Substitute variable data4. Parameterize fixtureReuse existing code Adopt fixtures from Magento 2 Performance tests Integration tests

Fixture Examplefixtures/product virtual.php product Mage::getModel('catalog/product'); product- setData(array('type id' \Mage Catalog Model Product Type::TYPE VIRTUAL,'name' 'Virtual Product 1','sku' 'virtual product 1','price' 10,'visibility' \Mage Catalog Model Product Visibility::VISIBILITY BOTH,'status' \Mage Catalog Model Product Status::STATUS ENABLED,// .)); product- save();

Parameterized Fixturefixtures/products virtual.php count \Magento\ToolkitFramework\Config::getInstance()- getValue('virt products', 1);for ( i 1; i count; i ) { product Mage::getModel('catalog/product'); product- setData(array('type id' \Mage Catalog Model Product Type::TYPE VIRTUAL,'name' 'Virtual Product ' . i,'sku' 'virtual product ' . i,'price' 10,'visibility' \Mage Catalog Model Product Visibility::VISIBILITY BOTH,'status' \Mage Catalog Model Product Status::STATUS ENABLED,// .)); product- save();}

Fixture Registrationframework/fixtures.xml fixtures products virtual file products virtual.php /file action Generating virtual products /action /products virtual /fixtures framework/labels.xml config labels virt products Number of virtual products /virt products /labels /config

Customizing ProfilesHow to Create Custom Profiles

How to Create a Custom Profileprofiles/ profile name .xml config profile websites 1 /websites store groups 1 /store groups store views 1 /store views simple products 800 /simple products configurable products 50 /configurable products virt products 100 /virt products categories 30 /categories categories nesting level 3 /categories nesting level catalog price rules 10 /catalog price rules catalog target rules 2 /catalog target rules cart price rules 10 /cart price rules cart price rules floor 2 /cart price rules floor customers 20 /customers /profile /config

Customizing ScenariosHow to Create Custom Scenarios

JMeter Scenario Implementation Use JMeter GUICreate from scratch1. Set up JMeter to act asHTTP proxy server2. Configure browser to use proxy3. Record your manual actions4. Clean up recorded requests5. Substitute variable data6. Parameterize scenarioReuse existing code Extract scenarios frombenchmark.jmx Adopt scenarios from Magento 2performance tests

JMeter GUI

Parameterized Scenario Accept input parameters { P( param name , default value )} Reuse parameters of benchmark.jmxhost, base path, etc. Run with custom parametersjmeter -n -t scenario name .jmx-J param name param value

Summary & Tips Fixture creation– Use Magento models– Use import/export API– Adopt fixtures from Magento 2 Scenario creation– Use JMeter script recorder– Disable secret keys in URLs– Adopt scenarios from Magento 2 Infrastructure– Run JMeter on a separate serverJMeterMagento

The answer is.Thank You!Q&A@SergiiShymkosshymko@ebay.com42

Resources JMeter and pluginsjmeter.apache.orgjmeter-plugins.org Magento Performance Toolkit for Magento 1.xgithub.com/magento/magento-performance-toolkit Automated Tests for Magento s/

Performance Toolkit Architecture: Fixtures Magento instance Fi