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

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

    Component/s: Selenium tests
                 Continuous integration
           Tags: Backlog

> 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
>          Components: Continuous integration, Selenium tests
>            Reporter: Thierry Delprat
>            Assignee: Julien Carsique
>
> h2. Technical debt 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.
> => migrate CMIS and Rest Tests in java
> 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
> NB : we can also extract GWT modules in Addons to help running GWT builds in 
> parallel
> 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
ECM-tickets@lists.nuxeo.com
http://lists.nuxeo.com/mailman/listinfo/ecm-tickets

Reply via email to