@Test
  public void testConnectorActivation() throws Exception {
    IoConnector connector = EasyMock.createStrictMock(IoConnector.class);

    IoServiceListenerSupport support = new IoServiceListenerSupport(connector);

    final DummySession session = new DummySession();
    session.setService(connector);
    session.setRemoteAddress(ADDRESS);

    IoHandler handler = EasyMock.createStrictMock(IoHandler.class);
    session.setHandler(handler);

    IoServiceListener listener = EasyMock.createStrictMock(IoServiceListener.class);

    // Creating a session should activate a service automatically.
    listener.serviceActivated(connector);
    listener.sessionCreated(session);
    handler.sessionCreated(session);
    handler.sessionOpened(session);

    EasyMock.replay(listener);
    EasyMock.replay(handler);

    support.add(listener);
    support.fireSessionCreated(session);

    EasyMock.verify(listener);
    EasyMock.verify(handler);

    // Destroying a session should deactivate a service automatically.
    EasyMock.reset(listener);
    EasyMock.reset(handler);
    listener.sessionDestroyed(session);
    handler.sessionClosed(session);
    listener.serviceDeactivated(connector);

    EasyMock.replay(listener);
    EasyMock.replay(handler);

    support.fireSessionDestroyed(session);

    EasyMock.verify(listener);
    EasyMock.verify(handler);

    assertEquals(0, support.getManagedSessions().size());
    assertNull(support.getManagedSessions().get(session.getId()));
  }