Skip to main content

Setting up Fitnesse on Ubuntu in 7 steps

Some pretty basic steps but just to make sure it's here for everyone to see. Setting up fitnesse and running the jar is easy enough. Just go to http://fitnesse.org/ and get started and do it on your desktop just to see it in action. But for me that wasn't good enough I wanted it to run as service on ubuntu.

I stole a few tricks from how ubuntu runs jenkins and setup fitnesse a similar way.

1. Create a user and group for fitnesse (optional)
I didn't do this because I wanted tomcat, jenkins and fitnesse all running as the same user. Call it laziness to avoid any permissions classing but it doesn't change the process that you need to create or choose what user you're going to make it run as. Don't make it run as your user or root!

2. Download the jar file and place it in /usr/share/fitnesse
Make the folder too of course. It can belong to root as long as the fitnesse user has read access

3. Create the folder to run in at /var/lib/fitnesse
Fitnesse user needs write permissions here so may as well make it the owner. This is where FitNesseRoot is going to end up and also where you're going to want any libraries and classes it can include. I found fitnesse isn't very good at using absolute paths when doing includes and also doesn't handle spaces. Something to look out for!

4. Create the folder to store fitnesse logs /var/log/fitnesse
Make sure the fitnesse user can write
5. Create the below file as /etc/init/fitnesse.conf
description "fitnesse: Fitnesse acceptance testing framework"
author "geoff@warmage.com"

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]

env USER="fitnesse"
env GROUP="fitnesse"
env FITNESSE_LOG="/var/log/fitnesse"
env FITNESSE_ROOT="/var/lib/fitnesse"
env HTTP_PORT=8081
env JAVA_OPTS=""
env JAVA_HOME="/usr/lib/jvm/default-java"

#limit nofile 8192 8192

pre-start script
    test -f $FITNESSE_ROOT/fitnesse.jar || { stop ; exit 0; }
end script

script
    FITNESSE_ARGS="-p $HTTP_PORT -l $FITNESSE_LOG"
    exec daemon --name=fitnesse --inherit  --chdir=$FITNESSE_ROOT \
        --output=$FITNESSE_LOG/fitnesse-output.log --user=$USER \
        -- $JAVA_HOME/bin/java $JAVA_OPTS -jar fitnesse.jar $FITNESSE_ARGS
end script

6. Link from /etc/init.d/fitnesse to /lib/init/upstart-job
sudo ln -s /lib/init/upstart-job /etc/init.d/fitnesse
Make sure it's executable
sudo chmod +x /etc/init.d/fitnesse
nearly there now

7. Setup run levels for fitnesse to run with
I used sudo sysv-rc-conf -P to see the run levels and turned on 2, 3, 4 & 5. Could probably have dropped 2 but whatever, that's what most use. There seems to be lots of other ways to do this but this is what I did.

That's it! I'm probably forgetting something and I'm sure there's better ways to do some of the steps. There's lots of guides out there if you search 'ubuntu daemon' but knowing the quirks of fitnesse (spaces in folder names? where do you want files?) is still relevant.

Comments

Popular posts from this blog

RestFixture

So most of the tests I'm writing now in Fitnesse are using RestFixture . Being able to do all this black box style testing has helped me get a lot of tests up and running without having to change the existing code base. Now I've taken a step future with my own little fork  so I can use scenarios and build nice BDD style scripts. But first I want to give me own quick guide to using RestFixture Step 1: Installing You can dive straight in by grabbing the latest jar files for RestFixture here  https://github.com/smartrics/RestFixture/downloads If you know what you're doing can get the nodep version to work nicely along side other libraries you may be including in Fitnesse. But I grabbed the 'full' version and unzipped it into a RestFixture folder alongside my FitNesseRoot folder. Step 2: Write your first test I took advantage of the built in Fitnesse api as a basic test and wrote a page called RestFixture with the following contents !define TEST_SYSTEM {slim} !

A brief introduction

And then I'll get into my first rant. I'm some guy who thinks about stuff. Stuff you probably don't care about but I'm going to tell you anyway! Now I don't think I'm going to cure cancer or create world peace but it'd be nice if I could make the world a little better. Stuff I'd like to talk about will focus on: Games I've always been a game player and am fascinated in how one designs a game. Yes it's mostly computer games these days and even then it's mostly consumed by World of Warcraft . Shut-up you in the back! We all have our vices and I'll avoid sniggering at your hentai collection if you leave my level 80 mage alone. Programming Only 2 years ago I was introduced to this weird concept of Test Driven Developmen t and the broader concept of Agile . Programming has been part of my life since I was eight. When I haven't been doing it professionally I've found myself doing it more in my free time. So it's nice that after 20+