Search in sources :

Example 51 with Link

use of org.jboss.resteasy.spi.Link in project activemq-artemis by apache.

the class EmbeddedRestActiveMQJMSTest method startEmbedded.

@BeforeClass
public static void startEmbedded() throws Exception {
    server = new EmbeddedRestActiveMQJMS(null);
    assertNotNull(server.embeddedActiveMQ);
    server.getManager().setConfigResourcePath("activemq-rest.xml");
    SecurityConfiguration securityConfiguration = createDefaultSecurityConfiguration();
    ActiveMQJAASSecurityManager securityManager = new ActiveMQJAASSecurityManager(InVMLoginModule.class.getName(), securityConfiguration);
    server.getEmbeddedJMS().setSecurityManager(securityManager);
    server.start();
    List<String> connectors = createInVmConnector();
    server.getEmbeddedJMS().getJMSServerManager().createConnectionFactory("ConnectionFactory", false, JMSFactoryType.CF, connectors, "ConnectionFactory");
    ClientRequest request = new ClientRequest(TestPortProvider.generateURL("/queues/exampleQueue"));
    ClientResponse<?> response = request.head();
    response.releaseConnection();
    assertEquals(200, response.getStatus());
    Link sender = response.getLinkHeader().getLinkByTitle("create");
    System.out.println("create: " + sender);
    Link consumers = response.getLinkHeader().getLinkByTitle("pull-consumers");
    System.out.println("pull: " + consumers);
    response = Util.setAutoAck(consumers, true);
    consumeNext = response.getLinkHeader().getLinkByTitle("consume-next");
    System.out.println("consume-next: " + consumeNext);
}
Also used : ActiveMQJAASSecurityManager(org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager) InVMLoginModule(org.apache.activemq.artemis.spi.core.security.jaas.InVMLoginModule) SecurityConfiguration(org.apache.activemq.artemis.core.config.impl.SecurityConfiguration) ClientRequest(org.jboss.resteasy.client.ClientRequest) Link(org.jboss.resteasy.spi.Link) BeforeClass(org.junit.BeforeClass)

Example 52 with Link

use of org.jboss.resteasy.spi.Link in project activemq-artemis by apache.

the class AutoAckTopicTest method testNewSubNotBlockedByTimeoutTask.

@Test
public void testNewSubNotBlockedByTimeoutTask() throws Exception {
    // Default config is 1s interval, 300s timeout.
    // Create a topic
    String testName = "AutoAckTopicTest.testNewSubNotBlockedByTimeoutTask";
    TopicDeployment deployment = new TopicDeployment();
    deployment.setDuplicatesAllowed(true);
    deployment.setDurableSend(false);
    deployment.setName(testName);
    manager.getTopicManager().deploy(deployment);
    // Create a consumer
    ClientRequest request = new ClientRequest(TestPortProvider.generateURL("/topics/" + testName));
    ClientResponse<?> response = request.head();
    response.releaseConnection();
    Assert.assertEquals(200, response.getStatus());
    Link sender = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), response, "create");
    Link subscriptions = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), response, "pull-subscriptions");
    // Create the pull-subscription itself.
    ClientResponse<?> res = subscriptions.request().post();
    res.releaseConnection();
    Assert.assertEquals(201, res.getStatus());
    Link sub1 = res.getLocationLink();
    Assert.assertNotNull(sub1);
    Link consumeNext1 = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "consume-next");
    Assert.assertNotNull(consumeNext1);
    // Pull on the topic for 8s (long enoguh to guarantee the rest of the test
    // will pass/fail due to the timeouttask + test operations)
    AcceptWaitListener awlistener = new AcceptWaitListener(consumeNext1.getHref());
    Thread t = new Thread(awlistener);
    t.start();
    // Wait 2 seconds to ensure a new TimeoutTask is running concurrently.
    Thread.sleep(2000);
    // Attempt to create a new pull-subscription. Validate that it takes no longer than 2 seconds
    // (it should take like 20ms, but give it a relatively huge amount of leeway)
    NewPullSubscriber nps = new NewPullSubscriber(subscriptions.getHref());
    Thread npsThread = new Thread(nps);
    npsThread.start();
    Thread.sleep(2000);
    Assert.assertTrue("NewPullSubscriber did not finish in 2 seconds!", nps.isFinished());
    Assert.assertFalse("AcceptWaitListener failed to open connection!", awlistener.isFailed());
    Assert.assertFalse("NewPullSubscriber failed to open new subscription!", nps.isFailed());
    npsThread.interrupt();
    t.interrupt();
}
Also used : TopicDeployment(org.apache.activemq.artemis.rest.topic.TopicDeployment) ClientRequest(org.jboss.resteasy.client.ClientRequest) Link(org.jboss.resteasy.spi.Link) Test(org.junit.Test)

