Skip to main content

Continuous Performance Regression Testing with JfrUnit

Functional unit and integration tests are a common practice to detect and prevent regressions within a software component or application's behavior. Things look different, though, when it comes to performance-related aspects: how to identify an application is slower than it used to be? How to spot higher memory consumption than before? How to find out about sub-optimal SQL queries that sneaked in? Any performance tests based on metrics like wall-clock time or throughput are not portable. They are subject to a specific execution environment such as a developer laptop, CI, or production-like environment. Welcome JfrUnit: based on the JDK Flight Recorder (JFR), it allows you to implement assertions based on all kinds of JFR events emitted by the JVM or your application. JfrUnit makes it very easy to identify potential performance issues by asserting metrics that may impact your application's performance, like an increased object allocation rate, retrieval of redundant data from the database, loading of unneeded classes, and much more. Watch this code-centric talk to learn about:

  • Using JDK Flight Recorder and JfrUnit for implementing performance regression tests
  • Emitting JFR events from 3rd party libraries using JMC Agent
  • Analyzing performance regressions in JDK Mission Control