Friday, December 9, 2011

Load Testing Services across GWT RPC

I tried to look up the www on how to load test our application across the technology stack we have: GWT - RPC - Services. Turned out not many tools - in the open source - that provide this functionality and JMeter lacks proper support for GWT RPC protocol.
A couple of options occured to me.
Option 1: Hack GWT generators
GWT is all opensource. And the problem is only with the client side of the RPC. All we need is the ClientSerializationStreamWriter to construct the RPCRequest and ClientSerializationStreamReader to handle service responses. Since GWT generates the client serializers via deferred binding at compile time, I started with the assumption that I could hack the GWT proxy generators to remove / stub out JSNI references from the generated service proxies and type Serializers and use these as part of my load test client. After a day of walking through the GWT implementation, I understood this was not a good idea. Though theoretically possible, the hack was not worth the couple of weeks of effort for multiple reasons.
And I decided to evaluate Option 2: Implement the client side of the RPC protocol and plug this into JMeter. This did not turn out to be as difficult as it seemed first up. Some help and atleast one instance of this attempt to start with. And within a week I have a primitive POC version of GWT RPC plugged into JMeter. I am in the process of implementing a proper GWTRPC Sampler for JMeter. Details I will publish as soon as I am done.

Raising the level of abstraction for Rich UI development

At Planetsoft we have been trying to build a framework that greatly simplifies enterprise product development. For the last couple of years my work has been mostly concerned with User Interface part of the framework we call PICF.
We perceive the world as an abstraction of reality. Abstraction is the mind's way of managing complexity and the key to software computing.
The key to simplifying application development and improving productivity is by raising the level of abstraction to the level at which we think and design. That is what we attempted to do to Rich UI development. Traditionally there have been a number of frameworks and tools that simplify UI development by providing WYSIWIG editors. XForms is an example of an attempt to capture UI spec in a platform independent fashion.
In the process, we evolved and XML based DSL, that we call View Metadata, for capturing UI behavior along with the visual elements and their layout. In addition, the framework provides a set of business use case oriented user interface patterns out of the box. The idea of coarse grained UI patterns encapsulates the complexity of Rich UIs and also provides a consistent user experience across a suite of products.