Example 53 with Link

use of org.jboss.resteasy.spi.Link in project activemq-artemis by apache.

the class ClientAckTopicTest method testPull.

@Test
public void testPull() throws Exception {
    ClientRequest request = new ClientRequest(TestPortProvider.generateURL("/topics/testQueue"));
    ClientResponse<?> response = request.head();
    response.releaseConnection();
    Assert.assertEquals(200, response.getStatus());
    Link sender = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), response, "create");
    System.out.println("create: " + sender);
    Link subscriptions = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), response, "pull-subscriptions");
    response = subscriptions.request().formParameter("autoAck", "false").formParameter("durable", "true").post();
    response.releaseConnection();
    Assert.assertEquals(201, response.getStatus());
    Link sub1 = response.getLocationLink();
    Assert.assertNotNull(sub1);
    Link consumeNext = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), response, "acknowledge-next");
    System.out.println("poller: " + consumeNext);
    ClientResponse<String> res = consumeNext.request().post(String.class);
    res.releaseConnection();
    Assert.assertEquals(503, res.getStatus());
    consumeNext = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "acknowledge-next");
    System.out.println(consumeNext);
    res = sender.request().body("text/plain", Integer.toString(1)).post();
    res.releaseConnection();
    Assert.assertEquals(201, res.getStatus());
    res = consumeNext.request().post(String.class);
    Assert.assertEquals(200, res.getStatus());
    Assert.assertEquals(Integer.toString(1), res.getEntity());
    res.releaseConnection();
    Link ack = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "acknowledgement");
    System.out.println("ack: " + ack);
    ClientResponse ackRes = ack.request().formParameter("acknowledge", "true").post();
    ackRes.releaseConnection();
    Assert.assertEquals(204, ackRes.getStatus());
    res = consumeNext.request().post();
    res.releaseConnection();
    Assert.assertEquals(503, res.getStatus());
    res = sender.request().body("text/plain", Integer.toString(2)).post();
    res.releaseConnection();
    Assert.assertEquals(201, res.getStatus());
    res = sender.request().body("text/plain", Integer.toString(3)).post();
    res.releaseConnection();
    Assert.assertEquals(201, res.getStatus());
    res = consumeNext.request().post(String.class);
    Assert.assertEquals(200, res.getStatus());
    Assert.assertEquals(Integer.toString(2), res.getEntity());
    res.releaseConnection();
    ack = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "acknowledgement");
    System.out.println("ack: " + ack);
    ackRes = ack.request().formParameter("acknowledge", "true").post();
    ackRes.releaseConnection();
    Assert.assertEquals(204, ackRes.getStatus());
    res = consumeNext.request().post(String.class);
    Assert.assertEquals(200, res.getStatus());
    Assert.assertEquals(Integer.toString(3), res.getEntity());
    res.releaseConnection();
    ack = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "acknowledgement");
    System.out.println("ack: " + ack);
    ackRes = ack.request().formParameter("acknowledge", "true").post();
    ackRes.releaseConnection();
    Assert.assertEquals(204, ackRes.getStatus());
    res = consumeNext.request().post();
    res.releaseConnection();
    Assert.assertEquals(503, res.getStatus());
    System.out.println(sub1);
    res = sub1.request().delete();
    res.releaseConnection();
    Assert.assertEquals(204, res.getStatus());
}
Also used : ClientResponse(org.jboss.resteasy.client.ClientResponse) ClientRequest(org.jboss.resteasy.client.ClientRequest) Link(org.jboss.resteasy.spi.Link) Test(org.junit.Test)

