views:

156

answers:

4

hi all,

we are currently establishing fitnesse as the testing tool user acceptance testing. so far everything is good. we are using the java version "20091121". we are having troubles with folders that are deeper than 4.

we have setup the following folder structure

SetUp

TestSuite

content.txt + properties.xml (just "!contents" inside)

UseCase2204

content.txt + properties.xml (just "!contents" inside)

SingleRequest02

content.txt + properties.xml (just "!contents" inside)

PositiveTest

content.txt + properties.xml (just "!contents" inside)

OneAdultWithChild

here content.txt + properties.xml for the actual test containing 18 fixture tables

when we start fitnesse and navigate to the deepest folder ("OneAdultWithChild") it takes roundabout 10 seconds until the page is displayed. now, when i move the content up one hierarchy level (into "PositiveTest") the page takes 3 seconds to render. when i put the test content on the second level ("UseCase2204") it almost displays in a instant.

the same behaviour happens during test executing.

after pressing the "test" button the tests take:

  • second level: 12 seconds
  • fourth level: 14 seconds
  • fifth level: 40 seconds! (plus, it takes ages until the "result captured" button appears)

now, i am stuck with this :( we need this deeply nested structure to group all the tests. but if there is no solution or workaround we can't use fitnesse and i will be a big idiot for promoting the framework. in the past i've had positive results with fitnesse but we didn't have these deeply nested structures.

so, any help would be really appreciated.

cheers marcel

+1  A: 

Have you tried contacting the maintainer(s) of FitNesse about this? That should be your first course of action. Here's their "Get help" link: http://www.fitnesse.info/help .

In the meantime, if you can, you could try profiling fitnesse. It's quite possible that most of that time is spent in one or two places and a suitable workaround can be found. As this is an open source project, you should be able to have a quick look around the code. If you want to, anyway.

Update: Just a thought, is your test hierarchy on a NFS mount? Could you try running it on a "real" disk?

Carl Smotricz
thanks for the quick answer. yes, profiling would be worth a try. we already had a look around the source code for another problem, and the code isn't the most readable in some places ;-). it's a really bizarre behaviour. the next thing i will try is to use a fresh fitnesse instance and recreate the folder structure from scratch, without any setup etc.. by the way we are using "slim" as test system, maybe that's another slow down.any more help is really appreciated as i guess other people must have had the same problems.
Marcel
+1  A: 

so, we've done some profiling. the main time of the 40 seconds to load the page (just load, not run) is spent in the following methods:

  • fitnesse.wikitext.widgets.WidgetRoot.render
  • fitnesse.wikitext.widgets.WidgetRoot.getVariable
  • fitnesse.wiki.PageData.initializeVariableRoot
  • fitnesse.wikitext.widgets.VariableWidget.doRender

it seams like the varibale replacement logic + the widget rendering is using all the time :(

especially the "private void doRender()" in the fitnesse.wikitext.widgets.VariableWidget gives me headaches. there's a comment complaining about the complexity and that all this should be refactored.

see here

http://github.com/lvonk/fitnesse/commit/a7242991039970d769db681afa2336285700d421#diff-10

to me it looks like a dead end at the moment. we would use fitnesse for a really big project, one of the biggest IT projects currently ongoing in germany/europe. but i can't sell this if such basic stuff does not work fast enough :-/

i am still hoping that someone knows a fix otherwise i'll have to dig into the code over christmas and try to make it a bit faster.

i just noticed that there is a newer version (2009-11-25) on git hub that got rid of the comment and some lines of code were also changed. i'll give that a try.....

help highly appreciated

cheers marcel

Marcel
A: 

It might not be the specific solution, but there is a fix for one Widget rendering issue that is currently being looked at: http://www.pivotaltracker.com/story/show/2200962

There is also a story out there for redoing the parser to be more efficient and capable, but that is a significant effort. Not sure when work will start on that.

Dan Woodward
A: 

dan,

thanks for your answer. this is what i've posted on the yahoo fitnesse group:

hi,

i just downloaded release "20100103" from the website and gave it a try with the same setup. a major improvement! i am very happy about this. now i can continue with the initial setup and hopefully convince everybody about it.

the performance improvement is also visible during test execution - very good. i can't see any significant difference between top level and nested tests anymore.

i hope the rest of the system behaves in the same way :)

thanks a lot for the quick help. i will be back with more feedback (or problems ;-)) after the inital setup is done and the people start working with it (developers and testers).

cheers marcel

Marcel