summaryrefslogtreecommitdiffstats
path: root/base/server
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2016-01-05 01:39:06 +0100
committerEndi S. Dewata <edewata@redhat.com>2016-01-18 16:45:32 +0100
commit02b63c6f8200042175b482b9cc00a0bc950f2f06 (patch)
tree3903613cd1989d8621dc6dafcf7e12580a6fc65a /base/server
parent2c88b5d9c15487a796f65beea6c102b1ef04016f (diff)
downloadpki-02b63c6f8200042175b482b9cc00a0bc950f2f06.tar.gz
pki-02b63c6f8200042175b482b9cc00a0bc950f2f06.tar.xz
pki-02b63c6f8200042175b482b9cc00a0bc950f2f06.zip
Updated CLI to run individual selftests.
The pki selftest-run command has been modified to execute the specified selftests, or all selftests if nothing is specified. The command will also display the status of each test and the stack trace if it fails. https://fedorahosted.org/pki/ticket/1502
Diffstat (limited to 'base/server')
-rw-r--r--base/server/cms/src/org/dogtagpki/server/rest/SelfTestService.java58
-rw-r--r--base/server/cmscore/src/com/netscape/cmscore/selftests/SelfTestSubsystem.java75
2 files changed, 94 insertions, 39 deletions
diff --git a/base/server/cms/src/org/dogtagpki/server/rest/SelfTestService.java b/base/server/cms/src/org/dogtagpki/server/rest/SelfTestService.java
index de9bd04ad..e662ba9e7 100644
--- a/base/server/cms/src/org/dogtagpki/server/rest/SelfTestService.java
+++ b/base/server/cms/src/org/dogtagpki/server/rest/SelfTestService.java
@@ -18,6 +18,8 @@
package org.dogtagpki.server.rest;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URLEncoder;
@@ -42,6 +44,8 @@ import com.netscape.certsrv.selftests.ISelfTestSubsystem;
import com.netscape.certsrv.selftests.SelfTestCollection;
import com.netscape.certsrv.selftests.SelfTestData;
import com.netscape.certsrv.selftests.SelfTestResource;
+import com.netscape.certsrv.selftests.SelfTestResult;
+import com.netscape.certsrv.selftests.SelfTestResults;
import com.netscape.cms.servlet.base.PKIService;
/**
@@ -144,7 +148,7 @@ public class SelfTestService extends PKIService implements SelfTestResource {
return createOKResponse(response);
} catch (Exception e) {
- e.printStackTrace();
+ CMS.debug(e);
throw new PKIException(e.getMessage());
}
}
@@ -161,7 +165,7 @@ public class SelfTestService extends PKIService implements SelfTestResource {
return createOKResponse(createSelfTestData(subsystem, selfTestID));
} catch (Exception e) {
- e.printStackTrace();
+ CMS.debug(e);
throw new PKIException(e.getMessage());
}
}
@@ -182,10 +186,58 @@ public class SelfTestService extends PKIService implements SelfTestResource {
subsystem.runSelfTestsOnDemand();
} catch (Exception e) {
- e.printStackTrace();
+ CMS.debug(e);
throw new PKIException(e.getMessage());
}
return createNoContentResponse();
}
+
+ @Override
+ public Response runSelfTests() {
+
+ CMS.debug("SelfTestService.runSelfTests()");
+
+ SelfTestResults results = new SelfTestResults();
+
+ try {
+ ISelfTestSubsystem subsystem = (ISelfTestSubsystem)CMS.getSubsystem(ISelfTestSubsystem.ID);
+ for (String selfTestID : subsystem.listSelfTestsEnabledOnDemand()) {
+ Response response = runSelfTest(selfTestID);
+ SelfTestResult result = (SelfTestResult)response.getEntity();
+ results.addEntry(result);
+ }
+
+ } catch (Exception e) {
+ CMS.debug(e);
+ throw new PKIException(e.getMessage());
+ }
+
+ return createOKResponse(results);
+ }
+
+ @Override
+ public Response runSelfTest(String selfTestID) {
+
+ CMS.debug("SelfTestService.runSelfTest(" + selfTestID + ")");
+
+ SelfTestResult result = new SelfTestResult();
+ result.setID(selfTestID);
+
+ try {
+ ISelfTestSubsystem subsystem = (ISelfTestSubsystem)CMS.getSubsystem(ISelfTestSubsystem.ID);
+ subsystem.runSelfTest(selfTestID);
+ result.setStatus("PASSED");
+
+ } catch (Exception e) {
+ result.setStatus("FAILED");
+
+ StringWriter sw = new StringWriter();
+ PrintWriter out = new PrintWriter(sw);
+ e.printStackTrace(out);
+ result.setOutput(sw.toString());
+ }
+
+ return createOKResponse(result);
+ }
}
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 14fab26e4..4b89aa49e 100644
--- a/base/server/cmscore/src/com/netscape/cmscore/selftests/SelfTestSubsystem.java
+++ b/base/server/cmscore/src/com/netscape/cmscore/selftests/SelfTestSubsystem.java
@@ -501,16 +501,11 @@ public class SelfTestSubsystem
Enumeration<SelfTestOrderedInstance> instances = mOnDemandOrder.elements();
while (instances.hasMoreElements()) {
- SelfTestOrderedInstance instance = instances.nextElement();
- String instanceFullName = null;
+ SelfTestOrderedInstance instance = instances.nextElement();
String instanceName = instance.getSelfTestName();
- if (instanceName != null) {
- instanceName = instanceName.trim();
- instanceFullName = getFullName(mPrefix,
- instanceName);
- } else {
+ if (instanceName == null) {
log(mLogger,
CMS.getLogMessage(
"CMSCORE_SELFTESTS_PROPERTY_NAME_IS_NULL"));
@@ -518,37 +513,11 @@ public class SelfTestSubsystem
throw new EMissingSelfTestException();
}
- if (mSelfTestInstances.containsKey(instanceName)) {
- ISelfTest test = mSelfTestInstances.get(instanceName);
-
- try {
- if (CMS.debugOn()) {
- CMS.debug("SelfTestSubsystem::runSelfTestsOnDemand():"
- + " running \""
- + test.getSelfTestName()
- + "\"");
- }
-
- test.runSelfTest(mLogger);
-
- } catch (Exception e) {
-
- CMS.debug(e);
-
- // Check to see if the self test was critical:
- if (isSelfTestCriticalOnDemand(instanceName)) {
- log(mLogger,
- CMS.getLogMessage(
- "CMSCORE_SELFTESTS_RUN_ON_DEMAND_FAILED",
- instanceFullName));
+ instanceName = instanceName.trim();
- // shutdown the system gracefully
- CMS.shutdown();
+ String instanceFullName = getFullName(mPrefix, instanceName);
- return;
- }
- }
- } else {
+ if (!mSelfTestInstances.containsKey(instanceName)) {
// self test plugin instance property name is not present
log(mLogger,
CMS.getLogMessage(
@@ -557,6 +526,27 @@ public class SelfTestSubsystem
throw new EMissingSelfTestException(instanceFullName);
}
+
+ try {
+ runSelfTest(instanceName);
+
+ } catch (Exception e) {
+
+ CMS.debug(e);
+
+ // Check to see if the self test was critical:
+ if (isSelfTestCriticalOnDemand(instanceName)) {
+ log(mLogger,
+ CMS.getLogMessage(
+ "CMSCORE_SELFTESTS_RUN_ON_DEMAND_FAILED",
+ instanceFullName));
+
+ // shutdown the system gracefully
+ CMS.shutdown();
+
+ return;
+ }
+ }
}
if (CMS.debugOn()) {
@@ -565,6 +555,19 @@ public class SelfTestSubsystem
}
}
+ public void runSelfTest(String instanceName) throws Exception {
+
+ CMS.debug("SelfTestSubsystem.runSelfTest(" + instanceName + ")");
+
+ ISelfTest test = mSelfTestInstances.get(instanceName);
+
+ if (test == null) {
+ throw new EMissingSelfTestException(instanceName);
+ }
+
+ test.runSelfTest(mLogger);
+ }
+
//
// methods associated with the list of startup self tests
//