INT-2352 Support Control-Bus Atomic Router Updates
JIRA: https://jira.spring.io/browse/INT-2352 Add `replaceChannelMappings()` to the `AMMR`. INT-2352 Polishing - PR Comments Consolidate tests. Fix up `@ManagedAttribute` Vs `@ManagedOperation` Expose `setChannelMappings` over JMX
This commit is contained in:
committed by
Artem Bilan
parent
466af8a2f5
commit
66fe1c74be
@@ -15,16 +15,28 @@
|
||||
*/
|
||||
package org.springframework.integration.jmx;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.management.MBeanServer;
|
||||
import javax.management.ObjectName;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.integration.core.MessagingTemplate;
|
||||
import org.springframework.integration.support.MessageBuilder;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.MessageChannel;
|
||||
import org.springframework.messaging.PollableChannel;
|
||||
import org.springframework.messaging.support.GenericMessage;
|
||||
import org.springframework.integration.support.MessageBuilder;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.annotation.DirtiesContext.ClassMode;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
@@ -35,6 +47,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
*/
|
||||
@ContextConfiguration
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
|
||||
public class UpdateMappingsTests {
|
||||
|
||||
@Autowired
|
||||
@@ -46,6 +59,9 @@ public class UpdateMappingsTests {
|
||||
@Autowired
|
||||
private PollableChannel qux;
|
||||
|
||||
@Autowired
|
||||
private MBeanServer server;
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
control.send(new GenericMessage<String>("@myRouter.setChannelMapping('baz', 'qux')"));
|
||||
@@ -55,4 +71,44 @@ public class UpdateMappingsTests {
|
||||
assertNotNull(qux.receive());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testChangeRouterMappings() {
|
||||
MessagingTemplate messagingTemplate = new MessagingTemplate();
|
||||
messagingTemplate.setReceiveTimeout(1000);
|
||||
messagingTemplate.convertAndSend(control,
|
||||
"@'router.handler'.replaceChannelMappings('foo=bar \n baz=qux')");
|
||||
Map<?, ?> mappings = messagingTemplate.convertSendAndReceive(control, "@'router.handler'.getChannelMappings()", Map.class);
|
||||
assertNotNull(mappings);
|
||||
assertEquals(2, mappings.size());
|
||||
assertEquals("bar", mappings.get("foo"));
|
||||
assertEquals("qux", mappings.get("baz"));
|
||||
messagingTemplate.convertAndSend(control,
|
||||
"@'router.handler'.replaceChannelMappings('foo=qux \n baz=bar')");
|
||||
mappings = messagingTemplate.convertSendAndReceive(control, "@'router.handler'.getChannelMappings()", Map.class);
|
||||
assertEquals(2, mappings.size());
|
||||
assertEquals("bar", mappings.get("baz"));
|
||||
assertEquals("qux", mappings.get("foo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testJmx() throws Exception {
|
||||
MessagingTemplate messagingTemplate = new MessagingTemplate();
|
||||
messagingTemplate.setReceiveTimeout(1000);
|
||||
Set<ObjectName> names = this.server.queryNames(ObjectName
|
||||
.getInstance("update.mapping.domain:type=HeaderValueRouter,name=router"),
|
||||
null);
|
||||
assertEquals(1, names.size());
|
||||
Map<String, String> map = new HashMap<String, String>();
|
||||
map.put("foo", "bar");
|
||||
map.put("baz", "qux");
|
||||
Object[] params = new Object[] {map};
|
||||
this.server.invoke(names.iterator().next(), "setChannelMappings", params,
|
||||
new String[] { "java.util.Map" });
|
||||
Map<?, ?> mappings = messagingTemplate.convertSendAndReceive(control, "@'router.handler'.getChannelMappings()", Map.class);
|
||||
assertNotNull(mappings);
|
||||
assertEquals(2, mappings.size());
|
||||
assertEquals("bar", mappings.get("foo"));
|
||||
assertEquals("qux", mappings.get("baz"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user