[
https://issues.apache.org/jira/browse/ARTEMIS-5889?focusedWorklogId=1006011&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-1006011
]
ASF GitHub Bot logged work on ARTEMIS-5889:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 19/Feb/26 07:55
Start Date: 19/Feb/26 07:55
Worklog Time Spent: 10m
Work Description: brusdev commented on code in PR #6240:
URL: https://github.com/apache/artemis/pull/6240#discussion_r2826148803
##########
artemis-server/src/test/java/org/apache/activemq/artemis/core/server/routing/ConnectionRouterManagerTest.java:
##########
@@ -118,4 +121,194 @@ public void deploy2LocalOnlyWithSamePolicy() throws
Exception {
connectionRouterConfiguration.setName("partition-local-consistent-hash-bis");
underTest.deployConnectionRouter(connectionRouterConfiguration);
}
+
+ @Test
+ public void deployPolicyAndRemoveWithUpdate() throws Exception {
+
+ ManagementService mockManagementService =
Mockito.mock(ManagementService.class);
+
Mockito.when(mockServer.getManagementService()).thenReturn(mockManagementService);
+
+ List<ConnectionRouterConfiguration> configurations = new ArrayList<>();
+
+ Configuration mockConfiguration = Mockito.mock(Configuration.class);
+
Mockito.when(mockConfiguration.getConnectionRouters()).thenReturn(configurations);
+
+ ConnectionRouterConfiguration connectionRouterConfiguration = new
ConnectionRouterConfiguration();
+
connectionRouterConfiguration.setName("partition-local-consistent-hash-1").setKeyType(KeyType.CLIENT_ID).setLocalTargetFilter(String.valueOf(2));
+ NamedPropertyConfiguration policyConfig1 = new
NamedPropertyConfiguration()
+ .setName(ConsistentHashModuloPolicy.NAME)
+
.setProperties(Collections.singletonMap(ConsistentHashModuloPolicy.MODULO,
String.valueOf(2)));
+ connectionRouterConfiguration.setPolicyConfiguration(policyConfig1);
+
+ configurations.add(connectionRouterConfiguration);
+
+ underTest.deploy(mockConfiguration);
+
+ Mockito.verify(mockManagementService,
Mockito.times(1)).registerConnectionRouter(Mockito.any());
+ Mockito.verifyNoMoreInteractions(mockManagementService);
+
+ configurations.clear();
+
+ underTest.update(mockConfiguration);
+
+ Mockito.verify(mockManagementService,
Mockito.times(1)).unregisterConnectionRouter(connectionRouterConfiguration.getName());
+ Mockito.verifyNoMoreInteractions(mockManagementService);
+
+ underTest.stop();
+
+ Mockito.verifyNoMoreInteractions(mockManagementService);
+ }
+
+ @Test
+ public void deployPolicyAndAddNewPolicyWithUpdate() throws Exception {
+
+ ManagementService mockManagementService =
Mockito.mock(ManagementService.class);
+
Mockito.when(mockServer.getManagementService()).thenReturn(mockManagementService);
+
+ List<ConnectionRouterConfiguration> configurations = new ArrayList<>();
+
+ Configuration mockConfiguration = Mockito.mock(Configuration.class);
+
Mockito.when(mockConfiguration.getConnectionRouters()).thenReturn(configurations);
+
+ ConnectionRouterConfiguration connectionRouterConfiguration1 = new
ConnectionRouterConfiguration();
+
connectionRouterConfiguration1.setName("partition-local-consistent-hash-1").setKeyType(KeyType.CLIENT_ID).setLocalTargetFilter(String.valueOf(2));
+ NamedPropertyConfiguration policyConfig1 = new
NamedPropertyConfiguration()
+ .setName(ConsistentHashModuloPolicy.NAME)
+
.setProperties(Collections.singletonMap(ConsistentHashModuloPolicy.MODULO,
String.valueOf(2)));
+ connectionRouterConfiguration1.setPolicyConfiguration(policyConfig1);
+
+ configurations.add(connectionRouterConfiguration1);
+
+ underTest.deploy(mockConfiguration);
+
+ Mockito.verify(mockManagementService,
Mockito.times(1)).registerConnectionRouter(Mockito.any());
+ Mockito.verifyNoMoreInteractions(mockManagementService);
+ Mockito.clearInvocations(mockManagementService);
+
+ ConnectionRouterConfiguration connectionRouterConfiguration2 = new
ConnectionRouterConfiguration();
+
connectionRouterConfiguration2.setName("partition-local-consistent-hash-2").setKeyType(KeyType.CLIENT_ID).setLocalTargetFilter(String.valueOf(2));
+ NamedPropertyConfiguration policyConfig2 = new
NamedPropertyConfiguration()
+ .setName(ConsistentHashModuloPolicy.NAME)
+
.setProperties(Collections.singletonMap(ConsistentHashModuloPolicy.MODULO,
String.valueOf(2)));
+ connectionRouterConfiguration2.setPolicyConfiguration(policyConfig2);
+
+ configurations.add(connectionRouterConfiguration2);
+
+ underTest.update(mockConfiguration);
+
+ Mockito.verify(mockManagementService,
Mockito.times(1)).registerConnectionRouter(Mockito.any());
+ Mockito.verifyNoMoreInteractions(mockManagementService);
+
+ underTest.stop();
+
+ Mockito.verify(mockManagementService,
Mockito.times(1)).unregisterConnectionRouter(connectionRouterConfiguration1.getName());
+ Mockito.verify(mockManagementService,
Mockito.times(1)).unregisterConnectionRouter(connectionRouterConfiguration2.getName());
+ }
+
+ @Test
+ public void deployPolicyAndUpdateIt() throws Exception {
+
+ ManagementService mockManagementService =
Mockito.mock(ManagementService.class);
+
Mockito.when(mockServer.getManagementService()).thenReturn(mockManagementService);
+
+ List<ConnectionRouterConfiguration> configurations = new ArrayList<>();
+
+ Configuration mockConfiguration = Mockito.mock(Configuration.class);
+
Mockito.when(mockConfiguration.getConnectionRouters()).thenReturn(configurations);
+
+ ConnectionRouterConfiguration connectionRouterConfiguration = new
ConnectionRouterConfiguration();
+
connectionRouterConfiguration.setName("partition-local-consistent-hash-1").setKeyType(KeyType.CLIENT_ID).setLocalTargetFilter(String.valueOf(2));
+ NamedPropertyConfiguration policyConfig = new
NamedPropertyConfiguration()
+ .setName(ConsistentHashModuloPolicy.NAME)
+
.setProperties(Collections.singletonMap(ConsistentHashModuloPolicy.MODULO,
String.valueOf(2)));
+ connectionRouterConfiguration.setPolicyConfiguration(policyConfig);
+
+ configurations.add(connectionRouterConfiguration);
+
+ underTest.deploy(mockConfiguration);
+
+ Mockito.verify(mockManagementService,
Mockito.times(1)).registerConnectionRouter(Mockito.any());
+ Mockito.verifyNoMoreInteractions(mockManagementService);
+ Mockito.clearInvocations(mockManagementService);
+
+ // Modify some configuration but use the same router name, this should
remove the previous one
+ // and add back a new instance
+ ConnectionRouterConfiguration connectionRouterConfigurationUpdate = new
ConnectionRouterConfiguration();
+
connectionRouterConfigurationUpdate.setName("partition-local-consistent-hash-1").setKeyType(KeyType.CLIENT_ID).setLocalTargetFilter(String.valueOf(2));
+ NamedPropertyConfiguration policyConfigUpdated = new
NamedPropertyConfiguration()
+ .setName(ConsistentHashModuloPolicy.NAME)
+
.setProperties(Collections.singletonMap(ConsistentHashModuloPolicy.MODULO,
String.valueOf(3)));
Review Comment:
Is there a way to verify that the new value has been applied?
Issue Time Tracking
-------------------
Worklog Id: (was: 1006011)
Time Spent: 1h (was: 50m)
> support connectionRouter config reload
> --------------------------------------
>
> Key: ARTEMIS-5889
> URL: https://issues.apache.org/jira/browse/ARTEMIS-5889
> Project: Artemis
> Issue Type: Improvement
> Components: Configuration
> Affects Versions: 2.50.0
> Reporter: Gary Tully
> Assignee: Timothy A. Bish
> Priority: Major
> Labels: pull-request-available
> Time Spent: 1h
> Remaining Estimate: 0h
>
> The connectionRouter config is not currently reloadable, no action is taken
> on config refresh.
> the typical CUD operations should be supported like for the recent reload of
> acceptors.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]