summaryrefslogtreecommitdiffstats
path: root/base/common/src
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/common/src
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/common/src')
-rw-r--r--base/common/src/com/netscape/certsrv/selftests/ISelfTestSubsystem.java7
-rw-r--r--base/common/src/com/netscape/certsrv/selftests/SelfTestClient.java10
-rw-r--r--base/common/src/com/netscape/certsrv/selftests/SelfTestResource.java12
-rw-r--r--base/common/src/com/netscape/certsrv/selftests/SelfTestResult.java150
-rw-r--r--base/common/src/com/netscape/certsrv/selftests/SelfTestResults.java38
5 files changed, 217 insertions, 0 deletions
diff --git a/base/common/src/com/netscape/certsrv/selftests/ISelfTestSubsystem.java b/base/common/src/com/netscape/certsrv/selftests/ISelfTestSubsystem.java
index 29adde082..c07b96acb 100644
--- a/base/common/src/com/netscape/certsrv/selftests/ISelfTestSubsystem.java
+++ b/base/common/src/com/netscape/certsrv/selftests/ISelfTestSubsystem.java
@@ -139,6 +139,13 @@ public interface ISelfTestSubsystem
public void runSelfTestsOnDemand()
throws EMissingSelfTestException, ESelfTestException;
+ /**
+ * Execute a self test.
+ *
+ * @exception Exception self test exception
+ */
+ public void runSelfTest(String instanceName) throws Exception;
+
//
// methods associated with the list of startup self tests
//
diff --git a/base/common/src/com/netscape/certsrv/selftests/SelfTestClient.java b/base/common/src/com/netscape/certsrv/selftests/SelfTestClient.java
index 108cc1f8f..7dce1db15 100644
--- a/base/common/src/com/netscape/certsrv/selftests/SelfTestClient.java
+++ b/base/common/src/com/netscape/certsrv/selftests/SelfTestClient.java
@@ -50,6 +50,16 @@ public class SelfTestClient extends Client {
client.getEntity(response, Void.class);
}
+ public SelfTestResults runSelfTests() {
+ Response response = resource.runSelfTests();
+ return client.getEntity(response, SelfTestResults.class);
+ }
+
+ public SelfTestResult runSelfTest(String selfTestID) {
+ Response response = resource.runSelfTest(selfTestID);
+ return client.getEntity(response, SelfTestResult.class);
+ }
+
public SelfTestData getSelfTest(String selfTestID) {
Response response = resource.getSelfTest(selfTestID);
return client.getEntity(response, SelfTestData.class);
diff --git a/base/common/src/com/netscape/certsrv/selftests/SelfTestResource.java b/base/common/src/com/netscape/certsrv/selftests/SelfTestResource.java
index 04f41999d..2238beb11 100644
--- a/base/common/src/com/netscape/certsrv/selftests/SelfTestResource.java
+++ b/base/common/src/com/netscape/certsrv/selftests/SelfTestResource.java
@@ -50,8 +50,20 @@ public interface SelfTestResource {
@ACLMapping("selftests.execute")
public Response executeSelfTests(@QueryParam("action") String action);
+ @POST
+ @Path("run")
+ @ClientResponseType(entityType=SelfTestResults.class)
+ @ACLMapping("selftests.execute")
+ public Response runSelfTests();
+
@GET
@Path("{selfTestID}")
@ClientResponseType(entityType=SelfTestData.class)
public Response getSelfTest(@PathParam("selfTestID") String selfTestID);
+
+ @POST
+ @Path("{selfTestID}/run")
+ @ClientResponseType(entityType=SelfTestResult.class)
+ @ACLMapping("selftests.execute")
+ public Response runSelfTest(@PathParam("selfTestID") String selfTestID);
}
diff --git a/base/common/src/com/netscape/certsrv/selftests/SelfTestResult.java b/base/common/src/com/netscape/certsrv/selftests/SelfTestResult.java
new file mode 100644
index 000000000..1bb361928
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/selftests/SelfTestResult.java
@@ -0,0 +1,150 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2016 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+
+package com.netscape.certsrv.selftests;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author Endi S. Dewata
+ */
+@XmlRootElement(name="SelfTestResult")
+public class SelfTestResult {
+
+ public static Marshaller marshaller;
+ public static Unmarshaller unmarshaller;
+
+ static {
+ try {
+ marshaller = JAXBContext.newInstance(SelfTestResult.class).createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ unmarshaller = JAXBContext.newInstance(SelfTestResult.class).createUnmarshaller();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ String id;
+ String status;
+ String output;
+
+ @XmlAttribute(name="id")
+ public String getID() {
+ return id;
+ }
+
+ public void setID(String id) {
+ this.id = id;
+ }
+
+ @XmlElement(name="Status")
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ @XmlElement(name="Output")
+ public String getOutput() {
+ return output;
+ }
+
+ public void setOutput(String output) {
+ this.output = output;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ result = prime * result + ((output == null) ? 0 : output.hashCode());
+ result = prime * result + ((status == null) ? 0 : status.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ SelfTestResult other = (SelfTestResult) obj;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ if (output == null) {
+ if (other.output != null)
+ return false;
+ } else if (!output.equals(other.output))
+ return false;
+ if (status == null) {
+ if (other.status != null)
+ return false;
+ } else if (!status.equals(other.status))
+ return false;
+ return true;
+ }
+
+ public String toString() {
+ try {
+ StringWriter sw = new StringWriter();
+ marshaller.marshal(this, sw);
+ return sw.toString();
+
+ } catch (Exception e) {
+ return super.toString();
+ }
+ }
+
+ public static SelfTestResult valueOf(String string) throws Exception {
+ try {
+ return (SelfTestResult)unmarshaller.unmarshal(new StringReader(string));
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public static void main(String args[]) throws Exception {
+
+ SelfTestResult before = new SelfTestResult();
+ before.setID("selftest1");
+ before.setStatus("PASSED");
+ before.setOutput(null);
+
+ String string = before.toString();
+ System.out.println(string);
+
+ SelfTestResult after = SelfTestResult.valueOf(string);
+ System.out.println(before.equals(after));
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/selftests/SelfTestResults.java b/base/common/src/com/netscape/certsrv/selftests/SelfTestResults.java
new file mode 100644
index 000000000..e4f2d951d
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/selftests/SelfTestResults.java
@@ -0,0 +1,38 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2016 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+
+package com.netscape.certsrv.selftests;
+
+import java.util.Collection;
+
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import com.netscape.certsrv.base.DataCollection;
+
+/**
+ * @author Endi S. Dewata
+ */
+@XmlRootElement(name="SelfTestResults")
+public class SelfTestResults extends DataCollection<SelfTestResult> {
+
+ @XmlElementRef
+ public Collection<SelfTestResult> getEntries() {
+ return super.getEntries();
+ }
+}