KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > test > jbossmq > test > ScheduledDeliveryUnitTestCase


1 /*
2   * JBoss, Home of Professional Open Source
3   * Copyright 2005, JBoss Inc., and individual contributors as indicated
4   * by the @authors tag. See the copyright.txt in the distribution for a
5   * full listing of individual contributors.
6   *
7   * This is free software; you can redistribute it and/or modify it
8   * under the terms of the GNU Lesser General Public License as
9   * published by the Free Software Foundation; either version 2.1 of
10   * the License, or (at your option) any later version.
11   *
12   * This software is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15   * Lesser General Public License for more details.
16   *
17   * You should have received a copy of the GNU Lesser General Public
18   * License along with this software; if not, write to the Free
19   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21   */

22 package org.jboss.test.jbossmq.test;
23
24 import java.util.Enumeration JavaDoc;
25 import javax.jms.DeliveryMode JavaDoc;
26 import javax.jms.QueueSession JavaDoc;
27 import javax.jms.Queue JavaDoc;
28 import javax.jms.QueueSender JavaDoc;
29 import javax.jms.Session JavaDoc;
30 import javax.jms.TextMessage JavaDoc;
31 import javax.jms.QueueBrowser JavaDoc;
32 import javax.management.ObjectName JavaDoc;
33
34 import org.jboss.mq.server.MessageCacheMBean;
35 import org.jboss.test.JBossTestSetup;
36
37 import junit.framework.TestSuite;
38 import junit.framework.Test;
39
40
41 /**
42  * JBossMQUnitTestCase.java
43  *
44  * Some simple tests of spyderMQ
45  *
46  * @author
47  * @version $Revision: 37406 $
48  */

49 public class ScheduledDeliveryUnitTestCase
50    extends JBossMQUnitTest
51 {
52    
53    public ScheduledDeliveryUnitTestCase(String JavaDoc name) throws Exception JavaDoc
54    {
55       super(name);
56    }
57    
58    /**
59     * Test that messages are ordered by scheduled date.
60     * Tests vendor property.
61     * <code>SpyMessage.PROPERTY_SCHEDULED_DELIVERY</code>
62     */

63    public void testScheduledDelivery() throws Exception JavaDoc
64    {
65       getLog().debug("Starting ScheduledDelivery test");
66       
67       connect();
68       
69       queueConnection.start();
70       
71       drainQueue();
72       
73       QueueSession JavaDoc session = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
74       Queue JavaDoc queue = (Queue JavaDoc)context.lookup(TEST_QUEUE);
75       QueueSender JavaDoc sender = session.createSender(queue);
76
77       long now = System.currentTimeMillis();
78       
79       TextMessage JavaDoc message = session.createTextMessage();
80       message.setText("normal");
81       message.setLongProperty("JMS_JBOSS_SCHEDULED_DELIVERY", 0);
82       sender.send(message);
83
84       message.setText("late");
85       message.setLongProperty("JMS_JBOSS_SCHEDULED_DELIVERY", now + 5000);
86       sender.send(message, DeliveryMode.PERSISTENT, 10, 0);
87
88       message.setText("early");
89       message.setLongProperty("JMS_JBOSS_SCHEDULED_DELIVERY", now + 1000);
90       sender.send(message, DeliveryMode.PERSISTENT, 7, 0);
91       
92       QueueBrowser JavaDoc browser = session.createBrowser( queue );
93       Enumeration JavaDoc enumeration = browser.getEnumeration();
94       enumeration.nextElement();
95       if (enumeration.hasMoreElements())
96         fail("Should only find two messages now");
97
98       Thread.sleep(3000);
99
100       enumeration = browser.getEnumeration();
101       message = (TextMessage JavaDoc)enumeration.nextElement();
102       if (!message.getText().equals("early"))
103         throw new Exception JavaDoc("Queue is not scheduling messages correctly. Unexpected Message:"+message);
104       enumeration.nextElement();
105       if (enumeration.hasMoreElements())
106         fail("Should only find three messages now");
107
108       Thread.sleep(3000);
109       
110       enumeration = browser.getEnumeration();
111       message = (TextMessage JavaDoc)enumeration.nextElement();
112       if (!message.getText().equals("late"))
113         throw new Exception JavaDoc("Queue is not scheduling messages correctly. Unexpected Message:"+message);
114       enumeration.nextElement();
115       enumeration.nextElement();
116
117       disconnect();
118       getLog().debug("ScheduledDelivery passed");
119    }
120
121    public void testScheduledDeliveryRemoveAll() throws Exception JavaDoc
122    {
123       getLog().debug("Starting ScheduledDelivery remove All test");
124       
125       getServer().invoke(new ObjectName JavaDoc("jboss.mq.destination:service=Queue,name=testQueue"), "removeAllMessages", null, null);
126       Integer JavaDoc before = (Integer JavaDoc) getServer().getAttribute(MessageCacheMBean.OBJECT_NAME, "TotalCacheSize");
127       
128       connect();
129       try
130       {
131          
132          QueueSession JavaDoc session = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
133          Queue JavaDoc queue = (Queue JavaDoc)context.lookup(TEST_QUEUE);
134          QueueSender JavaDoc sender = session.createSender(queue);
135
136          long now = System.currentTimeMillis();
137          
138          TextMessage JavaDoc message = session.createTextMessage();
139          message.setText("scheduled");
140          message.setLongProperty("JMS_JBOSS_SCHEDULED_DELIVERY", now + 10000);
141          sender.send(message, DeliveryMode.PERSISTENT, 10, 0);
142          
143          getServer().invoke(new ObjectName JavaDoc("jboss.mq.destination:service=Queue,name=testQueue"), "removeAllMessages", null, null);
144
145          Integer JavaDoc after = (Integer JavaDoc) getServer().getAttribute(MessageCacheMBean.OBJECT_NAME, "TotalCacheSize");
146          assertEquals("Message should have been removed ", before, after);
147       }
148       finally
149       {
150          disconnect();
151       }
152       getLog().debug("ScheduledDelivery remove All passed");
153    }
154    
155    protected void setUp() throws Exception JavaDoc
156    {
157       ScheduledDeliveryUnitTestCase.TOPIC_FACTORY = "ConnectionFactory";
158       ScheduledDeliveryUnitTestCase.QUEUE_FACTORY = "ConnectionFactory";
159    }
160
161    public static Test suite() throws Exception JavaDoc
162    {
163       TestSuite suite = new TestSuite();
164
165       suite.addTest(new JBossTestSetup(new ScheduledDeliveryUnitTestCase("testScheduledDelivery")));
166       suite.addTest(new JBossTestSetup(new ScheduledDeliveryUnitTestCase("testScheduledDeliveryRemoveAll")));
167       
168       Test wrapper = new JBossTestSetup(suite)
169       {
170          protected void setUp() throws Exception JavaDoc
171          {
172             super.setUp();
173             ClassLoader JavaDoc loader = Thread.currentThread().getContextClassLoader();
174             deploy (loader.getResource("messaging/test-destinations-service.xml").toString());
175          }
176          protected void tearDown() throws Exception JavaDoc
177          {
178             super.tearDown();
179             ClassLoader JavaDoc loader = Thread.currentThread().getContextClassLoader();
180             undeploy (loader.getResource("messaging/test-destinations-service.xml").toString());
181          }
182       };
183       return wrapper;
184    }
185
186    static public void main( String JavaDoc []args )
187    {
188       String JavaDoc newArgs[] = { "org.jboss.test.jbossmq.test.ScheduledDeliveryUnitTestCase" };
189       junit.swingui.TestRunner.main(newArgs);
190    }
191 }
192
Popular Tags