ARTEMIS-4526 Moving ShutdownOnCriticalIOErrorMoveNextTest into integration-tests-isolated

ShutdownOnCriticalIOErrorMoveNextTest was actually my "inspiration" to have created the isolated tests module in the first place, so it would be reasonable to move it there as well.
the issue comes down to the test simulating a server failure where the server would go down abruptly causing the VM to drop / exit. In this test the nature of failure is leaving a partial shutdown where server executors are still hanging around causing a cascade leak of server pools still running.
So it is completely expected to have these threads "leaking". Hence this test should be moved into the isolated-tests.
there is no semantic / server change as part of this task. It's just moving a test to a better place.
This commit is contained in:
Clebert Suconic 2023-12-05 09:31:42 -05:00 committed by clebertsuconic
parent ed929fbd1b
commit ffaa057ce1

View File

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.activemq.artemis.tests.integration.critical;
package org.apache.activemq.artemis.tests.integration.isolated.critical;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
@ -22,7 +22,6 @@ import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import java.io.File;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.activemq.artemis.api.core.Message;
@ -40,59 +39,37 @@ import org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager
import org.apache.activemq.artemis.spi.core.security.ActiveMQSecurityManager;
import org.apache.activemq.artemis.spi.core.security.jaas.InVMLoginModule;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.apache.activemq.artemis.tests.util.Wait;
import org.apache.activemq.artemis.utils.SpawnedVMSupport;
import org.apache.activemq.artemis.utils.Wait;
import org.junit.Assert;
import org.junit.Test;
public class ShutdownOnCriticalIOErrorMoveNextTest extends ActiveMQTestBase {
private static final int OK = 3;
public static void main(String[] arg) {
ShutdownOnCriticalIOErrorMoveNextTest testInst = new ShutdownOnCriticalIOErrorMoveNextTest();
// some methods are not static, so we need an instance
testInst.testSimplyDownAfterErrorSpawned();
}
@Test
public void testSimplyDownAfterError() throws Exception {
Process process = SpawnedVMSupport.spawnVM(ShutdownOnCriticalIOErrorMoveNextTest.class.getName());
runAfter(process::destroyForcibly);
Assert.assertTrue(process.waitFor(10, TimeUnit.SECONDS));
Assert.assertEquals(OK, process.exitValue());
}
disableCheckThread();
deleteDirectory(new File("./target/server"));
ActiveMQServer server = createServer("./target/server");
server.start();
ConnectionFactory factory = new ActiveMQConnectionFactory();
Connection connection = factory.createConnection();
Session session = connection.createSession();
MessageProducer producer = session.createProducer(session.createQueue("queue"));
public void testSimplyDownAfterErrorSpawned() {
try {
deleteDirectory(new File("./target/server"));
ActiveMQServer server = createServer("./target/server");
server.start();
ConnectionFactory factory = new ActiveMQConnectionFactory();
Connection connection = factory.createConnection();
Session session = connection.createSession();
MessageProducer producer = session.createProducer(session.createQueue("queue"));
try {
for (int i = 0; i < 500; i++) {
producer.send(session.createTextMessage("text"));
}
} catch (JMSException expected) {
for (int i = 0; i < 500; i++) {
producer.send(session.createTextMessage("text"));
}
Wait.waitFor(() -> !server.isStarted());
Assert.assertFalse(server.isStarted());
System.exit(OK);
} catch (Throwable e) {
e.printStackTrace(System.out);
System.exit(-1);
} catch (JMSException expected) {
}
Wait.waitFor(() -> !server.isStarted());
Assert.assertFalse(server.isStarted());
}
ActiveMQServer createServer(String folder) throws Exception {
@ -144,8 +121,7 @@ public class ShutdownOnCriticalIOErrorMoveNextTest extends ActiveMQTestBase {
Configuration createConfig(String folder) throws Exception {
Configuration configuration = createDefaultConfig(true);
configuration.setSecurityEnabled(false).setJournalMinFiles(2).setJournalFileSize(100 * 1024).setJournalType(getDefaultJournalType()).setJournalDirectory(folder + "/journal").setBindingsDirectory(folder + "/bindings").setPagingDirectory(folder + "/paging").
setLargeMessagesDirectory(folder + "/largemessage").setJournalCompactMinFiles(0).setJournalCompactPercentage(0).setClusterPassword(CLUSTER_PASSWORD).setJournalDatasync(false);
configuration.setSecurityEnabled(false).setJournalMinFiles(2).setJournalFileSize(100 * 1024).setJournalType(getDefaultJournalType()).setJournalDirectory(folder + "/journal").setBindingsDirectory(folder + "/bindings").setPagingDirectory(folder + "/paging").setLargeMessagesDirectory(folder + "/largemessage").setJournalCompactMinFiles(0).setJournalCompactPercentage(0).setClusterPassword(CLUSTER_PASSWORD).setJournalDatasync(false);
configuration.setSecurityEnabled(false);
configuration.setPersistenceEnabled(true);