This is an automated email from the ASF dual-hosted git repository.

clebertsuconic pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/main by this push:
     new 3f93f96ea3 ARTEMIS-5214 Deleting SyncSendTest
3f93f96ea3 is described below

commit 3f93f96ea38e9b5da32bc31e6b492591229b7a20
Author: Clebert Suconic <[email protected]>
AuthorDate: Thu Dec 19 10:03:19 2024 -0500

    ARTEMIS-5214 Deleting SyncSendTest
    
    This test was flaky from day one. You would need a reliable way to measure 
the storage time (RECORD_TIME). If you get GC or any other event happening 
during storage you will get a failure.
---
 .../integration/persistence/SyncSendTest.java      | 251 ---------------------
 1 file changed, 251 deletions(-)

diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/SyncSendTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/SyncSendTest.java
deleted file mode 100644
index 46e8a21820..0000000000
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/SyncSendTest.java
+++ /dev/null
@@ -1,251 +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.integration.persistence;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.fail;
-
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.Message;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Queue;
-import javax.jms.Session;
-import java.io.File;
-import java.io.RandomAccessFile;
-import java.nio.ByteBuffer;
-import java.nio.channels.FileChannel;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.activemq.artemis.api.core.QueueConfiguration;
-import org.apache.activemq.artemis.api.core.RoutingType;
-import org.apache.activemq.artemis.api.core.SimpleString;
-import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl;
-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.jms.client.ActiveMQConnectionFactory;
-import org.apache.activemq.artemis.nativo.jlibaio.LibaioContext;
-import 
org.apache.activemq.artemis.tests.extensions.parameterized.ParameterizedTestExtension;
-import org.apache.activemq.artemis.tests.extensions.parameterized.Parameters;
-import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
-import org.apache.activemq.artemis.utils.Wait;
-import org.apache.qpid.jms.JmsConnectionFactory;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.TestTemplate;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-@ExtendWith(ParameterizedTestExtension.class)
-public class SyncSendTest extends ActiveMQTestBase {
-
-   private static long totalRecordTime = -1;
-   private static final int RECORDS = 300;
-   private static final int MEASURE_RECORDS = 100;
-   private static final int WRAMP_UP = 100;
-
-   @Parameters(name = "storage={0}, protocol={1}")
-   public static Collection getParameters() {
-      Object[] storages = new Object[]{"libaio", "nio", "null"};
-      Object[] protocols = new Object[]{"core", "openwire", "amqp"};
-
-      ArrayList<Object[]> objects = new ArrayList<>();
-      for (Object s : storages) {
-         if (s.equals("libaio") && !LibaioContext.isLoaded()) {
-            continue;
-         }
-         for (Object p : protocols) {
-            objects.add(new Object[]{s, p});
-         }
-      }
-
-      return objects;
-   }
-
-   private final String storage;
-   private final String protocol;
-
-   public SyncSendTest(String storage, String protocol) {
-      this.storage = storage;
-      this.protocol = protocol;
-   }
-
-   @Override
-   protected ConfigurationImpl createBasicConfig(final int serverID) {
-      ConfigurationImpl config = super.createBasicConfig(serverID);
-      
config.setJournalDatasync(true).setJournalSyncNonTransactional(true).setJournalSyncTransactional(true);
-      return config;
-   }
-
-   ActiveMQServer server;
-
-   @BeforeEach
-   @Override
-   public void setUp() throws Exception {
-      super.setUp();
-
-      if (storage.equals("null")) {
-         server = createServer(false, true);
-      } else {
-         server = createServer(true, true);
-      }
-
-      if (storage.equals("libaio")) {
-         server.getConfiguration().setJournalType(JournalType.ASYNCIO);
-      } else {
-         server.getConfiguration().setJournalType(JournalType.NIO);
-      }
-
-      server.getAddressSettingsRepository().addMatch("#", new 
AddressSettings().setAutoCreateAddresses(false).setAutoCreateQueues(false));
-
-      
server.getConfiguration().setJournalSyncTransactional(true).setJournalSyncNonTransactional(true).setJournalDatasync(true);
-      server.start();
-   }
-
-   private long getTimePerSync() throws Exception {
-
-      if (storage.equals("null")) {
-         return 0;
-      }
-      if (totalRecordTime < 0) {
-         File measureFile = File.createTempFile("junit", null, 
temporaryFolder);
-
-         System.out.println("File::" + measureFile);
-
-         RandomAccessFile rfile = new RandomAccessFile(measureFile, "rw");
-         FileChannel channel = rfile.getChannel();
-
-         channel.position(0);
-
-         ByteBuffer buffer = ByteBuffer.allocate(10);
-         buffer.put(new byte[10]);
-         buffer.position(0);
-
-         assertEquals(10, channel.write(buffer));
-         channel.force(true);
-
-         long time = System.nanoTime();
-
-         for (int i = 0; i < MEASURE_RECORDS + WRAMP_UP; i++) {
-            if (i == WRAMP_UP) {
-               time = System.nanoTime();
-            }
-            channel.position(0);
-            buffer.position(0);
-            buffer.putInt(i);
-            buffer.position(0);
-            assertEquals(10, channel.write(buffer));
-            channel.force(false);
-         }
-
-         long timeEnd = System.nanoTime();
-
-         totalRecordTime = ((timeEnd - time) / MEASURE_RECORDS) * RECORDS;
-
-         System.out.println("total time = " + totalRecordTime);
-
-      }
-      return totalRecordTime;
-
-   }
-
-   @TestTemplate
-   public void testSendConsumeAudoACK() throws Exception {
-
-      long recordTime = getTimePerSync();
-
-      
server.createQueue(QueueConfiguration.of("queue").setRoutingType(RoutingType.ANYCAST).setAutoCreateAddress(true));
-
-      ConnectionFactory factory = newCF();
-
-      Connection connection = factory.createConnection();
-      try {
-         Session session = connection.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
-
-         Queue queue;
-         queue = session.createQueue("queue");
-         MessageProducer producer = session.createProducer(queue);
-
-         long start = System.nanoTime();
-
-         for (int i = 0; i < (RECORDS + WRAMP_UP); i++) {
-            if (i == WRAMP_UP) {
-               start = System.nanoTime(); // wramp up
-            }
-            producer.send(session.createMessage());
-         }
-
-         long end = System.nanoTime();
-
-         System.out.println("end - start = " + (end - start) + " milliseconds 
= " + TimeUnit.NANOSECONDS.toMillis(end - start));
-         System.out.println("RECORD TIME = " + recordTime + " milliseconds = " 
+ TimeUnit.NANOSECONDS.toMillis(recordTime));
-
-         if ((end - start) < recordTime * 0.7) {
-            fail("Messages are being sent too fast! Faster than the disk would 
be able to sync!");
-         }
-
-         connection.start();
-         MessageConsumer consumer = session.createConsumer(queue);
-
-         for (int i = 0; i < (RECORDS + WRAMP_UP); i++) {
-            if (i == WRAMP_UP) {
-               start = System.nanoTime(); // wramp up
-            }
-            Message msg = consumer.receive(5000);
-            assertNotNull(msg);
-         }
-
-         end = System.nanoTime();
-
-         System.out.println("end - start = " + (end - start) + " milliseconds 
= " + TimeUnit.NANOSECONDS.toMillis(end - start));
-         System.out.println("RECORD TIME = " + recordTime + " milliseconds = " 
+ TimeUnit.NANOSECONDS.toMillis(recordTime));
-
-         // There's no way to sync on ack for AMQP
-         if (!protocol.equals("amqp") && (end - start) < recordTime * 0.7) {
-            fail("Messages are being acked too fast! Faster than the disk 
would be able to sync!");
-         }
-
-         org.apache.activemq.artemis.core.server.Queue serverQueue = 
server.locateQueue(SimpleString.of("queue"));
-         Wait.assertEquals(0, serverQueue::getMessageCount);
-         Wait.assertEquals(0, serverQueue::getDeliveringCount);
-      } finally {
-         connection.close();
-      }
-   }
-
-   // this will set ack as synchronous, to make sure we make proper measures 
against the sync on disk
-   private ConnectionFactory newCF() {
-      if (protocol.equals("core")) {
-         ConnectionFactory factory = new ActiveMQConnectionFactory();
-         ((ActiveMQConnectionFactory) factory).setBlockOnAcknowledge(true);
-         return factory;
-      } else if (protocol.equals("amqp")) {
-         final JmsConnectionFactory factory = new 
JmsConnectionFactory("amqp://localhost:61616");
-         factory.setForceAsyncAcks(true);
-         return factory;
-      } else {
-         org.apache.activemq.ActiveMQConnectionFactory cf = new 
org.apache.activemq.ActiveMQConnectionFactory("tcp://localhost:61616?wireFormat.cacheEnabled=true");
-         cf.setSendAcksAsync(false);
-         return cf;
-      }
-
-   }
-
-}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to