* receive a setRole request
*/
@Test
public void testSetRole() throws Exception {
doSetUp(Role.SLAVE);
RoleInfo info = controller.getRoleInfo();
assertEquals(Role.SLAVE.toString(), info.getRole());
assertEquals(Role.SLAVE, controller.getRole());
OFChannelHandler h = createMock(OFChannelHandler.class);
// Add the channel handler. The controller should call sendRoleRequest
h.sendRoleRequest(Role.SLAVE);
expectLastCall().once();
replay(h);
controller.addSwitchChannelAndSendInitialRole(h);
verify(h);
// Reassert the role.
reset(h);
h.sendRoleRequestIfNotPending(Role.SLAVE);
replay(h);
controller.reassertRole(h, Role.SLAVE);
verify(h);
// reassert a different role: no-op
reset(h);
replay(h);
controller.reassertRole(h, Role.MASTER);
verify(h);
// Change role to MASTER
reset(h);
h.sendRoleRequest(Role.MASTER);
expectLastCall().once();
IHAListener listener = createMock(IHAListener.class);
expect(listener.getName()).andReturn("foo").anyTimes();
setupListenerOrdering(listener);
listener.transitionToMaster();
expectLastCall().once();
replay(listener);
replay(h);
controller.addHAListener(listener);
controller.setRole(Role.MASTER, "FooBar");
controller.processUpdateQueueForTesting();
verify(h);
verify(listener);
info = controller.getRoleInfo();
assertEquals(Role.MASTER.toString(), info.getRole());
assertEquals("FooBar", info.getRoleChangeDescription());
assertEquals(Role.MASTER, controller.getRole());
}