-
Notifications
You must be signed in to change notification settings - Fork 910
/
MaxQueueResourceTest.java
105 lines (87 loc) · 3.95 KB
/
MaxQueueResourceTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* <br>
* http://www.apache.org/licenses/LICENSE-2.0
* <br>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.activemq.artemis.tests.smoke.resourcetest;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSSecurityException;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.Topic;
import java.io.File;
import org.apache.activemq.artemis.tests.smoke.common.SmokeTestBase;
import org.apache.activemq.artemis.tests.util.CFUtil;
import org.apache.activemq.artemis.util.ServerUtil;
import org.apache.activemq.artemis.utils.cli.helper.HelperCreate;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class MaxQueueResourceTest extends SmokeTestBase {
public static final String SERVER_NAME_A = "MaxQueueResourceTest";
@BeforeClass
public static void createServers() throws Exception {
File server0Location = getFileServerLocation(SERVER_NAME_A);
deleteDirectory(server0Location);
{
HelperCreate cliCreateServer = new HelperCreate();
cliCreateServer.setUser("A").setPassword("A").setAllowAnonymous(false).setNoWeb(true).setArtemisInstance(server0Location).setConfiguration("./src/main/resources/servers/MaxQueueResourceTest");
cliCreateServer.createServer();
}
}
@Before
public void before() throws Exception {
startServer(SERVER_NAME_A, 0, 0);
ServerUtil.waitForServerToStart(0, "admin", "admin", 30000);
}
@Test
public void testMaxQueue() throws Throwable {
// We call the three protocols in sequence here for two reasons:
// 1st: to actually test each protocol
// 2nd: Having more users creating stuff, makes the test more challenging (just in case)
//
// Notice that each protocol will concatenate the protocol name to the user and the clientID,
// which has been prepared by the server used on this test.
internalMaxQueue("core");
internalMaxQueue("openwire");
internalMaxQueue("amqp");
}
private void internalMaxQueue(String protocol) throws Throwable {
ConnectionFactory cfA = CFUtil.createConnectionFactory(protocol, "tcp://localhost:61616");
try (Connection connectionA = cfA.createConnection("john" + protocol, "doe")) {
connectionA.setClientID("c1" + protocol);
Session sessionA = connectionA.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = sessionA.createTopic("myTopic");
MessageConsumer consumer1 = sessionA.createDurableSubscriber(topic, "t1");
MessageConsumer consumer2 = sessionA.createDurableSubscriber(topic, "t2");
MessageConsumer consumer3 = sessionA.createDurableSubscriber(topic, "t3");
Exception exception = null;
MessageConsumer consumer4 = null;
try {
consumer4 = sessionA.createDurableSubscriber(topic, "t4");
} catch (JMSSecurityException e) {
exception = e;
}
Assert.assertNull(consumer4);
Assert.assertNotNull(exception);
MessageProducer producerA = sessionA.createProducer(topic);
for (int i = 0; i < 10; i++) {
producerA.send(sessionA.createTextMessage("toB"));
}
}
}
}