@Test
  public void testGetProperties() throws Exception {
    String clientID = getTestName();
    String queuePrefix = "q:";
    String jmsOptionPrefix = "jms.";
    String clientIDprop = "clientID";
    String baseUri = "amqp://localhost:1234";
    String uri = baseUri + "?" + jmsOptionPrefix + clientIDprop + "=" + clientID;

    JmsConnectionFactory cf = new JmsConnectionFactory();

    // Set the URI property, itself containing a property option in its query
    cf.setRemoteURI(uri);
    // Set another property directly
    cf.setQueuePrefix(queuePrefix);

    // Get the properties
    Map<String, String> props = cf.getProperties();

    // Verify the clientID property option from the URI was applied.
    assertTrue(CLIENT_ID_PROP + " property not found", props.containsKey(CLIENT_ID_PROP));
    assertEquals(
        "clientID uri property query option not applied as expected",
        clientID,
        props.get(CLIENT_ID_PROP));
    assertTrue(QUEUE_PREFIX_PROP + " property not found", props.containsKey(QUEUE_PREFIX_PROP));
    assertEquals(
        "queue prefix property not applied as expected", queuePrefix, props.get(QUEUE_PREFIX_PROP));
  }
  @Test
  public void testConnectionFactoryOptionsAreAppliedToConnection() throws JMSException {
    JmsConnectionFactory factory = new JmsConnectionFactory(USER, PASSWORD, "mock://localhost");

    factory.setTopicPrefix(TOPIC_PREFIX_PROP);
    factory.setQueuePrefix(QUEUE_PREFIX_PROP);
    factory.setClientID(CLIENT_ID_PROP);

    factory.setForceSyncSend(!factory.isForceSyncSend());
    factory.setForceAsyncSend(!factory.isForceAsyncSend());
    factory.setLocalMessagePriority(!factory.isLocalMessagePriority());
    factory.setForceAsyncAcks(!factory.isForceAsyncAcks());
    factory.setConnectTimeout(TimeUnit.SECONDS.toMillis(30));
    factory.setCloseTimeout(TimeUnit.SECONDS.toMillis(45));

    factory.getPrefetchPolicy().setAll(1);

    JmsConnection connection = (JmsConnection) factory.createConnection();
    assertNotNull(connection);

    assertEquals(USER, connection.getUsername());
    assertEquals(PASSWORD, connection.getPassword());
    assertEquals(CLIENT_ID_PROP, connection.getClientID());
    assertEquals(TOPIC_PREFIX_PROP, connection.getTopicPrefix());
    assertEquals(QUEUE_PREFIX_PROP, connection.getQueuePrefix());

    assertEquals(factory.isForceSyncSend(), connection.isForceSyncSend());
    assertEquals(factory.isForceAsyncSend(), connection.isForceAsyncSend());
    assertEquals(factory.isLocalMessagePriority(), connection.isLocalMessagePriority());
    assertEquals(factory.isForceAsyncAcks(), connection.isForceAsyncAcks());

    assertEquals(TimeUnit.SECONDS.toMillis(30), connection.getConnectTimeout());
    assertEquals(TimeUnit.SECONDS.toMillis(45), connection.getCloseTimeout());

    assertEquals(1, connection.getPrefetchPolicy().getTopicPrefetch());
    assertEquals(1, connection.getPrefetchPolicy().getQueuePrefetch());
    assertEquals(1, connection.getPrefetchPolicy().getQueueBrowserPrefetch());
    assertEquals(1, connection.getPrefetchPolicy().getDurableTopicPrefetch());
  }