Unit testing plsql
My situation
I currently have an assignment where there is a large PLSQL code base. It’s been developed actively for about 12 years and works quite well. I am not saying it’s flawless, but quite mature. There’s lots of room for improvement and lots of dead code that needs to be removed.
Some of the plsql is called from the Java DAO layer of a front-end web application, but most of it is used for backoffice functionality. The parts that are accessed from the Java layer are tested through integration tests based on JUnit, but the large part that is only used from the backoffice has no unit test coverage.
Doing something about it
I’ve known about the utPLSQL framework for many years, but never gotten around to actually use it in a Continuous Integration environment. I decided it was time to do something about it and started by adding the installation of utPLSQL to the already in place automated database reinstallation build. The installation part was quite easy, I just dropped the utPLSQL install scripts into our own source control repository and made it part of our db install. Uninstalling utPLSQL was a bit tricker since it creates public synonyms and those are not dropped when the Oracle db user/schema is dropped. (And that’s how we “uninstall” our other schemas normally.) And if I let those public synonyms stay there, I would get errors on the next install. So I simply need to create a small script that dropped those public synonyms as part of the uninstall/install (reinstall
) process.
After utPLSQL was part of our db installation, I created a couple of sample utPLSQL tests and tried them out. No problems there. I could run them from the SQL prompt without problem. But what I really wanted was to make them part of the build process in Hudson. So I started writing a JUnit test that would wrap the utPLSQL tests and then it would be runnable from Hudson.
After I while it struck me that I was writing something that someone else had probably written already and after a quick google I found the maven-utplsql-plugin. (insert holy graal sound here) Since we use Maven for the builds, this seemed like a perfect match. However, there were some pitfalls.
Some pitfalls
The maven-utplsql-plugin is currently not available in any public Maven repository. So, I had to download it and install it add it manually to our local Maven repo. The only problem was that our Maven repo was setup not to accept SNAPSHOT releases, and since we didn’t want to change that, I had to HACK the source files in the zip file and replace SNAPSHOT with STABLE in order for our Maven repo to accept the new artifact. In fact, this may lead to that I have to do some contributions to the dev team of the maven-utplsql-plugin to get it up to a RELEASE version and maybe even up on a public repository?
The happy ending
Finally, I added a new task to our db-reinstall profile in Maven. The new task simply calls the plugin which runs the tests. SUCCESS!
My sources
This guy got around to doing this a lot sooner than me: http://www.theserverlabs.com/blog/2009/05/18/continuous-integration-with-oracle-plsql-utplsql-and-hudson/
Here’s the Maven plugin for utplsql: http://code.google.com/p/maven-utplsql-plugin/
The utPLSQL project: https://sourceforge.net/projects/utplsql/
Ehcache Monitor is not free
We use Ehcache in a software project I am involved in. The open source Ehcache project is licensed under the Apache 2.0 License and can therefore be used without having to pay a license fee. I love it, I think it’s GREAT.
When I first tried Ehcache Monitor, I was happy to see that it solved a lot of our needs when it comes to monitoring and managing our caches across multiple servers in the cluster. However, it comes at a pretty high cost if you want to use it in a production environment. Terracotta do not currently sell it stand-alone, but only as a part of of the commercial versions of Ehcache (DX, EX or FX).
I currently have a dialogue going with a sales rep at Terracotta, and I hope they will start offering the monitor seperately, so that it can be used together with the open source version of Ehcache.
Expekt Release 3.4
A couple of days ago, Expekt released version 3.4 of the Expekt gaming platform.
Changes include automatic payouts (you get your winnings super-quick!) and some front-end features related to responsible gaming. We have now enabled Expekt’s customers to use Deposit Limits, Cooling Off and Self Exclusion on the website.
We have also done preparations for a major launch scheduled for release 3.5…
Agreement signed with Crisp AB
Better Code AB has signed an agreement with Crisp AB! I will, through Better Code, provide consulting services together with Crisp.
I feel that I will have a lot to learn aswell as a lot to contribute to the Crisp group. Crisp consists of more than 20 senior consultants, ready to help companies with agile coaching, leadership for agile projects, software development and more!
I know several people at Crisp from before, and I am humbled to have been invited to join.
Expekt Release 3.2
Before Christmas, we released version 3.2 of the Expekt website!
Major changes include: new video player for live sport streams, some streaming improvements for Australian Open tennis tournament, small website design improvements (mainly account and banking pages), security improvements, introduction of SMART tracking and Playtech Poker Multi-Currency support!
I hope Expekt customers will appreciate the recent improvements!
Last week I attended the 2nd annual conference of the Betclic Everest Group in Monte Carlo, Monaco.
At the conference it was revealed that Mangas Gaming has changed name to Betclic Everest Group. Read article in EGAMINGREVIEW.
I had some good talks about agile software development with the americans from Everest Poker. Maybe I need to pay them a visit in Boston some day!
Expekt Release 3.0
Today we released a major upgrade of the Expekt.com website! New re-design and a completely new odds section. Finally, we’re out of the frames!
The removal of the outdated frame technology will hopefully bring better usability, better search engine coverage and… better code.
There will be some polishing up to do over the next few releases, but this is a major step forward for the Expekt website.
Malta trip
Just got back from a trip to Malta! Met with lots of people in the iGaming industry – mostly Expekt and Betclic, but also Betsafe and others.
I stayed at Le Meridien – very nice indeed. I never got the chance to try the rooftop pool, but I had a quick swim in the indoor one. Even an iGaming consultant has the right to a couple of hours of relaxation!
UAT of Expekt version 3.0 is going well. I hope it will be a great success!
New website for rhbetong.se
Last week I visited RH Betongelement and helped them revamp their website.
RH Betong is a concrete factory in Sweden, about 1 hour’s drive west of Stockholm.
Their website is based on WordPress (just like this site) and easy to maintain.
RH Betong got:
- New design
- New and more images
- More product information
- New “articles” page
- Updated contact information
If you need to get a pair of cement shoes, or perhaps a cement overcoat – don’t hesitate to give these guys a call! More information at rhbetong.se
I have registered for the (free) Nordic Atlassian User Group! Should be interesting. Before then, I hope to have upgraded Jira from version 3 to 4!
http://confluence.atlassian.com/display/AUG/Nordic+Atlassian+User+Group





