You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by James Strachan <ja...@gmail.com> on 2005/12/29 17:51:07 UTC

[HeadsUp] writing test cases for ActiveMQ

Its extremely common to write test cases in ActiveMQ that tests that a
certain consumer receives a certain number of messages; or that one of the
available consumers receives enough messages etc. Its also surprisingly hard
to write good test cases that don't :-

* block forever if they fail
* have timing issues in them - on some platforms the concurrency issues and
exact time taken to do things cause tests to fail.

A common gotcha is the use of sleep() inside test cases that work on some
platforms but not on others etc.

To help simplify these kinds of tests we've got a handy utility class called
MessageList which can be used as a MessageListener. They can be chained
together in a parent/child relationship to make assertions about all
messages received across all consumers versus numbers of messages received
per individual consumer. The class is thread safe and uses semaphores to
avoid waiting too long.

I'd recommend folks try use the MessageList class when these kinds of tests
are required - and fix/enhance it where necessary - as its quite common for
us to spend a long time trying to figure out why a particular test case
fails when it turns out to just be a timing issue or a bug in the test
cases's concurrency code.

--

James
-------
http://radio.weblogs.com/0112098/