Infinispan Google Summer of Code projects

The aim of this article is to track the Infinispan specific accepted GSoC ideas for 2012:


JIRATitleStudentMentorDesign wiki
ISPN-469Hot Rod client in .NET/C#SunimalMircea MarkusDesign


Below is table to track progress of Sunimal developing the Hot Rod client:


WeekWeekly Objective
Daily progressMentor comments
Meeting notes
Week 1 - 14th MayImplement Transport Layer and a simple operation (eg: Ping)

Monday: Studing hotrod protocol and existing java client


Tuesday: Studing Hotrod protocol and existing java client, Implementing classes that hold hotrod header patameters and hotrod opcodes, Started Implementing TCP Transport Layer.



Wednesday: Studing protocol furher. Specially the response frame.


Thursday: Researched on various testing tools I can use to test the library. (egL NUnit and Microsoft Visual Studio Integrated Unit Testing Framework)


Friday: Tried to start the server for testing (using python script) , but couldn't succeed.


Note: There was a little deviation from the plan as I did not focus on implementing operations. Instead I focussed more on
understand the protocol and researching unit testing methodologies. Transport layer implementations were carried out. (send and listen methods, connecting to remote server.)

- Encoding/decoding variable length integers and longs would be something easy to get started with too.


- Python script startup issues could be due to relative path issues with regards to where the Infinispan configuration is located. Workarounds suggested on IRC and email.


- Think about connection pooling, and avoiding constant thread creation.


- GitHub repo for the .NET client created.

Week 2 - 21st May

- write a base unit test class that can start a hotrod server from dot net

- implementing ping, put and get operations with a single-server unit tests

Monday:Transport Layer Implementation

Tuesday: PING, PUT, GET Operations implementation

Wednesday: PING, PUT, GET Operations implementation

Thursday: PING, PUT, GET Operations implementation

Friday: Debugging and eliminating build errors


Note: Got started with writing unit tests. Pushed to Git repo

Week 3 - 28th May

- Add unit tests for put, get, ping

- continue implemening operations: containsKey, getWithVersion, remove, putIfAbsent, replace, bulkGet, removeIfUnmodified, clean and stats 

Monday: Learning about writing unit tests and writing unit tests for

developed operations

Tuesday: Implementing Remove, ContainsKey, PutIfAbsent

Wednesday:Implementing Remove, ContainsKey, PutIfAbsent

Thursday: Unit Testing

Friday: Debugging

Week 4 - 4st June- bug fixing, implement rest of the operations

Monday: Solved some issues regarding transport layer by introducing

a BufferedWriter instead of directly writing onto the stream

Tuesday: Implemented Operations and unit tests

Wednesday:Implemented Operations and unit tests

Thursday:Implemented Operations and unit tests

Friday:Implemented Operations and unit tests

Week 5, 11th June

- code comment

- add more unit tests

- use the Infinispan.HotRodClient namespace

- remove binaries from git

- add .gitignore
- finish the remanining 6 operations

Monday: Unit testing

Tuesday: Debugging and changing namespaces

Wednesday: Implemeting opearations, debugging, improving code quality, Added NLog

Thursday:Implemeting opearations, debugging, improving code quality, Exception Writing

Friday:Implemeting opearations, debugging, improving code quality, Exception writing



18th June

- add logging

- add exception handling

- add support for serialization and a nicer user API

- add programmatic configuration

- start the server from command line to automate test running

Monday:Added logging

Tuesday: Exception classes were written

Wednesday:Added an XML config file which can be read programmatically

Thursday:More unit tests added

Friday: Testing the client wih unit testing

Week 7, 25th June

Monday:Implementing Serialization and public API

Tuesday:Implementing Serialization and public API

Wednesday:Improving public API based on mentor feedback
Thursday:Improving public API based on mentor feedback

Friday:Testing with public API

Week 8, 2nd July

Monday:Improving Serialization Component
Tuesday:Writing new test cases

Wednesday:Testing the client with test cases

Thursday:Research on Serialization bug

Friday:Research on Serialization bug

Week 9, 9th July


Monday:Correcting Serialization bug
Tuesday:Adding XML xomments
Wednesday:Adding XML Comments
Thursday:Research on using Microsoft Sandcastle to generate helpfile
Friday:Improving code quality by removing whitespaces, and restructuring code

Week 10, 16th July
Monday:Creating Sample Application
Tuesday:adding documentation comments
Wednesday:Generating helpfile
Thursday:Improving RemoteCacheImpl and RemoteCacheManager based on Mentor feedback
Friday:Improving RemoteCacheImpl and RemoteCacheManager based on Mentor feedback

Week 11, 23rd July
Monday:Reordering files in github and changing directory names according to naming convention