Author: pmouawad
Date: Sun Mar 20 13:24:14 2016
New Revision: 1735879
URL: http://svn.apache.org/viewvc?rev=1735879&view=rev
Log:
Bug 58986 - Report/Dashboard reuses the same output directory
Factor in JOrphanUtils the check for output folder and make it more readable
and complete
Add the check in both HtmlTemplateExporter and JMeter as per sebb request
Bugzilla Id: 58986
Modified:
jmeter/trunk/src/core/org/apache/jmeter/JMeter.java
jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java
jmeter/trunk/src/jorphan/org/apache/jorphan/util/JOrphanUtils.java
Modified: jmeter/trunk/src/core/org/apache/jmeter/JMeter.java
URL:
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/JMeter.java?rev=1735879&r1=1735878&r2=1735879&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/JMeter.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/JMeter.java Sun Mar 20 13:24:14 2016
@@ -477,24 +477,11 @@ public class JMeter implements JMeterPlu
if(reportOutputFolderOpt != null) {
String reportOutputFolder =
parser.getArgumentById(REPORT_OUTPUT_FOLDER_OPT).getArgument();
File reportOutputFolderAsFile = new
File(reportOutputFolder);
- // We check folder does not exist or it is empty
- if(!reportOutputFolderAsFile.exists() ||
- // folder exists but is empty
- (reportOutputFolderAsFile.isDirectory() &&
reportOutputFolderAsFile.listFiles().length == 0)) {
- if(!reportOutputFolderAsFile.exists()) {
- // Report folder does not exist, we check we
can create it
- if(!reportOutputFolderAsFile.mkdirs()) {
- throw new IllegalArgumentException("Cannot
create output report to:'"
-
+reportOutputFolderAsFile.getAbsolutePath()+"' as I was not able to create it");
- }
- }
- log.info("Setting property
'"+JMETER_REPORT_OUTPUT_DIR_PROPERTY+"'
to:'"+reportOutputFolderAsFile.getAbsolutePath()+"'");
-
JMeterUtils.setProperty(JMETER_REPORT_OUTPUT_DIR_PROPERTY,
-
reportOutputFolderAsFile.getAbsolutePath());
- } else {
- throw new IllegalArgumentException("Cannot output
report to:'"
-
+reportOutputFolderAsFile.getAbsolutePath()+"' as it would overwrite existing
non empty folder");
- }
+
+
JOrphanUtils.canSafelyWriteToFolder(reportOutputFolderAsFile);
+ log.info("Setting property
'"+JMETER_REPORT_OUTPUT_DIR_PROPERTY+"'
to:'"+reportOutputFolderAsFile.getAbsolutePath()+"'");
+
JMeterUtils.setProperty(JMETER_REPORT_OUTPUT_DIR_PROPERTY,
+ reportOutputFolderAsFile.getAbsolutePath());
}
CLOption testReportOpt = parser
Modified:
jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java
URL:
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java?rev=1735879&r1=1735878&r2=1735879&view=diff
==============================================================================
---
jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java
(original)
+++
jmeter/trunk/src/core/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java
Sun Mar 20 13:24:14 2016
@@ -45,6 +45,7 @@ import org.apache.jmeter.report.processo
import org.apache.jmeter.report.processor.graph.AbstractGraphConsumer;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.logging.LoggingManager;
+import org.apache.jorphan.util.JOrphanUtils;
import org.apache.log.Logger;
import freemarker.template.Configuration;
@@ -354,6 +355,8 @@ public class HtmlTemplateExporter extend
if(!StringUtils.isEmpty(globallyDefinedOutputDir)) {
outputDir = new File(globallyDefinedOutputDir);
}
+
+ JOrphanUtils.canSafelyWriteToFolder(outputDir);
LOG.info("Will generate dashboard in folder:" +
outputDir.getAbsolutePath());
Modified: jmeter/trunk/src/jorphan/org/apache/jorphan/util/JOrphanUtils.java
URL:
http://svn.apache.org/viewvc/jmeter/trunk/src/jorphan/org/apache/jorphan/util/JOrphanUtils.java?rev=1735879&r1=1735878&r2=1735879&view=diff
==============================================================================
--- jmeter/trunk/src/jorphan/org/apache/jorphan/util/JOrphanUtils.java
(original)
+++ jmeter/trunk/src/jorphan/org/apache/jorphan/util/JOrphanUtils.java Sun Mar
20 13:24:14 2016
@@ -19,6 +19,7 @@
package org.apache.jorphan.util;
import java.io.Closeable;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -577,4 +578,35 @@ public final class JOrphanUtils {
return String.format("%02d:%02d:%02d",
elapsedSec / 3600, (elapsedSec % 3600) / 60, elapsedSec % 60);
}
+
+ /**
+ * Throw {@link IllegalArgumentException} if folder cannot be written to
either:
+ * <ul>
+ * <li>Because it exists but is not a folder</li>
+ * <li>Because it exists but is not empty</li>
+ * <li>Because it does not exist but cannot be created</li>
+ * </ul>
+ * @param folder {@link File}
+ * @throws IllegalArgumentException
+ */
+ public static void canSafelyWriteToFolder(File folder)
+ throws IllegalArgumentException {
+ if(folder.exists()) {
+ if (folder.isFile()) {
+ throw new IllegalArgumentException("Cannot write to '"
+ +folder.getAbsolutePath()+"' as it is an existing
file");
+ } else {
+ if(folder.listFiles().length > 0) {
+ throw new IllegalArgumentException("Cannot write to '"
+ +folder.getAbsolutePath()+"' as folder is not
empty");
+ }
+ }
+ } else {
+ // check we can create it
+ if(!folder.getParentFile().canWrite()) {
+ throw new IllegalArgumentException("Cannot write to '"
+ +folder.getAbsolutePath()+"' as folder does not exist
and parent folder is not writable");
+ }
+ }
+ }
}