}
@Test
public void testChangeAddressPort() throws Exception {
CoreServerServiceImpl service = new CoreServerServiceImpl();
AgentRegistrationRequest request;
AgentRegistrationResults results;
String tuid = "" + new Random().nextInt();
//let's make this unique per run to support repeated individual runs.
String zName = prefixName("Z" + "-" + tuid);
// create a new agent Z with host/port of hostZ/55550
request = createRequest(zName, "hostZ", 55550, null);
results = service.registerAgent(request);
assert results != null : "got null results";
// now change Z's host to hostZprime
request = createRequest(zName, "hostZprime", 55550, results.getAgentToken());
results = service.registerAgent(request);
assert results != null;
Agent agent = LookupUtil.getAgentManager().getAgentByAgentToken(results.getAgentToken());
assert agent.getName().equals(zName);
assert agent.getAddress().equals("hostZprime");
assert agent.getPort() == 55550;
// now change Z's port to 55551
request = createRequest(zName, "hostZprime", 55551, results.getAgentToken());
results = service.registerAgent(request);
assert results != null;
agent = LookupUtil.getAgentManager().getAgentByAgentToken(results.getAgentToken());
assert agent.getName().equals(zName);
assert agent.getAddress().equals("hostZprime");
assert agent.getPort() == 55551;
// now change Z's host/port to hostZdoubleprime/55552
request = createRequest(zName, "hostZdoubleprime" + tuid, 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" + tuid);
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" + tuid, 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" + tuid);
assert agent.getPort() == 55552;
// remember this agent so our later tests can use it
AgentRegistrationRequest zReq = request;
AgentRegistrationResults zResults = results;
writeObjects("b.obj", zReq, zResults);
// Try to re-register changes to host and/or port but do not send any token.
// Because there is no token, these should fail.
request = createRequest(zName, B_HOST, zReq.getPort(), null);
try {
service.registerAgent(request);
assert false : "(1) Should not have been able to register without a token";
} catch (AgentRegistrationException ok) {
debugPrintThrowable(ok);
}
request = createRequest(zName, zReq.getAddress(), B_PORT, null);
try {
service.registerAgent(request);
assert false : "(2) Should not have been able to register without a token";
} catch (AgentRegistrationException ok) {
debugPrintThrowable(ok);
}
request = createRequest(zName, B_HOST, B_PORT, null);
try {
service.registerAgent(request);
assert false : "(3) Should not have been able to register without a token";
} catch (AgentRegistrationException ok) {
debugPrintThrowable(ok);
}
request = createRequest(zName, zReq.getAddress(), zReq.getPort(), null);
try {
service.registerAgent(request);
assert false : "(4) Should not have been able to register without a token";
} catch (AgentRegistrationException ok) {
debugPrintThrowable(ok);