You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ma...@apache.org on 2016/11/01 10:21:43 UTC
[14/34] activemq-artemis git commit: NO-JIRA fixing byteman (extra
tests)
NO-JIRA fixing byteman (extra tests)
Two issues encountered here:
i - ClosingConnectionTest was intermittently breaking other tests, in particular it was breaking PagingLeakTest for no apparent reason
. apparently it was a dead lock from removeAddress on the ServerController
ii - it still showing issues after removing the not needed synchronziation. Since the test is not really needed I am just removing the offending test.
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/e49eda96
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/e49eda96
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/e49eda96
Branch: refs/heads/ARTEMIS-780
Commit: e49eda966417e83906e9f7a5bf9c89b978ceaff0
Parents: 51fa840
Author: Clebert Suconic <cl...@apache.org>
Authored: Fri Oct 28 00:31:42 2016 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Fri Oct 28 16:32:04 2016 -0400
----------------------------------------------------------------------
.../impl/ActiveMQServerControlImpl.java | 6 +-
.../extras/byteman/ClosingConnectionTest.java | 160 -------------------
2 files changed, 3 insertions(+), 163 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e49eda96/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
index fb7deee..b0e8b9b 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
@@ -1189,7 +1189,7 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
}
@Override
- public synchronized boolean closeConnectionsForAddress(final String ipAddress) {
+ public boolean closeConnectionsForAddress(final String ipAddress) {
checkStarted();
clearIO();
@@ -1213,7 +1213,7 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
}
@Override
- public synchronized boolean closeConsumerConnectionsForAddress(final String address) {
+ public boolean closeConsumerConnectionsForAddress(final String address) {
boolean closed = false;
checkStarted();
@@ -1251,7 +1251,7 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
}
@Override
- public synchronized boolean closeConnectionsForUser(final String userName) {
+ public boolean closeConnectionsForUser(final String userName) {
boolean closed = false;
checkStarted();
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e49eda96/tests/extra-tests/src/test/java/org/apache/activemq/artemis/tests/extras/byteman/ClosingConnectionTest.java
----------------------------------------------------------------------
diff --git a/tests/extra-tests/src/test/java/org/apache/activemq/artemis/tests/extras/byteman/ClosingConnectionTest.java b/tests/extra-tests/src/test/java/org/apache/activemq/artemis/tests/extras/byteman/ClosingConnectionTest.java
deleted file mode 100644
index d4bfc00..0000000
--- a/tests/extra-tests/src/test/java/org/apache/activemq/artemis/tests/extras/byteman/ClosingConnectionTest.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * 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
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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.extras.byteman;
-
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
-
-import org.apache.activemq.artemis.api.core.SimpleString;
-import org.apache.activemq.artemis.api.core.client.ClientMessage;
-import org.apache.activemq.artemis.api.core.client.ClientProducer;
-import org.apache.activemq.artemis.api.core.client.ClientSession;
-import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
-import org.apache.activemq.artemis.api.core.client.ServerLocator;
-import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
-import org.apache.activemq.artemis.core.server.ActiveMQServer;
-import org.apache.activemq.artemis.core.server.JournalType;
-import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
-import org.apache.activemq.artemis.tests.integration.IntegrationTestLogger;
-import org.apache.activemq.artemis.tests.integration.management.ManagementControlHelper;
-import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
-import org.jboss.byteman.contrib.bmunit.BMRule;
-import org.jboss.byteman.contrib.bmunit.BMRules;
-import org.jboss.byteman.contrib.bmunit.BMUnitRunner;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(BMUnitRunner.class)
-public class ClosingConnectionTest extends ActiveMQTestBase {
-
- public static final SimpleString ADDRESS = new SimpleString("SimpleAddress");
-
- private ServerLocator locator;
-
- private ActiveMQServer server;
-
- private static MBeanServer mBeanServer;
-
- private static boolean readyToKill = false;
-
- protected boolean isNetty() {
- return true;
- }
-
- @Override
- @Before
- public void setUp() throws Exception {
- super.setUp();
- mBeanServer = MBeanServerFactory.createMBeanServer();
- server = newActiveMQServer();
- server.getConfiguration().setJournalType(JournalType.NIO);
- server.getConfiguration().setJMXManagementEnabled(true);
- server.start();
- waitForServerToStart(server);
- locator = createFactory(isNetty());
- readyToKill = false;
- }
-
- public static void killConnection() throws InterruptedException {
- if (readyToKill) {
- // We have to kill the connection in a new thread otherwise Netty won't interrupt the current thread
- Thread closeConnectionThread = new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- ActiveMQServerControl serverControl = ManagementControlHelper.createActiveMQServerControl(mBeanServer);
- serverControl.closeConnectionsForUser("guest");
- readyToKill = false;
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
-
- closeConnectionThread.start();
-
- try {
- /* We want to simulate a long-running remoting thread here. If closing the connection in the closeConnectionThread
- * interrupts this thread then it will cause sleep() to throw and InterruptedException. Therefore we catch
- * the InterruptedException and re-interrupt the current thread so the interrupt will be passed properly
- * back to the caller. It's a bit of a hack, but I couldn't find any other way to simulate it.
- */
- Thread.sleep(1500);
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- }
- }
- }
-
- /*
- * Test for https://bugzilla.redhat.com/show_bug.cgi?id=1193085
- * */
- @Test
- @BMRules(rules = {@BMRule(
- name = "rule to kill connection",
- targetClass = "org.apache.activemq.artemis.core.io.nio.NIOSequentialFile",
- targetMethod = "open(int, boolean)",
- targetLocation = "AT INVOKE java.nio.channels.FileChannel.size()",
- action = "org.apache.activemq.artemis.tests.extras.byteman.ClosingConnectionTest.killConnection();")})
- public void testKillConnection() throws Exception {
- locator.setBlockOnNonDurableSend(true).setBlockOnDurableSend(true).setBlockOnAcknowledge(true);
-
- ClientSessionFactory sf = createSessionFactory(locator);
- ClientSession session = sf.createSession("guest", null, false, true, true, false, 0);
-
- session.createQueue(ADDRESS, ADDRESS, null, true);
-
- ClientProducer producer = session.createProducer(ADDRESS);
-
- ClientMessage message = session.createMessage(true);
- message.getBodyBuffer().writeBytes(new byte[1024]);
-
- for (int i = 0; i < 200; i++) {
- producer.send(message);
- }
-
- assertTrue(server.locateQueue(ADDRESS).getPageSubscription().getPagingStore().isPaging());
-
- readyToKill = true;
- try {
- for (int i = 0; i < 10; i++) {
- producer.send(message);
- }
- fail("Sending message here should result in failure.");
- } catch (Exception e) {
- IntegrationTestLogger.LOGGER.info("Caught exception: " + e.getMessage());
- }
-
- Thread.sleep(1000);
-
- assertTrue(server.isStarted());
-
- session.close();
- }
-
- private ActiveMQServer newActiveMQServer() throws Exception {
- ActiveMQServer server = createServer(true, createDefaultConfig(isNetty()));
- server.setMBeanServer(mBeanServer);
-
- AddressSettings defaultSetting = new AddressSettings().setPageSizeBytes(10 * 1024).setMaxSizeBytes(20 * 1024);
-
- server.getAddressSettingsRepository().addMatch("#", defaultSetting);
-
- return server;
- }
-}