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 bbf1baf3b2 ARTEMIS-3178 Fixing validation on PagingStoreImpl for 
parameters set
bbf1baf3b2 is described below

commit bbf1baf3b26708c6e611c8ca870fd04d388d2363
Author: Clebert Suconic <[email protected]>
AuthorDate: Tue Jan 31 06:16:43 2023 -0500

    ARTEMIS-3178 Fixing validation on PagingStoreImpl for parameters set
---
 .../artemis/core/paging/impl/PagingStoreImpl.java  |  7 +-
 .../core/config/impl/ConfigurationImplTest.java    | 84 ++++++++++++++++++----
 2 files changed, 76 insertions(+), 15 deletions(-)

diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java
index 137d18a21b..675b85ee9d 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java
@@ -254,14 +254,15 @@ public class PagingStoreImpl implements PagingStore {
          pageLimitMessages = null;
       }
 
-
       if (pageLimitBytes == null && pageLimitMessages == null && 
pageFullMessagePolicy != null) {
          ActiveMQServerLogger.LOGGER.noPageLimitsSet(address, 
pageFullMessagePolicy);
          this.pageFullMessagePolicy = null;
       }
 
-      if (pageLimitBytes != null && pageLimitMessages != null && 
pageFullMessagePolicy == null) {
-         ActiveMQServerLogger.LOGGER.noPagefullPolicySet(address, 
pageLimitBytes, pageLimitMessages);
+      if (pageFullMessagePolicy == null) {
+         if (pageLimitBytes != null || pageLimitMessages != null) {
+            ActiveMQServerLogger.LOGGER.noPagefullPolicySet(address, 
pageLimitBytes, pageLimitMessages);
+         }
          this.pageFullMessagePolicy = null;
          this.pageLimitMessages = null;
          this.pageLimitBytes = null;
diff --git 
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
 
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
index 1f846cc1eb..1ba4381c20 100644
--- 
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
+++ 
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
@@ -1051,27 +1051,28 @@ public class ConfigurationImplTest extends 
ActiveMQTestBase {
 
       String randomString = RandomUtil.randomString();
 
+      // not setting pageFullMessagePolicy
       properties.put("addressSettings.#.expiryAddress", randomString);
       properties.put("addressSettings.#.pageLimitMessages", "300");
       properties.put("addressSettings.#.pageLimitBytes", "300000");
-      //properties.put("addressSettings.#.pageFullMessagePolicy", "DROP"); // 
removing the pageFull on purpose
 
       configuration.parsePrefixedProperties(properties, null);
 
       Assert.assertEquals(1, configuration.getAddressSettings().size());
       Assert.assertEquals(SimpleString.toSimpleString(randomString), 
configuration.getAddressSettings().get("#").getExpiryAddress());
-      Assert.assertEquals(300L, 
configuration.getAddressSettings().get("#").getPageLimitMessages().longValue());
-      Assert.assertEquals(300000L, 
configuration.getAddressSettings().get("#").getPageLimitBytes().longValue());
+      Assert.assertEquals((Long)300L, 
configuration.getAddressSettings().get("#").getPageLimitMessages());
+      Assert.assertEquals((Long)300000L, 
configuration.getAddressSettings().get("#").getPageLimitBytes());
       Assert.assertEquals(null, 
configuration.getAddressSettings().get("#").getPageFullMessagePolicy());
 
       PagingStore storeImpl = new PagingStoreImpl(new SimpleString("Test"), 
(ScheduledExecutorService) null, 100L, Mockito.mock(PagingManager.class), 
Mockito.mock(StorageManager.class), Mockito.mock(SequentialFileFactory.class), 
Mockito.mock(PagingStoreFactory.class), new SimpleString("Test"), 
configuration.getAddressSettings().get("#"), null, null, true);
-      Assert.assertTrue(AssertionLoggerHandler.findText("AMQ224125"));
 
       Assert.assertEquals(null, storeImpl.getPageLimitMessages());
       Assert.assertEquals(null, storeImpl.getPageLimitBytes());
       Assert.assertEquals(null, storeImpl.getPageFullMessagePolicy());
+      Assert.assertTrue(AssertionLoggerHandler.findText("AMQ224125"));
    }
 
+
    @Test
    public void testAddressSettingsPageLimitInvalidConfiguration2() throws 
Throwable {
       AssertionLoggerHandler.startCapture();
@@ -1082,10 +1083,69 @@ public class ConfigurationImplTest extends 
ActiveMQTestBase {
 
       String randomString = RandomUtil.randomString();
 
+      // pageLimitBytes and pageFullMessagePolicy not set on purpose
+      properties.put("addressSettings.#.expiryAddress", randomString);
+      properties.put("addressSettings.#.pageLimitMessages", "300");
+
+      configuration.parsePrefixedProperties(properties, null);
+
+      Assert.assertEquals(1, configuration.getAddressSettings().size());
+      Assert.assertEquals(SimpleString.toSimpleString(randomString), 
configuration.getAddressSettings().get("#").getExpiryAddress());
+      Assert.assertEquals((Long)300L, 
configuration.getAddressSettings().get("#").getPageLimitMessages());
+      Assert.assertEquals(null, 
configuration.getAddressSettings().get("#").getPageLimitBytes());
+      Assert.assertEquals(null, 
configuration.getAddressSettings().get("#").getPageFullMessagePolicy());
+
+      PagingStore storeImpl = new PagingStoreImpl(new SimpleString("Test"), 
(ScheduledExecutorService) null, 100L, Mockito.mock(PagingManager.class), 
Mockito.mock(StorageManager.class), Mockito.mock(SequentialFileFactory.class), 
Mockito.mock(PagingStoreFactory.class), new SimpleString("Test"), 
configuration.getAddressSettings().get("#"), null, null, true);
+
+      Assert.assertEquals(null, storeImpl.getPageLimitMessages());
+      Assert.assertEquals(null, storeImpl.getPageLimitBytes());
+      Assert.assertEquals(null, storeImpl.getPageFullMessagePolicy());
+      Assert.assertTrue(AssertionLoggerHandler.findText("AMQ224125"));
+   }
+
+   @Test
+   public void testAddressSettingsPageLimitInvalidConfiguration3() throws 
Throwable {
+      AssertionLoggerHandler.startCapture();
+      runAfter(AssertionLoggerHandler::stopCapture);
+      ConfigurationImpl configuration = new ConfigurationImpl();
+
+      Properties properties = new Properties();
+
+      String randomString = RandomUtil.randomString();
+
+      // pageLimitMessages and pageFullMessagePolicy not set on purpose
+      properties.put("addressSettings.#.expiryAddress", randomString);
+      properties.put("addressSettings.#.pageLimitBytes", "300000"); // 
removing this on purpose
+
+      configuration.parsePrefixedProperties(properties, null);
+
+      Assert.assertEquals(1, configuration.getAddressSettings().size());
+      Assert.assertEquals(SimpleString.toSimpleString(randomString), 
configuration.getAddressSettings().get("#").getExpiryAddress());
+      Assert.assertEquals(null, 
configuration.getAddressSettings().get("#").getPageLimitMessages());
+      Assert.assertEquals((Long)300000L, 
configuration.getAddressSettings().get("#").getPageLimitBytes());
+      Assert.assertEquals(null, 
configuration.getAddressSettings().get("#").getPageFullMessagePolicy());
+
+      PagingStore storeImpl = new PagingStoreImpl(new SimpleString("Test"), 
(ScheduledExecutorService) null, 100L, Mockito.mock(PagingManager.class), 
Mockito.mock(StorageManager.class), Mockito.mock(SequentialFileFactory.class), 
Mockito.mock(PagingStoreFactory.class), new SimpleString("Test"), 
configuration.getAddressSettings().get("#"), null, null, true);
+
+      Assert.assertEquals(null, storeImpl.getPageLimitMessages());
+      Assert.assertEquals(null, storeImpl.getPageLimitBytes());
+      Assert.assertEquals(null, storeImpl.getPageFullMessagePolicy());
+      Assert.assertTrue(AssertionLoggerHandler.findText("AMQ224125"));
+   }
+
+   @Test
+   public void testAddressSettingsPageLimitInvalidConfiguration4() throws 
Throwable {
+      AssertionLoggerHandler.startCapture();
+      runAfter(AssertionLoggerHandler::stopCapture);
+      ConfigurationImpl configuration = new ConfigurationImpl();
+
+      Properties properties = new Properties();
+
+      String randomString = RandomUtil.randomString();
+
+      // leaving out pageLimitMessages and pageLimitBytes
       properties.put("addressSettings.#.expiryAddress", randomString);
-      //properties.put("addressSettings.#.pageLimitMessages", "300"); // 
removing this on purpose
-      //properties.put("addressSettings.#.pageLimitBytes", "300000"); // 
removing this on purpose
-      properties.put("addressSettings.#.pageFullMessagePolicy", "DROP"); // 
keeping this on purpose
+      properties.put("addressSettings.#.pageFullMessagePolicy", "DROP");
 
       configuration.parsePrefixedProperties(properties, null);
 
@@ -1096,16 +1156,16 @@ public class ConfigurationImplTest extends 
ActiveMQTestBase {
       Assert.assertEquals("DROP", 
configuration.getAddressSettings().get("#").getPageFullMessagePolicy().toString());
 
       PagingStore storeImpl = new PagingStoreImpl(new SimpleString("Test"), 
(ScheduledExecutorService) null, 100L, Mockito.mock(PagingManager.class), 
Mockito.mock(StorageManager.class), Mockito.mock(SequentialFileFactory.class), 
Mockito.mock(PagingStoreFactory.class), new SimpleString("Test"), 
configuration.getAddressSettings().get("#"), null, null, true);
-      Assert.assertTrue(AssertionLoggerHandler.findText("AMQ224124"));
 
       Assert.assertEquals(null, storeImpl.getPageLimitMessages());
       Assert.assertEquals(null, storeImpl.getPageLimitBytes());
       Assert.assertEquals(null, storeImpl.getPageFullMessagePolicy());
+      Assert.assertTrue(AssertionLoggerHandler.findText("AMQ224124"));
    }
 
 
    @Test
-   public void testAddressSettingsPageLimitInvalidConfiguration3() throws 
Throwable {
+   public void testAddressSettingsPageLimitInvalidConfiguration5() throws 
Throwable {
       ConfigurationImpl configuration = new ConfigurationImpl();
 
       Properties properties = new Properties();
@@ -1113,9 +1173,9 @@ public class ConfigurationImplTest extends 
ActiveMQTestBase {
       String randomString = RandomUtil.randomString();
 
       properties.put("addressSettings.#.expiryAddress", randomString);
-      properties.put("addressSettings.#.pageLimitMessages", "-1"); // -1 on 
purpose, to make it null on final parsing
-      properties.put("addressSettings.#.pageLimitBytes", "-1"); // -1 on 
purpose, to make it null on final parsing
-      properties.put("addressSettings.#.pageFullMessagePolicy", "DROP"); // 
keeping this on purpose
+      properties.put("addressSettings.#.pageLimitMessages", "-1"); // this 
should make the PagingStore to parse it as null
+      properties.put("addressSettings.#.pageLimitBytes", "-1"); // this should 
make the PagingStore to parse it as null
+      properties.put("addressSettings.#.pageFullMessagePolicy", "DROP");
 
       configuration.parsePrefixedProperties(properties, null);
 

Reply via email to