modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServerServiceImpl.java | 2 - modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java | 11 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-)
New commits: commit 81533f2742439923e77ae6d51166f9ed4f6caaa1 Author: John Mazzitelli mazz@redhat.com Date: Tue Jan 17 14:48:11 2012 -0500
[BZ 772318] forgot to test the most obvious and most common scenario - re-starting the agent. My original fix broke that. This fixes it back again and adds a unit test for it.
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServerServiceImpl.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServerServiceImpl.java index 85aa364..e380b6e 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServerServiceImpl.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServerServiceImpl.java @@ -125,7 +125,7 @@ public class CoreServerServiceImpl implements CoreServerService { } else { Agent agentByAddressPort = getAgentManager().getAgentByAddressAndPort(request.getAddress(), request.getPort()); - if (agentByAddressPort != null) { + if (agentByAddressPort != null && !agentByAddressPort.getName().equals(request.getName())) { // the agent request provided information about an authentic agent but it is trying to // steal another agent's host/port. Thus, we will abort this request. String msg = "The agent asking for registration [" + request.getName() diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java index 0abbbeb..a3dda5e 100644 --- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java +++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java @@ -119,6 +119,15 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { assert agent.getAddress().equals("hostZdoubleprime"); assert agent.getPort() == 55552;
+ // now don't change Z's host/port but re-register everything the same with its token + request = createRequest(zName, "hostZdoubleprime", 55552, results.getAgentToken()); + results = service.registerAgent(request); + assert results != null; + agent = LookupUtil.getAgentManager().getAgentByAgentToken(results.getAgentToken()); + assert agent.getName().equals(zName); + assert agent.getAddress().equals("hostZdoubleprime"); + assert agent.getPort() == 55552; + // now don't change Z's host/port but re-register everything the same, but with no token request = createRequest(zName, "hostZdoubleprime", 55552, null); results = service.registerAgent(request); @@ -343,6 +352,8 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { MBeanServer mbs = getJBossMBeanServer(); mbs.unregisterMBean(CoreServerMBean.OBJECT_NAME);
+ unprepareForTestAgents(); + // in case this was set before our tests, put it back the way it was if (oldServerNamePropertyValue != null) { System.setProperty(RHQ_SERVER_NAME_PROPERTY, oldServerNamePropertyValue);