summaryrefslogtreecommitdiffstats
path: root/base/server/cmscore/src
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2015-06-23 12:23:15 -0400
committerEndi S. Dewata <edewata@redhat.com>2015-06-23 17:30:18 -0400
commitcc97f8628b23f8ea75308bb97a31307cb4f162b9 (patch)
tree0e8eb0d56294eb7beedf0041f4ba6f8d9f0cf3fd /base/server/cmscore/src
parente1e1e1867c3665def4738530d5c36a1f9801fdb9 (diff)
downloadpki-cc97f8628b23f8ea75308bb97a31307cb4f162b9.tar.gz
pki-cc97f8628b23f8ea75308bb97a31307cb4f162b9.tar.xz
pki-cc97f8628b23f8ea75308bb97a31307cb4f162b9.zip
Fixed selftests log message.
The SelfTestSubsystem has been modified to display a 'successful' message only if all tests have passed. If a test fails, it will log a failure, subsequent tests will not be executed, and the subsystem will shutdown immediately. The runSelfTest() in various tests have been cleaned up to throw the original exception to help troubleshooting. The unused RAPresence test has been removed. https://fedorahosted.org/pki/ticket/1249
Diffstat (limited to 'base/server/cmscore/src')
-rw-r--r--base/server/cmscore/src/com/netscape/cmscore/selftests/SelfTestSubsystem.java271
1 files changed, 127 insertions, 144 deletions
diff --git a/base/server/cmscore/src/com/netscape/cmscore/selftests/SelfTestSubsystem.java b/base/server/cmscore/src/com/netscape/cmscore/selftests/SelfTestSubsystem.java
index ad1a1b0b8..d060f8180 100644
--- a/base/server/cmscore/src/com/netscape/cmscore/selftests/SelfTestSubsystem.java
+++ b/base/server/cmscore/src/com/netscape/cmscore/selftests/SelfTestSubsystem.java
@@ -530,7 +530,11 @@ public class SelfTestSubsystem
}
test.runSelfTest(mLogger);
- } catch (ESelfTestException e) {
+
+ } catch (Exception e) {
+
+ CMS.debug(e);
+
// Check to see if the self test was critical:
if (isSelfTestCriticalOnDemand(instanceName)) {
log(mLogger,
@@ -810,146 +814,76 @@ public class SelfTestSubsystem
* </ul>
*
* @exception EMissingSelfTestException subsystem has missing name
- * @exception ESelfTestException self test exception
+ * @exception Exception self test exception
*/
- public void runSelfTestsAtStartup()
- throws EMissingSelfTestException, ESelfTestException {
- String auditMessage = null;
+ public void runSelfTestsAtStartup() throws Exception {
- // ensure that any low-level exceptions are reported
- // to the signed audit log and stored as failures
- try {
- if (CMS.debugOn()) {
- CMS.debug("SelfTestSubsystem::runSelfTestsAtStartup():"
- + " ENTERING . . .");
- }
+ // log that execution of startup self tests has begun
+ log(mLogger,
+ CMS.getLogMessage(
+ "CMSCORE_SELFTESTS_RUN_AT_STARTUP"));
- // loop through all self test plugin instances
- // specified to be executed at server startup
- Enumeration<SelfTestOrderedInstance> instances = mStartupOrder.elements();
+ // loop through all self test plugin instances
+ // specified to be executed at server startup
+ Enumeration<SelfTestOrderedInstance> instances = mStartupOrder.elements();
- while (instances.hasMoreElements()) {
- SelfTestOrderedInstance instance = instances.nextElement();
+ while (instances.hasMoreElements()) {
+ SelfTestOrderedInstance instance = instances.nextElement();
- String instanceFullName = null;
- String instanceName = instance.getSelfTestName();
+ String instanceFullName = null;
+ String instanceName = instance.getSelfTestName();
- if (instanceName != null) {
- instanceName = instanceName.trim();
- instanceFullName = getFullName(mPrefix,
- instanceName);
- } else {
- log(mLogger,
- CMS.getLogMessage(
- "CMSCORE_SELFTESTS_PROPERTY_NAME_IS_NULL"));
+ if (instanceName == null) {
+ log(mLogger,
+ CMS.getLogMessage(
+ "CMSCORE_SELFTESTS_PROPERTY_NAME_IS_NULL"));
- // store a message in the signed audit log file
- auditMessage = CMS.getLogMessage(
- LOGGING_SIGNED_AUDIT_SELFTESTS_EXECUTION,
- ILogger.SYSTEM_UID,
- ILogger.FAILURE);
+ throw new EMissingSelfTestException();
+ }
- audit(auditMessage);
+ instanceName = instanceName.trim();
+ instanceFullName = getFullName(mPrefix, instanceName);
- throw new EMissingSelfTestException();
- }
+ if (!mSelfTestInstances.containsKey(instanceName)) {
+ // self test plugin instance property name is not present
+ log(mLogger,
+ CMS.getLogMessage(
+ "CMSCORE_SELFTESTS_PROPERTY_MISSING_NAME",
+ instanceFullName));
- if (mSelfTestInstances.containsKey(instanceName)) {
- ISelfTest test = mSelfTestInstances.get(instanceName);
-
- try {
- if (CMS.debugOn()) {
- CMS.debug("SelfTestSubsystem::runSelfTestsAtStartup():"
- + " running \""
- + test.getSelfTestName()
- + "\"");
- }
-
- test.runSelfTest(mLogger);
- } catch (ESelfTestException e) {
- // Check to see if the self test was critical:
- if (isSelfTestCriticalAtStartup(instanceName)) {
- log(mLogger,
- CMS.getLogMessage(
- "CMSCORE_SELFTESTS_RUN_AT_STARTUP_FAILED",
- instanceFullName));
-
- // store a message in the signed audit log file
- auditMessage = CMS.getLogMessage(
- LOGGING_SIGNED_AUDIT_SELFTESTS_EXECUTION,
- ILogger.SYSTEM_UID,
- ILogger.FAILURE);
-
- audit(auditMessage);
-
- // shutdown the system gracefully
- CMS.shutdown();
-
- IConfigStore cs = CMS.getConfigStore();
- String instanceID = cs.get("instanceId");
- String subsystemID = cs.get("cs.type").toLowerCase();
-
- System.out.println("SelfTestSubsystem: Disabling \"" + subsystemID + "\" subsystem due to selftest failure.");
-
- try {
- ProcessBuilder pb = new ProcessBuilder("pki-server", "subsystem-disable", "-i", instanceID, subsystemID);
- Process process = pb.inheritIO().start();
- int rc = process.waitFor();
-
- if (rc != 0) {
- System.out.println("SelfTestSubsystem: Unable to disable \"" + subsystemID + "\". RC: " + rc);
- }
-
- } catch (Exception e2) {
- e.printStackTrace();
- }
-
- return;
- }
- }
- } else {
- // self test plugin instance property name is not present
- log(mLogger,
- CMS.getLogMessage(
- "CMSCORE_SELFTESTS_PROPERTY_MISSING_NAME",
- instanceFullName));
+ throw new EMissingSelfTestException(instanceFullName);
+ }
- // store a message in the signed audit log file
- auditMessage = CMS.getLogMessage(
- LOGGING_SIGNED_AUDIT_SELFTESTS_EXECUTION,
- ILogger.SYSTEM_UID,
- ILogger.FAILURE);
+ ISelfTest test = mSelfTestInstances.get(instanceName);
- audit(auditMessage);
+ try {
+ CMS.debug("SelfTestSubsystem: running " + test.getSelfTestName());
+ test.runSelfTest(mLogger);
- throw new EMissingSelfTestException(instanceFullName);
- }
- }
+ } catch (Exception e) {
- // store a message in the signed audit log file
- auditMessage = CMS.getLogMessage(
- LOGGING_SIGNED_AUDIT_SELFTESTS_EXECUTION,
- ILogger.SYSTEM_UID,
- ILogger.SUCCESS);
+ CMS.debug(e);
- audit(auditMessage);
+ // Check to see if the self test was critical:
+ if (!isSelfTestCriticalAtStartup(instanceName)) {
+ continue;
+ }
+
+ log(mLogger,
+ CMS.getLogMessage(
+ "CMSCORE_SELFTESTS_RUN_AT_STARTUP_FAILED",
+ instanceFullName));
- if (CMS.debugOn()) {
- CMS.debug("SelfTestSubsystem::runSelfTestsAtStartup():"
- + " EXITING.");
+ throw e;
}
- } catch (EMissingSelfTestException eAudit1) {
- // store a message in the signed audit log file
- auditMessage = CMS.getLogMessage(
- LOGGING_SIGNED_AUDIT_SELFTESTS_EXECUTION,
- ILogger.SYSTEM_UID,
- ILogger.FAILURE);
+ }
- audit(auditMessage);
+ // log that execution of all "critical" startup self tests
+ // has completed "successfully"
+ log(mLogger,
+ CMS.getLogMessage(
+ "CMSCORE_SELFTESTS_RUN_AT_STARTUP_SUCCEEDED"));
- // rethrow the specific exception to be handled later
- throw eAudit1;
- }
}
public void log(int level, String msg) {
@@ -1831,39 +1765,88 @@ public class SelfTestSubsystem
*
* @exception EBaseException base CMS exception
*/
- public void startup()
- throws EBaseException {
+ public void startup() throws EBaseException {
+
// loop through all self test plugin instances
Enumeration<ISelfTest> instances = mSelfTestInstances.elements();
while (instances.hasMoreElements()) {
ISelfTest instance = instances.nextElement();
-
instance.startupSelfTest();
}
- if (!CMS.isPreOpMode()) {
- // run all self test plugin instances (designated at startup)
- Enumeration<SelfTestOrderedInstance> selftests = mStartupOrder.elements();
+ if (CMS.isPreOpMode()) {
+ // do not run selftests in pre-op mode
+ return;
+ }
- if (selftests.hasMoreElements()) {
- // log that execution of startup self tests has begun
- log(mLogger,
- CMS.getLogMessage(
- "CMSCORE_SELFTESTS_RUN_AT_STARTUP"));
+ // run all self test plugin instances (designated at startup)
+ Enumeration<SelfTestOrderedInstance> selftests = mStartupOrder.elements();
- // execute all startup self tests
- runSelfTestsAtStartup();
+ if (!selftests.hasMoreElements()) {
+ log(mLogger,
+ CMS.getLogMessage(
+ "CMSCORE_SELFTESTS_NOT_RUN_AT_STARTUP"));
+ return;
+ }
- // log that execution of all "critical" startup self tests
- // has completed "successfully"
- log(mLogger,
- CMS.getLogMessage(
- "CMSCORE_SELFTESTS_RUN_AT_STARTUP_SUCCEEDED"));
- } else {
- log(mLogger,
- CMS.getLogMessage(
- "CMSCORE_SELFTESTS_NOT_RUN_AT_STARTUP"));
+ // ensure that any low-level exceptions are reported
+ // to the signed audit log and stored as failures
+ try {
+ // execute all startup self tests
+ runSelfTestsAtStartup();
+
+ // store a message in the signed audit log file
+ String auditMessage = CMS.getLogMessage(
+ LOGGING_SIGNED_AUDIT_SELFTESTS_EXECUTION,
+ ILogger.SYSTEM_UID,
+ ILogger.SUCCESS);
+
+ audit(auditMessage);
+
+ } catch (EMissingSelfTestException e) {
+
+ // store a message in the signed audit log file
+ String auditMessage = CMS.getLogMessage(
+ LOGGING_SIGNED_AUDIT_SELFTESTS_EXECUTION,
+ ILogger.SYSTEM_UID,
+ ILogger.FAILURE);
+
+ audit(auditMessage);
+
+ // rethrow the specific exception to be handled later
+ throw e;
+
+ } catch (Exception e) {
+
+ // store a message in the signed audit log file
+ String auditMessage = CMS.getLogMessage(
+ LOGGING_SIGNED_AUDIT_SELFTESTS_EXECUTION,
+ ILogger.SYSTEM_UID,
+ ILogger.FAILURE);
+
+ audit(auditMessage);
+
+ // shutdown the system gracefully
+ CMS.shutdown();
+
+ IConfigStore cs = CMS.getConfigStore();
+ String instanceID = cs.get("instanceId");
+ String subsystemID = cs.get("cs.type").toLowerCase();
+
+ System.out.println("SelfTestSubsystem: Disabling \"" + subsystemID + "\" subsystem due to selftest failure.");
+
+ try {
+ ProcessBuilder pb = new ProcessBuilder("pki-server", "subsystem-disable", "-i", instanceID, subsystemID);
+ Process process = pb.inheritIO().start();
+ int rc = process.waitFor();
+
+ if (rc != 0) {
+ System.out.println("SelfTestSubsystem: Unable to disable \"" + subsystemID + "\". RC: " + rc);
+ }
+
+ } catch (Exception e2) {
+ e.printStackTrace();
}
}
}