Example 54 with Link

use of org.jboss.resteasy.spi.Link in project activemq-artemis by apache.

the class ClientAckTopicTest method testSuccessFirst.

@Test
public void testSuccessFirst() throws Exception {
    ClientRequest request = new ClientRequest(TestPortProvider.generateURL("/topics/testQueue"));
    ClientResponse<?> response = request.head();
    response.releaseConnection();
    Assert.assertEquals(200, response.getStatus());
    Link sender = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), response, "create");
    System.out.println("create: " + sender);
    Link subscriptions = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), response, "pull-subscriptions");
    response = subscriptions.request().formParameter("autoAck", "false").formParameter("durable", "true").post();
    response.releaseConnection();
    Assert.assertEquals(201, response.getStatus());
    Link sub1 = response.getLocationLink();
    Assert.assertNotNull(sub1);
    Link consumeNext = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), response, "acknowledge-next");
    System.out.println("poller: " + consumeNext);
    ClientResponse<?> res = sender.request().body("text/plain", Integer.toString(1)).post();
    res.releaseConnection();
    Assert.assertEquals(201, res.getStatus());
    System.out.println("call ack next");
    res = consumeNext.request().post(String.class);
    res.releaseConnection();
    Assert.assertEquals(200, res.getStatus());
    Link ack = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "acknowledgement");
    System.out.println("ack: " + ack);
    Assert.assertNotNull(ack);
    Link session = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "consumer");
    System.out.println("session: " + session);
    consumeNext = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "acknowledge-next");
    System.out.println("consumeNext: " + consumeNext);
    ClientResponse ackRes = ack.request().formParameter("acknowledge", "true").post();
    ackRes.releaseConnection();
    Assert.assertEquals(204, ackRes.getStatus());
    consumeNext = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), ackRes, "acknowledge-next");
    System.out.println("sending next...");
    res = sender.request().body("text/plain", Integer.toString(2)).post();
    res.releaseConnection();
    Assert.assertEquals(201, res.getStatus());
    System.out.println(consumeNext);
    res = consumeNext.request().header(Constants.WAIT_HEADER, "10").post(String.class);
    res.releaseConnection();
    Assert.assertEquals(200, res.getStatus());
    ack = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "acknowledgement");
    System.out.println("ack: " + ack);
    Assert.assertNotNull(ack);
    getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "acknowledge-next");
    System.out.println("consumeNext: " + consumeNext);
    ackRes = ack.request().formParameter("acknowledge", "true").post();
    ackRes.releaseConnection();
    Assert.assertEquals(204, ackRes.getStatus());
    Assert.assertEquals(204, sub1.request().delete().getStatus());
}
Also used : ClientResponse(org.jboss.resteasy.client.ClientResponse) ClientRequest(org.jboss.resteasy.client.ClientRequest) Link(org.jboss.resteasy.spi.Link) Test(org.junit.Test)

Example 55 with Link

use of org.jboss.resteasy.spi.Link in project activemq-artemis by apache.

the class ClientAckTopicTest method testAckTimeout.

