Title: [40649] trunk/hudson/plugins/SCTMExecutor/src/main/java/hudson/plugins/sctmexecutor/publisher/SCTMResultAction.java: if no result file exists an empty result will be returned and a error will be logged
- Revision
- 40649
- Author
- alienllama
- Date
- 2012-06-18 05:26:46 -0400 (Mon, 18 Jun 2012)
Log Message
if no result file exists an empty result will be returned and a error will be logged
Hopefully fix the problem with 100% CPU load
Modified Paths
Diff
Modified: trunk/hudson/plugins/SCTMExecutor/src/main/java/hudson/plugins/sctmexecutor/publisher/SCTMResultAction.java (40648 => 40649)
--- trunk/hudson/plugins/SCTMExecutor/src/main/java/hudson/plugins/sctmexecutor/publisher/SCTMResultAction.java 2012-06-18 09:24:55 UTC (rev 40648)
+++ trunk/hudson/plugins/SCTMExecutor/src/main/java/hudson/plugins/sctmexecutor/publisher/SCTMResultAction.java 2012-06-18 09:26:46 UTC (rev 40649)
@@ -9,6 +9,7 @@
import hudson.util.XStream2;
import java.io.File;
+import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.Collection;
@@ -49,26 +50,34 @@
try {
getDataFile().write(testResult);
+ this.testResult = new WeakReference<TestResult>(testResult);
+ } catch (FileNotFoundException e) {
+ this.testResult = new WeakReference<TestResult>(new SCTMTestSuiteResult("Empty Result"));
} catch (IOException e) {
+ this.testResult = new WeakReference<TestResult>(new SCTMTestSuiteResult("Empty Result"));
String msg = "Failed to save the SCTM test result.";
LOGGER.log(Level.SEVERE, msg, e);
listener.fatalError(msg);
}
- this.testResult = new WeakReference<TestResult>(testResult);
}
private XmlFile getDataFile() {
- return new XmlFile(XSTREAM, new File(owner.getRootDir(), "sctmResult.xml"));
+ File resultFile = new File(owner.getRootDir(), "sctmResult.xml");
+ return new XmlFile(XSTREAM, resultFile);
}
private TestResult load() {
TestResult r;
+ XmlFile resultFile = getDataFile();
try {
- r = (TestResult) getDataFile().read();
- maintainTestResult(r);
+ if (resultFile.exists()) {
+ r = (TestResult) resultFile.read();
+ maintainTestResult(r);
+ } else
+ throw new FileNotFoundException("Cannot find a valid result file at: " + resultFile.getFile().getPath());
} catch (IOException e) {
- LOGGER.log(Level.WARNING, "Failed to load " + getDataFile(), e);
- r = new SCTMTestCaseResult("dummy"); // return a dummy
+ LOGGER.log(Level.WARNING, "Failed to load " + resultFile, e);
+ r = new SCTMTestCaseResult("Empty result"); // return a dummy
r.setParentAction(this);
}
return r;