Commits

nat_linden committed afe3fe4

Support QAModeTermCode var for unattended shutdown on LL_ERRS.
Normally LL_ERRS in a developer build of the viewer pops up an OS message box
with the text of the LL_ERRS log message, requiring user intervention to
proceed. This isn't good for unattended testing, especially on Parabuild
machines. Running the viewer with '--set QAModeTermCode n' for some
0 < n < 256 will, on LL_ERRS, cause the viewer to terminate immediately with
_exit(n).

  • Participants
  • Parent commits 85ad068

Comments (0)

Files changed (2)

indra/newview/app_settings/settings.xml

     <key>QAModeEventHostPort</key>
     <map>
       <key>Comment</key>
-      <string>Enable Testing Features.</string>
+      <string>Port on which lleventhost should listen</string>
+      <key>Persist</key>
+      <integer>0</integer>
+      <key>Type</key>
+      <string>S32</string>
+      <key>Value</key>
+      <integer>-1</integer>
+    </map>
+    <key>QAModeTermCode</key>
+    <map>
+      <key>Comment</key>
+      <string>On LL_ERRS, terminate with this code instead of OS message box</string>
       <key>Persist</key>
       <integer>0</integer>
       <key>Type</key>

indra/newview/llappviewer.cpp

 	
 	if (!initConfiguration())
 		return false;
-	
+
+	// Although initLogging() is the right place to mess with
+	// setFatalFunction(), we can't query gSavedSettings until after
+	// initConfiguration().
+	S32 rc(gSavedSettings.getS32("QAModeTermCode"));
+	if (rc >= 0)
+	{
+		// QAModeTermCode set, terminate with that rc on LL_ERRS. Use _exit()
+		// rather than exit() because normal cleanup depends too much on
+		// successful startup!
+		LLError::setFatalFunction(boost::bind(_exit, rc));
+	}
+
     mAlloc.setProfilingEnabled(gSavedSettings.getBOOL("MemProfiling"));
 
     // *NOTE:Mani - LLCurl::initClass is not thread safe. 
 	LLError::initForApplication(
 				gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, ""));
 	LLError::setFatalFunction(errorCallback);
-	
+
 	// Remove the last ".old" log file.
 	std::string old_log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,
 							     "SecondLife.old");