mirror of https://github.com/apache/jmeter.git
Bug 62243 - Dashboard : make option "--forceDeleteResultFile"/"-f" option delete folder referenced by "-o" option
Bugzilla Id: 62243 git-svn-id: https://svn.apache.org/repos/asf/jmeter/trunk@1828168 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
128812f7c3
commit
63eaf76bf3
|
|
@ -278,7 +278,7 @@ public class JMeter implements JMeterPlugin {
|
|||
private static final CLOptionDescriptor D_FORCE_DELETE_RESULT_FILE =
|
||||
new CLOptionDescriptor("forceDeleteResultFile",
|
||||
CLOptionDescriptor.ARGUMENT_DISALLOWED, FORCE_DELETE_RESULT_FILE,
|
||||
"force delete existing results files before start the test");
|
||||
"force delete existing results files and web report folder if present before starting the test");
|
||||
|
||||
private static final String[][] DEFAULT_ICONS = {
|
||||
{ "org.apache.jmeter.control.gui.TestPlanGui", "org/apache/jmeter/images/beaker.gif" }, //$NON-NLS-1$ $NON-NLS-2$
|
||||
|
|
@ -517,14 +517,14 @@ public class JMeter implements JMeterPlugin {
|
|||
CLOption testReportOpt = parser.getArgumentById(REPORT_GENERATING_OPT);
|
||||
if (testReportOpt != null) { // generate report from existing file
|
||||
String reportFile = testReportOpt.getArgument();
|
||||
extractAndSetReportOutputFolder(parser);
|
||||
extractAndSetReportOutputFolder(parser, false);
|
||||
ReportGenerator generator = new ReportGenerator(reportFile, null);
|
||||
generator.generate();
|
||||
} else if (parser.getArgumentById(NONGUI_OPT) == null) { // not non-GUI => GUI
|
||||
startGui(testFile);
|
||||
startOptionalServers();
|
||||
} else { // NON-GUI must be true
|
||||
extractAndSetReportOutputFolder(parser);
|
||||
extractAndSetReportOutputFolder(parser, deleteResultFile);
|
||||
|
||||
CLOption rem = parser.getArgumentById(REMOTE_OPT_PARAM);
|
||||
if (rem == null) {
|
||||
|
|
@ -562,14 +562,14 @@ public class JMeter implements JMeterPlugin {
|
|||
* @param parser {@link CLArgsParser}
|
||||
* @throws IllegalArgumentException
|
||||
*/
|
||||
private void extractAndSetReportOutputFolder(CLArgsParser parser) {
|
||||
private void extractAndSetReportOutputFolder(CLArgsParser parser, boolean deleteResultFile) {
|
||||
CLOption reportOutputFolderOpt = parser
|
||||
.getArgumentById(REPORT_OUTPUT_FOLDER_OPT);
|
||||
if(reportOutputFolderOpt != null) {
|
||||
String reportOutputFolder = parser.getArgumentById(REPORT_OUTPUT_FOLDER_OPT).getArgument();
|
||||
File reportOutputFolderAsFile = new File(reportOutputFolder);
|
||||
|
||||
JOrphanUtils.canSafelyWriteToFolder(reportOutputFolderAsFile);
|
||||
JOrphanUtils.canSafelyWriteToFolder(reportOutputFolderAsFile, deleteResultFile);
|
||||
final String reportOutputFolderAbsPath = reportOutputFolderAsFile.getAbsolutePath();
|
||||
log.info("Setting property '{}' to:'{}'", JMETER_REPORT_OUTPUT_DIR_PROPERTY, reportOutputFolderAbsPath);
|
||||
JMeterUtils.setProperty(JMETER_REPORT_OUTPUT_DIR_PROPERTY, reportOutputFolderAbsPath);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ import java.util.Map;
|
|||
import java.util.StringTokenizer;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
|
|
@ -43,7 +44,6 @@ import org.apache.commons.lang3.StringUtils;
|
|||
public final class JOrphanUtils {
|
||||
|
||||
private static final int DEFAULT_CHUNK_SIZE = 4096;
|
||||
|
||||
/**
|
||||
* Private constructor to prevent instantiation.
|
||||
*/
|
||||
|
|
@ -593,20 +593,52 @@ public final class JOrphanUtils {
|
|||
* <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}
|
||||
* @param folder {@link File}
|
||||
*
|
||||
* @throws IllegalArgumentException when folder can't be written to
|
||||
*/
|
||||
public static void canSafelyWriteToFolder(File folder)
|
||||
throws IllegalArgumentException {
|
||||
public static void canSafelyWriteToFolder(File folder) {
|
||||
canSafelyWriteToFolder(folder, false);
|
||||
}
|
||||
/**
|
||||
* 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}
|
||||
* @param deleteFolderIfExists
|
||||
*
|
||||
* @throws IllegalArgumentException when folder can't be written to
|
||||
*/
|
||||
public static void canSafelyWriteToFolder(File folder, boolean deleteFolderIfExists) {
|
||||
if(folder.exists()) {
|
||||
if (folder.isFile()) {
|
||||
throw new IllegalArgumentException("Cannot write to '"
|
||||
if(deleteFolderIfExists) {
|
||||
if(!folder.delete()) {
|
||||
throw new IllegalArgumentException("Cannot write to '"
|
||||
+folder.getAbsolutePath()+"' as it is an existing file and delete failed");
|
||||
}
|
||||
} else {
|
||||
throw new IllegalArgumentException("Cannot write to '"
|
||||
+folder.getAbsolutePath()+"' as it is an existing file");
|
||||
}
|
||||
} else {
|
||||
File[] listedFiles = folder.listFiles();
|
||||
if(listedFiles != null && listedFiles.length > 0) {
|
||||
throw new IllegalArgumentException("Cannot write to '"
|
||||
if(deleteFolderIfExists) {
|
||||
try {
|
||||
FileUtils.deleteDirectory(folder);
|
||||
folder.mkdir();
|
||||
} catch(IOException ex) {
|
||||
throw new IllegalArgumentException("Cannot write to '"
|
||||
+folder.getAbsolutePath()+"' as folder is not empty and cleanup failed with error:"+ex.getMessage(), ex);
|
||||
}
|
||||
} else {
|
||||
throw new IllegalArgumentException("Cannot write to '"
|
||||
+folder.getAbsolutePath()+"' as folder is not empty");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -121,6 +121,7 @@ this behaviour, set <code>httpclient.reset_state_on_thread_group_iteration=false
|
|||
|
||||
<h3>Report / Dashboard</h3>
|
||||
<ul>
|
||||
<li><bug>62243</bug>Dashboard : make option "<code>--forceDeleteResultFile</code>"/"<code>-f</code>" option delete folder referenced by "<code>-o</code>" option</li>
|
||||
</ul>
|
||||
|
||||
<h3>General</h3>
|
||||
|
|
|
|||
|
|
@ -764,7 +764,7 @@ These are shown below.</p>
|
|||
-S, --systemPropertyFile <argument>
|
||||
additional system property file(s)
|
||||
-f, --forceDeleteResultFile
|
||||
force delete existing results files before start the test
|
||||
force delete existing results files and web report folder if present before starting the test
|
||||
-L, --loglevel <argument>=<value>
|
||||
[category=]level e.g. jorphan=INFO, jmeter.util=DEBUG or com.example.foo=WARN
|
||||
-r, --runremote
|
||||
|
|
|
|||
Loading…
Reference in New Issue