meta data for this page
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
sap_hybris_commerce:development_process:systemsetup_annotation_when_methods_run [2020/04/10 10:00] – Antonio Robirosa | sap_hybris_commerce:development_process:systemsetup_annotation_when_methods_run [2020/04/10 14:03] (current) – Document the hybris classes Antonio Robirosa | ||
---|---|---|---|
Line 3: | Line 3: | ||
The SystemSetup annotation is used to run import data, synchronize catalogues, migrate CMS components and execute Java code during **every** project or essential data creation step. | The SystemSetup annotation is used to run import data, synchronize catalogues, migrate CMS components and execute Java code during **every** project or essential data creation step. | ||
- | **In past versions | + | **In all hybris version up to 1905 the essential and project data steps aren't run during the initialization of the junit tenant.** This prevents |
- | ^SystemSetup.Process^INIT^^^UPDATE^^^ALL^^^ | + | ^SystemSetup.Process^INIT^^^UPDATE^^^ALL^^^.^ |
- | ^^SystemSetup.Type^ESSENTIAL^PROJECT^ALL^ESSENTIAL^PROJECT^ALL^ESSENTIAL^PROJECT^ALL^ | + | ^SystemSetup.Type^ESSENTIAL^PROJECT^ALL^ESSENTIAL^PROJECT^ALL^ESSENTIAL^PROJECT^ALL^What Hybris impexes are imported?^ |
- | ^ant initialize -Dtenant=master^ | + | ^ant initialize -Dtenant=master|Called once with process INIT and type ESSENTIAL|Called once with process INIT and type PROJECT|Called twice with process INIT and type ESSENTIAL \\ and with process INIT and type PROJECT|No call|||Called once with process INIT and type ESSENTIAL|Called once with process INIT and type PROJECT|Called twice with process INIT and type ESSENTIAL \\ and with process INIT and type PROJECT|Project and essential scripts| |
- | ^ant initialize -Dtenant=junit^ | + | ^ant initialize -Dtenant=junit|:!: No call|||||||||: |
- | ^ant yunitinit^ | + | ^ant yunitinit|:!: No call|||||||||: |
- | ^ant updatesystem -Dtenant=master((with a JSON configuration to run the project data))^ | + | ^ant updatesystem -Dtenant=master((with a JSON configuration to run the project data))|No call|||Called once with process UPDATE and type ESSENTIAL|Called once with process UPDATE and type PROJECT|Called twice with process UPDATE and type ESSENTIAL and with process UPDATE and type PROJECT|Called once with process UPDATE and type ESSENTIAL|Called once with process UPDATE and type PROJECT|Called twice with process INIT and type ESSENTIAL and with process INIT and type PROJECT|Project and essential scripts| |
- | ^ant updatesystem -Dtenant=junit((with a JSON configuration to run the project data))^ | + | ^ant updatesystem -Dtenant=junit((with a JSON configuration to run the project data))|:!: No call|||||||||: |
- | ^On HAC, initialize of the master tenant^ | + | ^ant yunitupdate|: |
- | ^On HAC, initialize of the master yunit^ | + | |
- | ^On HAC, update running system of the master tenant^ | + | |
- | ^On HAC, update running system of the master yunit^ | + | |
- | ===== Test description ===== | + | When @SystemSetup(extension |
+ | When @SystemSetup(extension | ||
- | The class used for the test is annotated at class level with: | + | <WRAP center round important 60%> |
- | < | + | Because the majority of the SAP hybris projects use Jenkins and **ant targets** to deploy, update system and initialization using HAC wasn't tested. |
- | @SystemSetup(extension = " | + | </ |
- | public class AnnotationCallsTest | + | ===== Cause of this behaviour ===== |
+ | |||
+ | The method de.hybris.ant.taskdefs.InitPlatformAntPerformableImpl# | ||
+ | |||
+ | ===== Test description ===== | ||
+ | I created a new extension based on the templa yempty and added the property **initialpassword.admin=nimda** to the local.properies. Then I created a {{ : | ||
+ | < | ||
+ | @SystemSetup(extension = ArecosystemsetuptestConstants.EXTENSIONNAME) | ||
+ | public class SystemSetupAnnotationCallsTest | ||
</ | </ | ||
Each method contains the following code for all possible combinations of process and type: | Each method contains the following code for all possible combinations of process and type: | ||
- | < | + | < |
@SystemSetup(process = SystemSetup.Process.UPDATE, | @SystemSetup(process = SystemSetup.Process.UPDATE, | ||
- | | + | public void logUpdateEssential(final SystemSetupContext hybrisContext) { |
- | LOG.error(String.format(" | + | LOG.error(String.format(" |
- | } | + | } |
</ | </ | ||
- | I ran all ant commands and process on HAC and I analysed | + | <WRAP center round important 60%> |
- | < | + | To make hybris call the methods, |
- | ant clean all initialize -Dtenant=master | tee initializeMaster.log | grep AnnotationCallsTest | + | </ |
+ | < | ||
+ | < | ||
</ | </ | ||
+ | |||
+ | |||
+ | I created a JSON configuration for the update running system which runs the create project data step: {{ : | ||
+ | I ran the following commands and I analysed the log afterwards: | ||
+ | <code bash> | ||
+ | rm -rf hybris/ | ||
+ | ant clean all | ||
+ | ant initialize -Dtenant=master | tee initializeMaster.log | grep SystemSetupAnnotationCallsTest | ||
+ | ant initialize -Dtenant=junit | tee initializeJunit.log | grep SystemSetupAnnotationCallsTest | ||
+ | ant yunitinit | tee yunitinit.log | grep SystemSetupAnnotationCallsTest | ||
+ | ant updatesystem -Dtenant=master -DconfigFile=/ | ||
+ | ant updatesystem -Dtenant=yunit -DconfigFile=/ | ||
+ | ant yunitupdate -DconfigFile=/ | ||
+ | </ | ||
+ | |||
+ | Source code: {{ : | ||
-- Based on SAP hybris 1905 | -- Based on SAP hybris 1905 | ||