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



Week

6,

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