Hi,
I’ve been spending some time looking as to why our tests are so slow, so I’ve profiled
a WFS surefire process while it was running our tests.
Here is a breakdown from the main method:
root) org.apache.maven.surefire.booter.ForkedBooter.main(String) 94094 0
…
setup) org.geoserver.test.GeoServerBaseTestSupport.doSetup() 49714 0
test-methods) sun.reflect.NativeMethodAccessorImpl.invoke0(Method, Object, Object) 35130 0
The test-methods root contains all the single test methods runs, e.g.:
-
org.geoserver.wfs.ExternalEntitiesTest.testWfs1_1() 932 0
-
org.geoserver.wfs.AliasTest.testAliasFifteen() 856 0
-
org.geoserver.wfs.GetFeaturePagingTest.testStartIndexMultipleTypesPOST() 755 0
-
org.geoserver.wfs.GetFeaturePagingTest.testStartIndexMultipleTypes() 584 0
and so on
So… we are spending 53% of our build time running the various setups… not nice.
And here is how the doSetup breaks down:
So, we are spending 32% of our overall build time running security subsystem data directory migrations…
that really needs to be fixed, I believe, it’s pretty much the same time we spend actually running
test methods…
I guess the best approach would be to make sure that we generate the security subsystem config
already at the latest version required.
But, there is something else going on here, those migration result in a insane amount of calls to
the GeoServerSecuritManager.persister(), which in turns creates a XStream persister from
scratch. Have a look, we call that method 300.000 times during the WFS test build alone:
I believe there is something fishy going on there, like, I see the HelperBase.loadConfig class
called over and over loading the same files, I’m afraid there might be some sort of event escalation
(like, changing one of the security config files, which results in the whole security being reloaded,
then change another, and so on).
The code seems in need of a refactor, where a single persister is reused for all the migration operations.
Christian, do you have some time to look into this issue? By comparisong, loading the catalog
from the many little config files takes only 3 seconds overall, that is, 1/10th of the time we spend
doing these migrations.
Cheers
Andrea
···
==
GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.
==
Ing. Andrea Aime
@geowolf
Technical Lead
GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549
http://www.geo-solutions.it
http://twitter.com/geosolutions_it
AVVERTENZE AI SENSI DEL D.Lgs. 196/2003
Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse, costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.
The information in this message and/or attachments, is intended solely for the attention and use of the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree June, 30 2003, no.196 - Italy’s New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying, distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named addressee(s). If you are not the intended recipient, please contact immediately the sender by telephone, fax or e-mail and delete the information in this message that has been received in error. The sender does not give any warranty or accept liability as the content, accuracy or completeness of sent messages and accepts no responsibility for changes made after they were sent or for other risks which arise as a result of e-mail transmission, viruses, etc.