diff options
Diffstat (limited to 'base/common/src')
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(); + } +} |
