Hi all, I have some questions about extending jMeter and I'm placing it on users list, because somobody may be interested in it.
My ideas (problems and solutions) The problem number 1: When you do a long test with jMeter even not logging everything you receive *very* long XML log file (tens of MB and more) which cannot be processed with standard jMeters browsers, because they try to load all the file to memory. This reason also causes problems when running tests with GUI and listeners - after some time you receive OutOfMemory exceptions. Proposed solution: I implemented JDBCLogging, - now you can store samples to database. You can test in GUI mode and you can browse and analyze files *very* efficiently, because only records seen on the screen are fetched from the (indexed) database. Easy management of tests and ability to ask complicated SQL questions allows doing functional tests when using long and heavy load. Such tests can reveal uncommon application errors not happening when one tester is doing so called functional test (e.g. deadlocks and such) The problem number 2: Today, web applications have multi tier architecture. So we have browser - www server (e.g. Apache) - frontend (e.g Tomcat) - backend (e.g. some EJB containger) - database (e.g. ORACLE). When testing you replace browser with jMeter and you get 5 different log files possibly on 5 different machines. It's uneasy to answer the question e.g. "What user have exactly seen (HTML Content), when we get on EJB container such nasty SQLEXception" or say something about cicrumstances (requests) causing this error. Proposed solution: I'm implementing an extension to problem 1, in which every server log is collected in one database. It can be done on 2 ways: "online logging" - for example you can set log4j.properties, so the application can log into your (jMeters) database and "offline logging" when you just import logs to database after tests. All logs have similar structure: "timestamp" and "content" and possible (and very useful) "sessionid" which can be used to distinguish users and trace them in all layers. In jMeters viewers there will be table with all logs sorted by timestamps and filtered by sessionid so you can easily trace flow of control in all the layers. When I'm finish, I'll of course send it to jMeters developers if they like it. But here goes developement question: I've already implemented JDBC logging and it works, but I'm not sure I did it in proper way: I implemented DBResultCollector as a SampleListener and TestListener, and you can place it into the tree. You can configure the test and logging option here (fine grained). Then you add to this element visualizers (only implemented DBTableVisualizer already). This visualizers implements DBViewer interface and DBResultCollector takes care of DBViewers notification. I've only modified MenuFactory to provide standard menu for DBResultCollector. Is my approach sensible? For some strange reason it's not working when I place it in the Test node instead of ThreadGroup. Also I had to implement another TableViewer, but the better (but unfeasible) solution was subclass standard TableViewer and change only tablemodel there. In my solution you configure JDBC and logging in DBResultCollector not using any ConfigTestElements. I'll really appreciate any comments on this and I can redesign it if it will be neccessary. best regards Michal Kostrzewa -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>