On Fri, Sep 2, 2016 at 10:00 AM, Vincent Massol <[email protected]> wrote:
> FWIW I’ve done a quick analysis of the speed of executing a XAR unit test 
> (see http://dev.xwiki.org/xwiki/bin/view/Community/Testing#HXARTesting).
>
> Globally it takes 3ms for the first test on my machine.
>
> With a profiler the time is roughly doubled (6ms) and is spread like this 
> (for stuff that takes the most time):
>
> * loadPage(): 1.1s
> ** TIKA init : 800ms (initialized in XWikiAttachment)
>
> * getRenderedContent(): 1.2s
> ** org.apache.xpath.jaxp.XPathImpl.evaluate(): 260ms
> ** javax.validation.Validation.buildDefaultValidatorFactory(): 260ms
>
> * init stuff:
> ** org.slf4j.LoggerFactory.getLogger(String): 804ms
> ** mocking: 288ms
> ** component registration: 260ms
>

Note that except for component registration and mocking (not sure
about XPathImpl#evaluate), I think most of the others are about static
stuff being initialized the first time so following tests in the same
run should be way faster than the first one.

> My only ideas for speeding slightly the execution time would be to ensure 
> that TIKA is not initialized for the test until it is required. And maybe 
> check why SLF4J takes so long and find a way to make it run faster (maybe use 
> a noop logger).
>
> So those 2 items could win us a max of 1.6s out of 6s, so that’s 800ms out of 
> 3s. Which would lower our exec time for a single test to close to 2 seconds.
>
> But I don’t see how to go below that value.
>
> Conclusion:
> ==========
>
> - IMO we shouldn’t call those tests unit tests but integration tests (that’s 
> what they are in practice)
> - we should run them in the integration-tests profile to not slow down the 
> main build too much
> - they’re still way faster than writing a functional tests (more than 1 
> minute to package and run - that’s 20 times slower at best), so when possible 
> this should be favored when we want to validate some specific behavior of a 
> wiki page or ensure that a regression won’t happen again
>
> WDYT?
>
> If we’re ok I’ll make the changes (integration-tests profile + rename to 
> integration tests).
>
> Thanks
> -Vincent
>
>
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs



-- 
Thomas Mortagne
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to