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