Posts about technology and arts.
Botando o Jenkins para rodar seus testes
It’s been a while since the last time I posted something here. The reason is that I have been busy fixing bugs in Jenkins TestLink Plug-in, TestLink, TestLink Java API, tap4j, Jenkins TAP Plug-in and other Open Source projects.
Recently I left Sysmap Solutions, where I was a consultant, to have my labor card signed by Lojas Riachuelo, a famous Brazilian fashion retailer (like C&A, Zara, H&M and so on), part of Guararapes group.
So I am still getting used to the new routine, new systems and be a employee rather than a consultant.
There are also two talks to come, one in a few days at TDC (The Developers Conference) 2011 in Florianópolis, and another one in the beginning of September at JCertif in Congo/Brazzaville. While I already bought the tickets and booked the hotel rooms, I still have to finish some slides and practical examples for both events.
I already have two draft posts that I am still writing. One about continuous integration and parallelism/concurrency, and another one about spell check in DocBook projects, specially if you are using Maven.
Today I had a new idea for a bioinformatics tool that is may be helpful for researchers and bioinformatics professionals. I will write about it as soon as I find some spare time, so stay tuned ;)
Time to get back to work!
Last month I attended the II Sao Paulo Perl Workshop, where I had the privilege of learning with the great talks performed by bryan d foy, Brad FitzPatrick and Larry Wall. For being a Java programmer, you can imagine how lost I was feeling there.
The first programming language that I had contact with was Perl. I was a 16 years old Slackware aficionado at that time, and was dying to have a web site with a guestbook . We did not have any cheap hosting services in Brazil that offered a PHP environment, but there were few companies that offered a free host with ads, and with Perl. I don’t remember which script I used, only that I found it in HotScripts.com and that it stored the guestbook entries in disk. Now, ten years after, here I am playing with Perl again! :-D
Well, what was my idea of Perl before the event? I thought it was an old programming language, very powerful, but over complicated. And what do I think of Perl now? I think it is an old programming language, very powerful, but may be complicated.
I have been playing with TAP for some time and even implemented a Java API to let TestNG, JUnit and other Test Frameworks to produce and consume TAP. TAP is a standard format for test output that first appeared with Perl 1 in 1987. It is human and machine readable, easy to be serialized, language independent and extensible1 through the use of YAML.
Some days ago while I was designing a plug-in to show TAP test results in Jenkins I stumbled across a message in Jenkins dev-list where Max Magee and Nick Wiesmueller were discussing about a way of showing more details about the test executions. I thought that the TAP Plug-in would fit perfectly, until one of the users, Robert Collins, mentioned SubUnit.
Shame on me, but I hadn't heard of SubUnit until that message. Max Magee and I exchanged some messages after that, talking about a initial design and analysis for the TAP Plug-in2. Here is the initial idea:
Although I have worked with TAP and spent some good time writing the tap4j port for Java, I am not convinced it is the best solution for this issue yet. Hence I am posting this initial comparison between TAP and SubUnit hoping that more people will contribute with the design of this solution. My goal is not only having a super cool plug-in for Jenkins, but ease integration of test results in different tools and collaborate with both TAP and SubUnit. Another objective that I have in mind is improving the way that test results are displayed in Jenkins and enabling it to be an alternative for tools like Smolder, TestRepository or Tribunal. Because I believe the tasks done by these tools could be all done in my favorite CI Server, and it would increase the productivity of Build & Release professionals :-))
This is my first article for a Brazilian magazine! :-D It was published in this month’s issue of MundoJ magazine (previously called MundoJava).
In this article Cesar Fernandes de Almeida, Anderson dos Santos and I discuss how to make your Java tests output TAP (Test Anything Protocol) Streams. This test protocol has been used by Perl developers since Perl’s first version (1983~) but hasn’t been used by many Java developers yet, unfortunately. We hope it incentives other Java developers to use TAP for their tests. There is an alternative to TAP too, SubUnit, which was pointed out for me by Robert Collins in the Jenkins dev-list few weeks ago. Now I am preparing a comparison between TAP and SubUnit as an analysis before developing a plug-in for Jenkins to show detailed test results (such as exception, images, raw test, error line, etc).
Now I will translate the article to send it to Patrick LeBoutillier, who contributed to this article answering patiently my questions by mail and writing metatap, a utility that lets you check if a TAP Stream is valid, according to the program parameters. This utility is being used in tap4j for integration tests between Perl and Java.
Unfortunately I’m not allowed to redistribute the article, not even an English version of it :-(