JUnitPerf Change Log


Version 1.9 - 2/16/04
----------------------

- When using the Swing test runner, the progress bar now turns red
  when a TimedTest fails. In prior releases, when a test failed a
  failure message was printed but the progress bar stayed green.
  Thanks to those folks who do use the graphical runner for
  performance tests for pointing out this bug!


Version 1.8 - 9/3/02
--------------------

- Documentation edits and additions.

- Added the ExampleThroughputUnderLoadTest and
  ExampleResponseTimeUnderLoadTest to the samples.

- Added the TimedTest.setQuiet() method to optionally disable output
  of the test's elapsed time.


Version 1.7 - 2/26/02
---------------------

- The TestMethodFactory can be used to load test a single test method
  while ensuring that each concurrent user thread uses a thread-local
  instance of the test.


Version 1.6 - 11/23/01
----------------------

- If a threaded test in a load test has been stopped, either by using
  the "Stop" button of the Swing UI or using the haltonfailure="yes"
  attribute of a JUnit Ant task, the stopped or failed test is
  cancelled and the currently active threaded tests of the load test
  are allowed to complete. Prior to this upgrade, if a threaded test
  was stopped, the load test would hang while waiting for the threaded
  test to report its completion.


Version 1.5 - 9/8/01
---------------------

- Added the TestFactory class to allow stateful tests to be decorated
  as LoadTest instances. Use of a TestFactory ensures that each
  LoadTest thread uses its own decorated test instance.


Version 1.4 - 6/12/01
---------------------

- A TimedTest can now be constructed to fail immediately if the
  maximum elapsed time of the decorated test is exceeded. In other
  words, the TimedTest will not wait for the decorated test to run to
  completion if the maximum elapsed time is exceeded.

- The TimedTest.outOfTime() method was added to unambiguously
  determine whether the test failed due to the maximum elapsed time
  being exceeded or the test itself failing.

- The LoadTest class now supports enforcing test atomicity using the
  setEnforceTestAtomicity() method. By default, test atomicity is not
  enforced for test cases that spawn threads, either directly or
  indirectly.

- The TimedTest.toString() method now includes an indication of
  whether the timed test will wait for test completion (WAITING) or
  wait for the maximum elapsed time to expire (NON-WAITING).

- The LoadTest.toString() method now includes an indication of whether
  the load test will enforce test atomicity by waiting for control to
  return (ATOMIC) or waiting for all threaded tests to complete
  (NON-ATOMIC).


Version 1.3 - 5/11/01
---------------------

- The LoadTest class now employs a ThreadBarrier to allow threads
  spawned directly by a load test to properly signal their
  completion. Threads spawned by decorated tests, either directly or
  indirectly, without a specified thread group are added to the
  ThreadedTestGroup by default. This was causing the active count of
  the thread group to never fall to 0, thereby causing the load test
  to hang indefinitely.


Version 1.2 - 4/23/01
---------------------

- Replaced the ThreadBarrier with a ThreadedTestGroup to catch and
  handle uncaught exceptions thrown by threads spawned by
  ThreadedTest. This improves thread safety and supports test
  atomicity (as defined by transaction processing) when enabled.

- Added several variants of LoadTest constructors for convenience and
  extensibility.

- Updated JUnitPerf.html and ExampleLoadTest.java to include more
  examples for constructing LoadTest instances with various
  constructors.


Version 1.1 - 3/3/01
--------------------

- Initial public release
