#81 - Use JMH Test class name as report filename to prevent test results from overriding one another.

Closes: #81
This commit is contained in:
Christoph Strobl
2018-08-31 11:37:48 +02:00
parent 4da5a6f494
commit 95ef25789f
2 changed files with 9 additions and 8 deletions

View File

@@ -89,14 +89,14 @@ class JmhSupport {
* @return never {@literal null}. * @return never {@literal null}.
* @throws Exception * @throws Exception
*/ */
protected ChainedOptionsBuilder options() throws Exception { protected ChainedOptionsBuilder options(Class<?> jmhTestClass) throws Exception {
ChainedOptionsBuilder optionsBuilder = new OptionsBuilder().jvmArgs(jvmArgs()); ChainedOptionsBuilder optionsBuilder = new OptionsBuilder().jvmArgs(jvmArgs());
optionsBuilder = warmup(optionsBuilder); optionsBuilder = warmup(optionsBuilder);
optionsBuilder = measure(optionsBuilder); optionsBuilder = measure(optionsBuilder);
optionsBuilder = forks(optionsBuilder); optionsBuilder = forks(optionsBuilder);
optionsBuilder = report(optionsBuilder); optionsBuilder = report(optionsBuilder, jmhTestClass);
return optionsBuilder; return optionsBuilder;
} }
@@ -174,7 +174,7 @@ class JmhSupport {
* *
* @return * @return
*/ */
protected String reportFilename() { protected String reportFilename(Class<?> jmhTestClass) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
@@ -186,7 +186,7 @@ class JmhSupport {
sb.append(new SimpleDateFormat("yyyy-MM-dd").format(new Date())); sb.append(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
sb.append("_"); sb.append("_");
sb.append(org.springframework.util.ClassUtils.getShortName(getClass())); sb.append(org.springframework.util.ClassUtils.getShortName(jmhTestClass));
sb.append(".json"); sb.append(".json");
return sb.toString(); return sb.toString();
} }
@@ -265,7 +265,7 @@ class JmhSupport {
* @throws IOException if report file cannot be created. * @throws IOException if report file cannot be created.
* @see #getReportDirectory() * @see #getReportDirectory()
*/ */
private ChainedOptionsBuilder report(ChainedOptionsBuilder optionsBuilder) throws IOException { private ChainedOptionsBuilder report(ChainedOptionsBuilder optionsBuilder, Class<?> jmhTestClass) throws IOException {
String reportDir = getReportDirectory(); String reportDir = getReportDirectory();
@@ -273,7 +273,7 @@ class JmhSupport {
return optionsBuilder; return optionsBuilder;
} }
String reportFilePath = reportDir + (reportDir.endsWith(File.separator) ? "" : File.separator) + reportFilename(); String reportFilePath = reportDir + (reportDir.endsWith(File.separator) ? "" : File.separator) + reportFilename(jmhTestClass);
File file = ResourceUtils.getFile(reportFilePath); File file = ResourceUtils.getFile(reportFilePath);
if (file.exists()) { if (file.exists()) {

View File

@@ -213,13 +213,14 @@ public class Microbenchmark extends BlockJUnit4ClassRunner {
void doRun(RunNotifier notifier, Collection<FrameworkMethod> methods, CacheFunction cache) throws Exception { void doRun(RunNotifier notifier, Collection<FrameworkMethod> methods, CacheFunction cache) throws Exception {
List<String> includes = jmhRunner.includes(getTestClass().getJavaClass(), methods); Class<?> jmhTestClass = getTestClass().getJavaClass();
List<String> includes = jmhRunner.includes(jmhTestClass, methods);
if (includes.isEmpty()) { if (includes.isEmpty()) {
throw new NoTestsRemainException(); throw new NoTestsRemainException();
} }
ChainedOptionsBuilder optionsBuilder = jmhRunner.options(); ChainedOptionsBuilder optionsBuilder = jmhRunner.options(jmhTestClass);
includes.forEach(optionsBuilder::include); includes.forEach(optionsBuilder::include);