Looking to speed up your builds by running your Junit tests in parallel with Ant?  With Ant 1.9.4, the Junit task now supports the “threads” attribute.  The default value is “1”, but can optionally be changed to the number of test threads desired that will be used for parallel test execution.

Note, when using this new attribute, you must set your “forkmode” equal to “perTest” and if you are upgrading to 1.10.x, Java 8 run-time is required.


DevOps Interview Questions

Are you interested in applying for a new job?  Possibly a job in the DevOps field?  Or even hiring for a DevOps related position?  If so, read on….

The meaning of DevOps and the tooling associated with it differs depending on who you talk too or what company you work for.  Personally, I think the following categories cover many aspects of what a DevOps interviewee should be familiar with. (Obviously its not possible to be a expert in each one….)

  • Cloud (AWS, Azure, Heroku)
  • Orchestration (Ansible, Puppet, Chef)
  • Agile (Scrum, Kanban, Agile)
  • Programming (Python, PowerShell)
  • Containers (Docker, Kubernetes, Swarm)
  • CI\CD Tools (Jenkins, Git, TFS, Ant, Maven, Azure DevOps)
  • Collaboration (GitHub, Slack, Forums, Blogs, Meetups)

For the benefit of others and myself, I am going to start a github repo with some sample DevOps questions in the above categories.


Fabric and Reoccurring Tasks

So you have a handful of commands you execute weekly on multiple Linux servers.  You run these commands by opening a SSH tool like Putty, logging into the server, and then executing the commands.

Example commands:

  • ls /tmp/dropfolder
  • tail -10 /tmp/dropfolder/log1

With Fabric, you can bundle these commands and many others in a Fabric command file call  Below is an example file containing just 1 task that will run ( the commands above.

from fabric.api import run

def dailycommands():
     run ("ls /tmp/dropfolder")
     run("tail -10 /tmp/dropfolder/log1")

You can then execute this file via the command line on 1 or multiple hosts with ease.

Example command:

  • fab -f -H host1,host2,host3 dailycommands

There are many many other things you can do with Fabric, so give it a try!


Katalon – Docker – Linux

I’ve used Katalon primary in a Windows environment for running smoke tests.  This tool is relatively new, built on top of Selenium, and actively supported.  I highly suggest checking it out if you have some free time.  (Article describe Katalon pro’s)

So, the Katalon tests I run are launched from Jenkins and executed on a Windows 2012 slave machines via the command line.  These slave machines must have Katalon installed in order to execute the tests.

Tangent – Generating the Katalon command line string is beyond easy.


Installing Katalon on each Windows slave machine and remembering to do so in the future is a pain.  Well, as of Katalon version 4.8, you can now execute the tests from a Linux server via the Linux shell.

So, the solution I am thinking here is the following:

  1. Create a new docker image with Katalon installed and an ENTRYPOINT of ./katalon.
  2. Setup a Linux server as a Jenkins slave
  3. Install Docker on this new Linux server
  4. Pull the Katalon docker image to this new server
  5. Create a smoke test Jenkins job that will pull the smoke test files from Git down to the slave, and then run the docker container with the correct smoke test syntax included in the command. (Similar to this)

The benefits of this solution are numerous. (e.g. easily update Katalon versions, identical Katalon configurations between Linux slaves, easily recover from outages, etc…)