Skip to content

Release Notes

Lucas Pouzac edited this page Jan 24, 2014 · 4 revisions

Version 2.4.1

Bug fixes

  • #5 : Exceptions are given priority even without @Required
  • #6 : @PerfTest could not be use on SuperClass

Version 2.4.0

### Enhancements

  • #3 : HTML Report update with exception report
  • #4 : Choice thread number with ParallelRunner (@Parallel(count=x) to use)

Bug fixes

  • #2 : Exceptions are given priority over the @Required

Version 2.3.2

Bug fixes

  • warmup time measurement handling fails with custom clock
  • client application hangs when finished

Version 2.3.1

Changes

  • Created MemorySensor which logs the maximum amount of used heap memory

Version 2.3.0

### Enhancements

  • Reporting the invocation characteristics (thread count, warm up, ramp up)

### Changes

  • Changed ReportModule interface to enable reporting of execution config

Version 2.2.0

### Enhancements

  • Using the system's most exact clock by default
  • Supporting custom clock implementations
  • Supporting multiple different clocks at the same time
  • Implemented alternative clocks:
  • system (the system's clock)
  • cpu (the thread's CPU time)
  • user (the thread's user time)

Bug fixes

  • NullPointerException in reports during parallel test execution

Version 2.1.0

### Enhancements

  • Ramp-up time to specify the time to wait before adding a new thread, e.g. @PerfTest(rampUp = 1000)
  • Supporting warm-up time to start measurement and requirement checking after an initial time period is over, e.g. @PerfTest(warmUp = 1000)
  • Supporting wait timers to induce wait time between invocations
  • usage e.g. @PerfTest(timer = RandomTimer.class, timerParams = { 200, 400 })
  • predefined timers: None, ConstantTimer, RandomTimer, CumulatedTimer
  • custom timers by implementing the WaitTimer interface
  • new method LatencyCounter.percentileAboveLatency(latency)
  • @RunWith(ParallelRunner.class) to execute all tests of a class concurrently
  • Javadoc for tooltip help on @PerfTest and @Requirement
  • new method CounterRepository.printSummary()
  • Method StopWatch.stop() returns the elapsed time in milliseconds

Bug fixes

  • #3486460: CSVSummaryReportModule causes FileNotFoundException
  • #3486461: HTML report displays the wrong date

Version 2.0.0

### Enhancements

  • Consistent behaviour on all JUnit versions from JUnit 4.7 to 4.9
  • HTML report with distribution chart

### Changes

  • Dropped ExecutionLogger concept

### Bug fixes

  • @Before and @After behaviour on JUnit 4.8+

Version 1.08

### Enhancements

  • Name of CSV log file is configurable

## Version 1.07

### Bug fix

  • #3030070: max latency failure message uses incorrect value

## Version 1.06

### Improvements

  • Avoiding Windows' time resolution problem by using the most precise timer available on the system
  • Reduced the impact of single slow threads on the total execution time: Threads do not need to perform the same number of execution, each one runs as long as invocations are pending.
  • Improved thread handling and statistics allocation for reducing memory impact
  • Reduced the performance impact of the framework

## Version 1.05

Class annotations

@PerfTest and @Required can now be specified on class level and provide defaults for all test methods that have not been annotated themselves.

Example

@PerfTest(invocations = 5)
@Required(max = 1200, average = 250)
public class SmokeTest {

    @Rule
    public ContiPerfRule i = new ContiPerfRule();

    @Test
    public void test1() throws Exception {
        Thread.sleep(200);
    }

    @Test
    public void test2() throws Exception {
        Thread.sleep(150);
    }

}

### Test suite mechanism Use @RunWith(ContiPerfSuiteRunner.class) to make use of ContiPerf's suite runner and specify all test classes as comma-separated list in a @SuiteClasses annotation. Any @PerfTest or @Required annotation applied to the suite class is used for any contained test that has now annotation of same type.

Example

@RunWith(ContiPerfSuiteRunner.class)
@SuiteClasses(MyApplicationTest.class)
@PerfTest(invocations = 1000, threads = 30)

public static class PeakLoadTest {
}

Version 1.04

### Bug fixes

  • Verification of the 'max' requirement was broken in 1.03

Version 1.03

### New Features

  • Allowing for concurrency tests, using @PerfTest(treads = 3)
  • Introduced cancelOnViolation() in @PerfTest, which makes it configurable whether a test run shall be canceled if the 'max' requirement is violated. The default is 'true'.

### Internal Changes

  • Redesigned test runners
  • Introduced PerfTestException and child classes:
  • PerfTestFailure
  • PerfTestExecutionError
  • PerfTestConfigurationError

Version 1.02

Bug fixes

  • Former releases expected a Maven-like project structure, other structures were causing NullPointerExceptions.

Version 1.01

### New Features

  • New EmptyExecutionLogger

Bug fixes

  • Preventing NullPointerException in programmatic use without percentile requirements