modules/core/util/src/main/java/org/rhq/core/util/stream/StreamUtil.java
| 19 +++++++---
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java
| 6 ++-
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/ManageDriftDefinitionsTest.java
| 4 +-
3 files changed, 21 insertions(+), 8 deletions(-)
New commits:
commit 945f51409ca36c8a70ea109294c978b65c2287a7
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu May 23 17:14:50 2013 -0400
Fix test that started failing after the change to remove JOIN FETCH
from Criteria calls that include paging and optional data. It seems the
new approach changes slightly the way the data is returned.
loadDefinition() returns hibernate proxied data. It is not safe to pass
proxies into equals() impls because these typically access fields directly,
not through getters, and therefore bypass the proxied data.
Note that this change in behavior due to the JOIN FETCH fix would only
affect non-client code (like test code or intra-slsb calls) because return
values to client code would already be cleansed of the proxies. The test
is fixed in the same way, by using HibernateDetachUtility to scrub the
proxies before attempting the assertEquals().
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/ManageDriftDefinitionsTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/ManageDriftDefinitionsTest.java
index 18c7093..4202d6a 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/ManageDriftDefinitionsTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/ManageDriftDefinitionsTest.java
@@ -57,6 +57,7 @@ import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.server.safeinvoker.HibernateDetachUtility;
+import org.rhq.enterprise.server.safeinvoker.HibernateDetachUtility.SerializationType;
import org.rhq.enterprise.server.test.TransactionCallback;
import org.rhq.test.AssertUtils;
@@ -91,7 +92,7 @@ public class ManageDriftDefinitionsTest extends AbstractDriftServerTest
{
deleteEntity(ResourceType.class, DRIFT_NOT_SUPPORTED_TYPE);
}
- public void createDefinitionFromUnpinnedTemplate() {
+ public void createDefinitionFromUnpinnedTemplate() throws Exception {
// first create a template
final DriftDefinition templateDef = new DriftDefinition(new Configuration());
templateDef.setName(NAME_PREFIX + "createUnpinnedDefinition");
@@ -114,6 +115,7 @@ public class ManageDriftDefinitionsTest extends
AbstractDriftServerTest {
DriftDefinitionComparator comparator = new DriftDefinitionComparator(
BOTH_BASE_INFO_AND_DIRECTORY_SPECIFICATIONS);
+ HibernateDetachUtility.nullOutUninitializedFields(newDef,
SerializationType.SERIALIZATION);
assertEquals("The drift definition was not persisted correctly", 0,
comparator.compare(definition, newDef));
assertEquals("The template association was not set on the definition",
template, newDef.getTemplate());
}
commit 8a0989ca54d012dfec6807e29b9e492a8a00c2c1
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu May 23 17:08:27 2013 -0400
Fix test failure issues caused by unclosed streams. Also, make an anal
retentive change to StreamUtil to make absolutely sure we clean up the
streams when closeStreams is true.
diff --git a/modules/core/util/src/main/java/org/rhq/core/util/stream/StreamUtil.java
b/modules/core/util/src/main/java/org/rhq/core/util/stream/StreamUtil.java
index a3170e5..d74fda2 100644
--- a/modules/core/util/src/main/java/org/rhq/core/util/stream/StreamUtil.java
+++ b/modules/core/util/src/main/java/org/rhq/core/util/stream/StreamUtil.java
@@ -240,16 +240,17 @@ public class StreamUtil {
throw new IllegalArgumentException("Output stream is null.");
}
+ BufferedInputStream bufInput = null;
long numBytesCopied = 0;
int bufferSize = 32768;
try {
// make sure we buffer the input
- input = new BufferedInputStream(input, bufferSize);
+ bufInput = new BufferedInputStream(input, bufferSize);
byte[] buffer = new byte[bufferSize];
- for (int bytesRead = input.read(buffer); bytesRead != -1; bytesRead =
input.read(buffer)) {
+ for (int bytesRead = bufInput.read(buffer); bytesRead != -1; bytesRead =
bufInput.read(buffer)) {
if (htmlEscape) {
String htmlEncodedStr = forHTMLTag(new String(buffer, 0,
bytesRead));
bytesRead = htmlEncodedStr.length();
@@ -266,15 +267,23 @@ public class StreamUtil {
} finally {
if (closeStreams) {
try {
- output.close();
+ if (null != bufInput) {
+ bufInput.close();
+ }
} catch (IOException ioe2) {
- LOG.warn("Streams could not be closed", ioe2);
+ LOG.warn("Buffered Input Stream could not be closed",
ioe2);
}
try {
input.close();
} catch (IOException ioe2) {
- LOG.warn("Streams could not be closed", ioe2);
+ LOG.warn("Input Stream could not be closed", ioe2);
+ }
+
+ try {
+ output.close();
+ } catch (IOException ioe2) {
+ LOG.warn("Output Stream could not be closed", ioe2);
}
}
}
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java
index 6283cdc..f692cdc 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java
@@ -185,11 +185,13 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test {
FileInputStream fin = new FileInputStream(serverVersionFile);
FileOutputStream fout = new FileOutputStream(agentPropertiesFile);
//build out the version for the agent jar
- StreamUtil.copy(fin, fout, false);
+ StreamUtil.copy(fin, fout, true);
//generate fake agent file.
File agentBinaryFile = new File(testLocation, DOWNLOADS_AGENT +
"/agent.jar");
buildFakeAgentJar(agentVersionFile, agentBinaryFile);
+ // make sure this is older than the version file
+ agentBinaryFile.setLastModified(System.currentTimeMillis() - 600000);
// this mocks out the endpoint ping - the server will think the agent that is
registering is up and pingable
prepareForTestAgents();
@@ -567,7 +569,7 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test {
DOWNLOADS_AGENT + "/" + AGENT_UPDATE_PROPERTIES);
FileInputStream fin = new FileInputStream(serverVersionFile);
FileOutputStream fout = new FileOutputStream(agentVersionFile);
- StreamUtil.copy(fin, fout, false);
+ StreamUtil.copy(fin, fout, true);
serverVersionFile.delete();
assert !serverVersionFile.exists() : "The default test file location
still exists. Unable to proceed.";
assert agentVersionFile.exists() : "The agent properties file was not
created. Unable to proceed.";