dev@grizzly.java.net

[Fwd: [GSoC] Protocol performance testing framework]

From: Jeanfrancois Arcand <Jeanfrancois.Arcand_at_Sun.COM>
Date: Wed, 01 Apr 2009 11:07:03 -0400

Interesting...

-------- Original Message --------
Subject: [GSoC] Protocol performance testing framework
Date: Wed, 01 Apr 2009 14:49:51 +0200
From: Alex Karasulu <akarasulu_at_apache.org>
Reply-To: dev_at_mina.apache.org
To: Apache Directory Developers List <dev_at_directory.apache.org>,
dev_at_mina.apache.org

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.

Regards,
Alex