Hi students and potential MINA mentors, I had a couple conversations with a few peeps that wished they had a month or two to write a slick new framework for load testing MINA based applications while using MINA itself to write the framework. My experiences with MINA and various crappy tools out there make me realize that performance tuning a network application is half the battle. I know others probably feel the same.
Then all this GSoC stuff is going on and the idea occurs to one of us (not me it was Emmanuel's idea) that we can make this a nice tight discrete project where a student can accomplish this task while learning about MINA and getting involved in our community. This is just a win win situation. The idea is simple. We have a set of load injecting worker processes that are coordinated by managers on each load injecting host. The managers simply control the life cycle of worker processes and get their orders to do so from a data collecting and collating server with a management console. This requires some kind of simple control protocol which can be written using MINA. For the console I dream of a slick GWT interface where you can launch tests and control injector hosts. Oh the fun you can have with statistics etc ... anyways back from dream land ... Ideally separate managers reside in a set of load injecting machines and the system under test resides on yet another. Likewise the console server can run on a separate machine as well. The clients funnel data to the collating server for jobs and are network applications that likewise can be written using MINA. Regardless of the topology used this is the general model presented by may performance testing frameworks like Grinder and SLAMD. The neat thing is some frameworks can even start running optimizations where parameters are varied to find optimal running conditions. I'd like to do this too but perhaps also have an agent in the tested application as a Filter probably to both monitor and influence the application. This makes the server more of a white box than a black box undergoing testing from the outside. It could for example vary standard MINA server parameters to find optimal settings while monitoring server process information like memory and thread usage etc. There are many possibilities here. We could even use Genetic Algorithms and Optimization Algorithms to control and influence the optimization process - ok getting carried away. For starters of course this feature may not be present :D. However the idea is the student can take this as far as they like. The bottom line is this is a great project for a student interested in using MINA to tune MINA while getting their feet wet and involved in this community. MINA users will now have a framework they can use and hopefully contribute back to. Everyone is happy. Thoughts? Anyone interested in mentoring or taking on this project as a student in GSoC? Thanks, Alex