[ 
https://jira.nuxeo.com/browse/NXBT-348?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Julien Carsique updated NXBT-348:
---------------------------------

    Description: 
h2. Technical dept on Test

h3. Non Regression tests

 - rewrite Selenium tests in WebDriver

 => make them more modular and easier to debug

 - improve Nuxeo HTML layout to make tests easier

 => make tests more robust

h3. Funkload tests

Currently only Ben can really fix a broken test.

We should probably improve training and documentation so that not only Ben can 
fix them when needed.


h3. Multi-DB / Multi-OS

MultiDB and Multi-OS tests matrix have been added recently.

There is still a lot of work to be done so that they all run :

 - fix unit tests on MSSQL and MySQL (h2, PGSQL et Oracle are ok)

 - Windows : there are still failed unit tests under windows

 - OpenJDK 7 : there are still failed unit tests under windows

 Non regression testing in Matrix should also be fixed but it's probably 
pointless until all unit tests are fixed.

h2. CI infrastructure speedup

The goal is to make CI feedback quicker.
We can not expect CI feedback to take a only few minutes :

 - build is big

 - we have a lot of tests in different configuration

But there are some actions we can do to improve the feedback time.

h3. fix Nexus / Jenkins concurrency issue

Nexus and Jenkins master share the same server and the same NAS.

 - Jenkins Master uses NAS storage to store the workspace (build and test 
results)

 - Nexus uses NAS to store the repo

Monitoring shows that the server has a load average about 2 and that Jenkins or 
Nexus are faster when the other service is off.

This means we should work on the global optimization of this Nexus/Jenkins 
setup : that will globalling improve speed of all CI :

 - for fetching / pushing artifacts

 - for storing results

Based on Ben's remarks, the main lead for improvement seems to be the NFS share 
:

 - separate NASs for Jenkins / Nexus ?

 - use local storage instead of NAS ?

 - NFS / NAS tunning ?

 - ...

h3. GWT Build issue

GWT build is really very slow and represent a big part of the global Nuxeo 
build time event if we only have a few (3 or 4) GWT modules.

=> This needs to be fixed, both for CI and for developpers

Identified solutions include :

 - change profile to limit the number of target browser (meaning nb of 
permitation) during the standard Build
   ( we will still need to do the full build for releases)

 - disable GWT optimizations during standard builds

 - be sure to only trigger the GWT build when needed 

See 
http://stackoverflow.com/questions/1011863/how-do-i-speed-up-the-gwt-compiler

h3. Slave build performances

Currently the build on the Jenkins slaves is about the same time than on a dev 
laptop.

=> we can make better !

It's true that a big part of the Jenkins slave are poor hardware (the dwarf).

Before taking any decision, we should probably do some profiling to see exactly 
what are the real impacting factors :

 - test build on a bigger CPU (like Octo)

 - use RAMFS to speedup I/O

 - tweak compile options ?

 - test on big RackSpace VMs

=> based on that we will be able to define what kind of Build slaves we need 

 (then we will have to see what we can host internaly and what must be external)

h2. CI Config

h3. Permanent checks

Permanent checks currently don't wait for nuxeo-features to be built but won't 
raise relevant issues until nuxeo-features is built.
In cases where there are a lot of commits, nuxeo-features build can take 
several hours.

=> need to change that

So basically, we could have permanent checks be closer to the IT builds :

 - rebuild everything from zero

 - do build / no UT / distrib on a fast slave 

 - dispatch non-reg tests on different hosts

h3. Addons

Current distribution build depends on some addons: the one that are considered 
standard and used in distribs / MP packages.

=> Create a job that build all "standard" addons so that distribution does not 
have to wait for 20 jobs

h3. JBoss distrib

We need to update JBoss distribution to align on tomcat/MP build.


h2. Tests to add

There are still some part of the platform that are poorly / not enough tested

h3. Studio

XXX Let Anahide list what she has in mind, but basically :

 - define a standard Studio project

 - run build against different targets

 - check result in a running Nuxeo on several target versions

h3.Admin Center / Marketplace 

We already have a webdriver test that tests the basis.

We need to extend it so that we validate for example :

 - add CMF / uninstall DM

 - Install DAM / uninstall DAM + install CMF 

 - ...

XXX more here 


  was:
h2. Technical dept on Test

h3. Non Regression tests

 - rewrite Selenium tests in WebDriver

 => make them more modular and easier to debug

 - improve Nuxeo HTML layout to make tests easier

 => make tests more robust

h3. Funkload tests

Currently only Ben can really fix a broken test.

We should probably improve training and documentation so that not only Ben can 
fix them when needed.


h3. Multi-DB / Multi-OS

MultiDB and Multi-OS tests matrix have been added recently.

There is still a lot of work to be done so that they all run :

 - fix unit tests on MSSQL and MySQL (h2, PGSQL et Oracle are ok)

 - Windows : there are still failed unit tests under windows

 - OpenJDK 7 : there are still failed unit tests under windows

 Non regression testing in Matrix should also be fixed but it's probably 
pointless until all unit tests are fixed.

h2. CI infrastructure speedup

The goal is to make CI feedback quicker.
We can not expect CI feedback to take a only few minutes :

 - build is big

 - we have a lot of tests in different configuration

But there are some actions we can do to improve the feedback time.

h3. fix Nexus / Jenkins concurrency issue

Nexus and Jenkins master share the same server and the same NAS.

 - Jenkins Master uses NAS storage to store the workspace (build and test 
results)

 - Nexus uses NAS to store the repo

Monitoring shows that the server has a load average about 2 and that Jenkins or 
Nexus are faster when the other service is off.

This means we should work on the global optimization of this Nexus/Jenkins 
setup : that will globalling improve speed of all CI :

 - for fetching / pushing artifacts

 - for storing results

Based on Ben's remarks, the main lead for improvement seems to be the NFS share 
:

 - separate NASs for Jenkins / Nexus ?

 - use local storage instead of NAS ?

 - NFS / NAS tunning ?

 - ...

h3. GWT Build issue

GWT build is really very slow and represent a big part of the global Nuxeo 
build time event if we only have a few (3 or 4) GWT modules.

=> This needs to be fixed, both for CI and for developpers

Identified solutions include :

 - change profile to limit the number of target browser (meaning nb of 
permitation) during the standard Build
   ( we will still need to do the full build for releases)

 - disable GWT optimizations during standard builds

 - be sure to only trigger the GWT build when needed 

See 
http://stackoverflow.com/questions/1011863/how-do-i-speed-up-the-gwt-compiler

h3. Slave build performances

Currently the build on the Jenkins slaves is about the same time than on a dev 
laptop.

=> we can make better !

It's true that a big part of the Jenkins slave are poor hardware (the dwarf).

Before taking any decision, we should probably do some profiling to see exactly 
what are the real impacting factors :

 - test build on a bigger CPU (like Octo)

 - use RAMFS to speedup I/O

 - tweak compile options ?

 - test on big RackSpace VMs

=> based on that we will be able to define what kind of Build slaves we need 

 (then we will have to see what we can host internaly and what must be external)

h2. CI Config

h3. Permanent checks

Permanent checks currently wait for feature to be built.
In cases where there are a lot of commits, features build can take several 
hours.

=> need to change that

So basically, we could have permanent checks be closer to the IT builds :

 - rebuild everything from zero

 - do build / no TU / distrib on a fast slave 

 - dispatch non-reg tests on different hosts

h3. Addons

Current distibution build depends on some addons : the one that are considered 
standard and used in distribs / MP packages.

=> Create a job that build all "standard" addons so that distribution does not 
have to wait for 20 jobs

h3. JBoss distrib

We need to update JBoss distribution to align on tomat/MP build.


h2. Tests to add

There are still some part of the platform that are poorly / not enough tested

h3. Studio

XXX Let Anahide list what she has in mind, but basically :

 - define a standard Studio project

 - run build against different targets

 - check result in a running Nuxeo on several target versions

h3.Admin Center / Marketplace 

We already have a webdriver test that tests the basis.

We need to extend it so that we validate for exemple :

 - add CMF / desinstall DM

 - Install DAM / DAM + install CMF 

 - ...

XXX more here 



> Improve CI and Testing framework
> --------------------------------
>
>                 Key: NXBT-348
>                 URL: https://jira.nuxeo.com/browse/NXBT-348
>             Project: Nuxeo ECM Build/Test Environment
>          Issue Type: User story
>            Reporter: Thierry Delprat
>            Assignee: Julien Carsique
>
> h2. Technical dept on Test
> h3. Non Regression tests
>  - rewrite Selenium tests in WebDriver
>  => make them more modular and easier to debug
>  - improve Nuxeo HTML layout to make tests easier
>  => make tests more robust
> h3. Funkload tests
> Currently only Ben can really fix a broken test.
> We should probably improve training and documentation so that not only Ben 
> can fix them when needed.
> h3. Multi-DB / Multi-OS
> MultiDB and Multi-OS tests matrix have been added recently.
> There is still a lot of work to be done so that they all run :
>  - fix unit tests on MSSQL and MySQL (h2, PGSQL et Oracle are ok)
>  - Windows : there are still failed unit tests under windows
>  - OpenJDK 7 : there are still failed unit tests under windows
>  Non regression testing in Matrix should also be fixed but it's probably 
> pointless until all unit tests are fixed.
> h2. CI infrastructure speedup
> The goal is to make CI feedback quicker.
> We can not expect CI feedback to take a only few minutes :
>  - build is big
>  - we have a lot of tests in different configuration
> But there are some actions we can do to improve the feedback time.
> h3. fix Nexus / Jenkins concurrency issue
> Nexus and Jenkins master share the same server and the same NAS.
>  - Jenkins Master uses NAS storage to store the workspace (build and test 
> results)
>  - Nexus uses NAS to store the repo
> Monitoring shows that the server has a load average about 2 and that Jenkins 
> or Nexus are faster when the other service is off.
> This means we should work on the global optimization of this Nexus/Jenkins 
> setup : that will globalling improve speed of all CI :
>  - for fetching / pushing artifacts
>  - for storing results
> Based on Ben's remarks, the main lead for improvement seems to be the NFS 
> share :
>  - separate NASs for Jenkins / Nexus ?
>  - use local storage instead of NAS ?
>  - NFS / NAS tunning ?
>  - ...
> h3. GWT Build issue
> GWT build is really very slow and represent a big part of the global Nuxeo 
> build time event if we only have a few (3 or 4) GWT modules.
> => This needs to be fixed, both for CI and for developpers
> Identified solutions include :
>  - change profile to limit the number of target browser (meaning nb of 
> permitation) during the standard Build
>    ( we will still need to do the full build for releases)
>  - disable GWT optimizations during standard builds
>  - be sure to only trigger the GWT build when needed 
> See 
> http://stackoverflow.com/questions/1011863/how-do-i-speed-up-the-gwt-compiler
> h3. Slave build performances
> Currently the build on the Jenkins slaves is about the same time than on a 
> dev laptop.
> => we can make better !
> It's true that a big part of the Jenkins slave are poor hardware (the dwarf).
> Before taking any decision, we should probably do some profiling to see 
> exactly what are the real impacting factors :
>  - test build on a bigger CPU (like Octo)
>  - use RAMFS to speedup I/O
>  - tweak compile options ?
>  - test on big RackSpace VMs
> => based on that we will be able to define what kind of Build slaves we need 
>  (then we will have to see what we can host internaly and what must be 
> external)
> h2. CI Config
> h3. Permanent checks
> Permanent checks currently don't wait for nuxeo-features to be built but 
> won't raise relevant issues until nuxeo-features is built.
> In cases where there are a lot of commits, nuxeo-features build can take 
> several hours.
> => need to change that
> So basically, we could have permanent checks be closer to the IT builds :
>  - rebuild everything from zero
>  - do build / no UT / distrib on a fast slave 
>  - dispatch non-reg tests on different hosts
> h3. Addons
> Current distribution build depends on some addons: the one that are 
> considered standard and used in distribs / MP packages.
> => Create a job that build all "standard" addons so that distribution does 
> not have to wait for 20 jobs
> h3. JBoss distrib
> We need to update JBoss distribution to align on tomcat/MP build.
> h2. Tests to add
> There are still some part of the platform that are poorly / not enough tested
> h3. Studio
> XXX Let Anahide list what she has in mind, but basically :
>  - define a standard Studio project
>  - run build against different targets
>  - check result in a running Nuxeo on several target versions
> h3.Admin Center / Marketplace 
> We already have a webdriver test that tests the basis.
> We need to extend it so that we validate for example :
>  - add CMF / uninstall DM
>  - Install DAM / uninstall DAM + install CMF 
>  - ...
> XXX more here 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
ECM-tickets mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm-tickets

Reply via email to