modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
| 36 ++++++----
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
| 14 ++-
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/nonpc/MiscTest.java
| 23 +++---
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
| 1
4 files changed, 45 insertions(+), 29 deletions(-)
New commits:
commit 612984a9167b6db1577858b7bf10641db88a8df4
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Mar 30 16:12:30 2012 -0400
fix so rolled-back attribute gets correctly deserialized to JsonNode returned for 500
responses (this fixes a couple failing tests); further improve error reporting
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
index 10610fc..e87c68f 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ASConnection.java
@@ -147,9 +147,8 @@ public class ASConnection {
int timeoutMillis = timeoutSec * 1000;
conn.setConnectTimeout(timeoutMillis);
conn.setReadTimeout(timeoutMillis);
-
if (conn.getReadTimeout() != timeoutMillis) {
- log.warn("The JRE uses a broken timeout mechanism - nothing we can
do.");
+ log.warn("Read timeout did not get set on HTTP connection - the JRE
uses a broken timeout mechanism - nothing we can do.");
}
out = conn.getOutputStream();
@@ -161,7 +160,7 @@ public class ASConnection {
}
// TODO (ips): Would it make more sense to return null here, since we
didn't even connect?
Result failure = new Result();
- failure.setFailureDescription(e.getMessage());
+ failure.setFailureDescription(e.toString());
failure.setOutcome("failure");
failure.setRhqThrowable(e);
JsonNode ret = mapper.valueToTree(failure);
@@ -212,7 +211,7 @@ public class ASConnection {
String outcome;
JsonNode operationResult;
- if (responseBody.length() > 0) {
+ if (!responseBody.isEmpty()) {
outcome = responseBody;
operationResult = mapper.readTree(outcome);
if (verbose) {
@@ -277,16 +276,29 @@ public class ASConnection {
} catch (IOException ioe) {
responseCodeString = "unknown response code";
}
- log.error(operation + " failed with " + responseCodeString + "
- response body was [" + responseBody + "].",
- e);
+ String failureDescription = operation + " failed with " +
responseCodeString + " - response body was ["
+ + responseBody + "].";
+ log.error(failureDescription, e);
+
+ JsonNode operationResult = null;
+ if (!responseBody.isEmpty()) {
+ try {
+ operationResult = mapper.readTree(responseBody);
+ } catch (IOException ioe) {
+ log.error("Failed to deserialize response body [" +
responseBody + "] to JsonNode: " + ioe);
+ }
+ }
- Result failure = new Result();
- failure.setFailureDescription(e.getMessage());
- failure.setOutcome("failure");
- failure.setRhqThrowable(e);
+ if (operationResult == null) {
+ Result result = new Result();
+ result.setOutcome("failure");
+ result.setFailureDescription(failureDescription);
+
result.setRolledBack(responseBody.contains("rolled-back=true"));
+ result.setRhqThrowable(e);
+ operationResult = mapper.valueToTree(result);
+ }
- JsonNode ret = mapper.valueToTree(failure);
- return ret;
+ return operationResult;
} finally {
long requestEndTime = System.currentTimeMillis();
PluginStats stats = PluginStats.getInstance();
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
index 478f303..2c34641 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Result.java
@@ -18,15 +18,18 @@
*/
package org.rhq.modules.plugins.jbossas7.json;
-import java.util.List;
import java.util.Map;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonProperty;
/**
- * Counterpart of a result JSON object like e.g.:
- * <pre>{"outcome" : "success", "result" : "no
metrics available", "compensating-operation" : null}</pre>
+ * Counterpart of a result JSON object, e.g.:
+ * <pre>
+ * {"outcome" : "success", "result" : "no metrics
available", "compensating-operation" : null}
+ * {"outcome" : "failed", "failure-description" :
"JBAS010850: No handler for operation foo at address []",
"rolled-back" : true}
+ * </pre>
+ *
* @author Heiko W. Rupp
*/
public class Result {
@@ -134,7 +137,10 @@ public class Result {
@Override
public String toString() {
return "Result{" +
- "success=" + success +
+ "outcome='" + outcome + '\'' +
+ ", failureDescription=" + failureDescription +
+ ", rolledBack=" + rolledBack +
'}';
}
+
}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/nonpc/MiscTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/nonpc/MiscTest.java
index 20094da..2f8023a 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/nonpc/MiscTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/nonpc/MiscTest.java
@@ -2,8 +2,6 @@ package org.rhq.modules.plugins.jbossas7.itest.nonpc;
import java.util.Map;
-import org.testng.annotations.Test;
-
import org.rhq.modules.plugins.jbossas7.json.Address;
import org.rhq.modules.plugins.jbossas7.json.ComplexResult;
import org.rhq.modules.plugins.jbossas7.json.CompositeOperation;
@@ -11,6 +9,8 @@ import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.ReadAttribute;
import org.rhq.modules.plugins.jbossas7.json.Result;
+import static org.testng.Assert.*;
+
/**
* Miscellaneous tests that don't fit well into other test classes
*
@@ -21,11 +21,10 @@ public class MiscTest extends AbstractIntegrationTest {
public void testSetRollback() throws Exception {
Operation op = new Operation("foo", new Address());
Result res = getASConnection().execute(op);
- assert res != null;
- assert !res.isSuccess() : "Response was successful.";
- assert res.isRolledBack() : "Response was not rolled back: " +
res.getFailureDescription();
- assert res.getFailureDescription().endsWith("rolled-back=true")
- : "Unexpected failure description: " +
res.getFailureDescription();
+ assertNotNull(res);
+ assertFalse(res.isSuccess(), "Response outcome was success.");
+ assertTrue(res.isRolledBack(), "Response was not rolled back: " +
res);
+ assertTrue(res.getFailureDescription().endsWith("rolled-back=true"),
"Unexpected failure description: " + res);
}
public void testCompositeReadAttribute() throws Exception {
@@ -37,11 +36,11 @@ public class MiscTest extends AbstractIntegrationTest {
cop.addStep(step2);
ComplexResult res = getASConnection().executeComplex(cop);
- assert res!=null;
- assert res.isSuccess();
- Map<String,Object> resResult = res.getResult();
- assert resResult !=null;
- assert resResult.size()==2;
+ assertNotNull(res);
+ assertTrue(res.isSuccess(), "Response outcome was failure.");
+ Map<String, Object> resResult = res.getResult();
+ assertNotNull(resResult);
+ assertEquals(resResult.size(), 2);
}
}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
index 279efdf..b1d9a40 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/SocketBindingTest.java
@@ -22,7 +22,6 @@ package org.rhq.modules.plugins.jbossas7.itest.standalone;
import java.util.Iterator;
import org.jetbrains.annotations.NotNull;
-import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.rhq.core.clientapi.agent.PluginContainerException;