Hi all,

Please excuse the cross post but this proposal for a Google Summer of Code project applies as much to Apache MINA as it does to Apache Directory.  The idea is very simple, you have the following components:

  (1) A MINA protocol server that is being tested.
  (2) A MINA IoFilter for statistics collection for use in any MINA protocol server.  This filter may collect information from the system, the JVM and from MINA itself.  It can sample this information and push this information into the statistics collector (#4 below).  It will probably expose some out of band socket for communcation and control.
  (3) A load injecting agent which can accept PDU's or a sequence of PDU's to inject into the MINA protocol server.  Several of these may be instantiated on different hosts to generate load on the server.  The PDU's are prepared and supplied in advance before begining a test from the agent control UI (#4).  These agents have a socket channel for command and control from the Agent Control UI.  They will all be started together to start generating load against the server.  PDU's are supplied to keep these agents ignorant about the protocol being used.  This way the control UI can be used to prepare PDU's in advance.
  (4) Agent control UI and statistics collator.  This is the command center that communicates with the agents to tell them what PDUs to send to which endpoints and at what frequence if things cycle.  This agent also gathers statistics from all the agents to get client latency information as well as to generate overall throughput statistics from the time collated data obtained from all the load inject agents/clients.  It also controls the sampling rate of the IoFilter injected into the server and collects data from it to correlate memory usage, CPU, server side latencies and other factors effecting server performance.

We at Directory were thinking of building something like this for LDAP but then quickly realized that we also need this for DNS, DHCP, Kerberos, and ChangePassword and anything else we may snap into the server.  We're sure any other protocol could benefit from this as well.  So it might be a good idea to combine efforts while giving the many GSoC students we've had responses from a chance to do something more at other Apache Projects.  Plus we have a few RCP developers at Directory one of whom was willing to lend a hand to help build the basis for the agent control UI and statistics collector.

So if students and others are interested in this I'm sure something could be built by the end of summer that will be useful to anyone using MINA.