Thursday, June 16, 2011

Cob_Spec and Credence (My "C" Projects)

Cob_Spec is starting to come together nicely. As I mentioned in my last post, cob_spec is an HTTP Server acceptance testing framework. This week I was able to implement simultaneous requests (which right now adds in batches of 100). The simultaneous requests are handled by the typheous gem and is working very nicely. Cob_spec now allows the user to specify an address to test in a batch of 100. That batch of 100 is added to an array of addresses to check in parallel and the server receives a query for each individual address when the test is run. This is shaping up nicely for testing, oh I don't know, Tic-Tac-Toe servers and the like.

To use simply grab cob_spec from Github. Next, run bundle install in the root folder of cob_spec. Then use the command java -jar fitnesse.jar -p 8080 and navigate your browser to http://localhost:8080/ to use the testing suite.

Secondly, Paul and I have taken some time to extract the estimation tool out from artisan and develop credence. Credence allows a user to create an estimation room and invite fellow estimators to estimate projects. The events are driven by pusher, which is cool because some of the heavy lifting is moved to pusher. Credence currently supports single and pert estimate rooms.

Friday, June 10, 2011

Acceptance Testing and other Small Projects

This week I fixed and added to Cob Spec, which is a simple HTTP Server testing framework. It runs using FitNesse and Ruby Slim and so far tests for a 200 OK response and a 404 Not Found response when necessary. The plan is to expand Cob Spec further and have more rigorous testing. I'm in the process of extending Cob Spec and I started working on a fixture to simulate simultaneous browser requests, but this is still a work in progress. Eventually (when everything decides to cooperate), this test will be part of the Cob Spec suite.

This week I was also able to complete my first Artisan story (for a whopping one point!). I am now trying to focus on becoming more fluent in Rails and have the opportunity to add to the many Rails projects in progress at 8th Light. Besides Artisan, I have been working with Paul on Credence.

On a side note: It feels good to have Tic-Tac-Toe behind me.

Friday, June 3, 2011

Threading the HTTP Server

Unfortunately, I have not had as much time as I would like to have to spend at 8th Light (porque tengo una clase de espaƱol en la tarde). That being said, this week I was able to create a working HTTP server and play out entire tic-tac-toe games. This works great and I'm glad to be at this point. From here I need to make my server threaded (we don't want everyone playing one collective game) and manage games per user. This lead my inquiries into two directions; one, to Threads in Java and two, to using cookies to manage user sessions.

Java's standard library includes a Thread class which makes threaded concurrency fairly simple when working with Java. By having my Server class extend Thread I am able to receive concurrent Socket connections and handle them properly. This piece of work is still in progress, but extending Thread allows me to avoid a complete headache.

Using cookies is also fairly simple. When generating my packet headers I now need to be mindful of the Set-Cookie and Cookie fields. When generating a new Game, I can assign a new cookie and use a HashMap to map the unique cookie to the specific Game. Moving forward, I need to reset the cookie at the end of each game and then this portion of my code will be working.

I was also able to implement a few other odds and ends relating to my HTTP server, namely I now give out a 404 Error for paths that do not exist.

This week I was also introduced to Artisan and 8th Light's project management process. Mike was able to help me get started with using Artisan. He explained the ideas of stories, iterations, estimating, ect, that all go into managing projects. I was also able to work on an Artisan project on Artisan (let that sink in). Kevin and I were able to take some time to pair and work on a story to validate unique login names and allow users to only edit their own profile.

Finally, I was able to deploy my gaeshi project to fulfill the homework requirements for last week's 8th Light university. It's not much and I would really like to play around with Gaeshi when I have some spare time. I want to try something ambitious and create a blogging app for Gaeshi and migrate my 8th Light blog.