Logging to a database is an excellent idea, though you'll want to abstract the code 
enough that it can log to any SQL-compliant database.

It should be possible to enable all the current visualizers to use the database 
logging.  Currently, all visualizers allow one to choose a file to log to (or load 
data 
from).  It would be a fairly simple matter to give a choice of a file or a database, 
and make the visualizer behave accordingly.

Also, the current method of saving log information via xml is looking like a failed 
experiment.  The idea was to have a format easy to parse for external uses, but it's 
too much inefficiency for dubious gain.  I will probably look at changing the format 
to a less self-explanatory, but more efficient format, like csv.

-Mike

On 16 Oct 2002 at 0:28, Michal Kostrzewa wrote:

> 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]>
> 



--
Michael Stover
[EMAIL PROTECTED]
Yahoo IM: mstover_ya
ICQ: 152975688

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to