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;

Reply via email to