public void testAckTimeout() throws Exception {
    ClientRequest request = new ClientRequest(TestPortProvider.generateURL("/topics/testAck"));
    ClientResponse<?> response = request.head();
    response.releaseConnection();
    Assert.assertEquals(200, response.getStatus());
    Link sender = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), response, "create");
    System.out.println("create: " + sender);
    Link subscriptions = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), response, "pull-subscriptions");
    response = subscriptions.request().formParameter("autoAck", "false").formParameter("durable", "true").post();
    response.releaseConnection();
    Assert.assertEquals(201, response.getStatus());
    Link sub1 = response.getLocationLink();
    Assert.assertNotNull(sub1);
    Link consumeNext = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), response, "acknowledge-next");
    System.out.println("poller: " + consumeNext);
    {
        ClientResponse<?> res = sender.request().body("text/plain", Integer.toString(1)).post();
        res.releaseConnection();
        Assert.assertEquals(201, res.getStatus());
        res = consumeNext.request().post(String.class);
        res.releaseConnection();
        Assert.assertEquals(200, res.getStatus());
        Link ack = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "acknowledgement");
        System.out.println("ack: " + ack);
        Assert.assertNotNull(ack);
        Link session = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "consumer");
        System.out.println("session: " + session);
        consumeNext = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "acknowledge-next");
        System.out.println("consumeNext: " + consumeNext);
        // test timeout
        Thread.sleep(2000);
        ClientResponse ackRes = ack.request().formParameter("acknowledge", "true").post();
        if (ackRes.getStatus() == 500) {
            System.out.println("Failure: " + ackRes.getEntity(String.class));
        }
        ackRes.releaseConnection();
        Assert.assertEquals(412, ackRes.getStatus());
        System.out.println("**** Successfully failed ack");
        consumeNext = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), ackRes, "acknowledge-next");
        System.out.println("consumeNext: " + consumeNext);
    }
    {
        ClientResponse<?> res = consumeNext.request().header(Constants.WAIT_HEADER, "2").post(String.class);
        res.releaseConnection();
        Assert.assertEquals(200, res.getStatus());
        Link ack = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "acknowledgement");
        System.out.println("ack: " + ack);
        Assert.assertNotNull(ack);
        consumeNext = getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "acknowledge-next");
        System.out.println("consumeNext: " + consumeNext);
        ClientResponse ackRes = ack.request().formParameter("acknowledge", "true").post();
        if (ackRes.getStatus() != 204) {
            System.out.println(ackRes.getEntity(String.class));
        }
        ackRes.releaseConnection();
        Assert.assertEquals(204, ackRes.getStatus());
    }
    Assert.assertEquals(204, sub1.request().delete().getStatus());
}
Also used : ClientResponse(org.jboss.resteasy.client.ClientResponse) ClientRequest(org.jboss.resteasy.client.ClientRequest) Link(org.jboss.resteasy.spi.Link)

Aggregations

Link (org.jboss.resteasy.spi.Link)86 ClientRequest (org.jboss.resteasy.client.ClientRequest)81 Test (org.junit.Test)68 ClientResponse (org.jboss.resteasy.client.ClientResponse)25 XmlLink (org.apache.activemq.artemis.rest.queue.push.xml.XmlLink)20 QueueDeployment (org.apache.activemq.artemis.rest.queue.QueueDeployment)11 PushTopicRegistration (org.apache.activemq.artemis.rest.topic.PushTopicRegistration)8 TopicDeployment (org.apache.activemq.artemis.rest.topic.TopicDeployment)7 SimpleString (org.apache.activemq.artemis.api.core.SimpleString)4 PushRegistration (org.apache.activemq.artemis.rest.queue.push.xml.PushRegistration)4 ClientSession (org.apache.activemq.artemis.api.core.client.ClientSession)2 AddressInfo (org.apache.activemq.artemis.core.server.impl.AddressInfo)2 ActiveMQPushStrategy (org.apache.activemq.artemis.rest.queue.push.ActiveMQPushStrategy)2 Connection (javax.jms.Connection)1 Destination (javax.jms.Destination)1 MessageConsumer (javax.jms.MessageConsumer)1 MessageListener (javax.jms.MessageListener)1 Session (javax.jms.Session)1 SecurityConfiguration (org.apache.activemq.artemis.core.config.impl.SecurityConfiguration)1 ActiveMQDestination (org.apache.activemq.artemis.jms.client.ActiveMQDestination)1