public void testConnector() throws Exception {
    SessionID sessionID = new SessionID(FixVersions.BEGINSTRING_FIX40, "TW", "ISLD");
    SessionSettings settings = setUpSessionSettings(sessionID);
    DefaultSessionFactory sessionFactory =
        new DefaultSessionFactory(
            new UnitTestApplication(),
            new MemoryStoreFactory(),
            new ScreenLogFactory(true, true, true));

    SessionConnector connector = new SessionConnectorUnderTest(settings, sessionFactory);

    connector.addPropertyChangeListener(new SessionConnectorListener());

    Session session = connector.createSession(sessionID);
    assertNotNull(session);

    Map<SessionID, Session> sessions = Collections.singletonMap(session.getSessionID(), session);
    connector.setSessions(sessions);

    assertEquals(1, propertyChangeEvents.size());

    assertEquals(1, connector.getManagedSessions().size());
    assertEquals(session, connector.getManagedSessions().get(0));

    assertFalse(connector.isLoggedOn());

    Field stateField = session.getClass().getDeclaredField("state");
    stateField.setAccessible(true);
    SessionState state = (SessionState) stateField.get(session);

    state.setLogonSent(true);
    state.setLogonReceived(true);
    assertTrue(connector.isLoggedOn());

    assertTrue(session.isEnabled());
    connector.logoutAllSessions(true);
    assertFalse(session.isEnabled());

    assertEquals(9999, connector.getIntSetting(Acceptor.SETTING_SOCKET_ACCEPT_PORT));

    assertNotNull(connector.getScheduledExecutorService());
    assertEquals(settings, connector.getSettings());
  }