INT-4236: Status for SmartLifecycleRoleControlller

JIRA: https://jira.spring.io/browse/INT-4236

Add methods to obtain status from the `SmartLifecycleRoleController`.

* Polishing according PR comments.
* Fix log messages in the `SmartLifecycleRoleController` from the Zookeeper mentioning
This commit is contained in:
Gary Russell
2017-02-23 13:24:23 -05:00
committed by Artem Bilan
parent 257a2d3dab
commit f23360d539
4 changed files with 115 additions and 7 deletions

View File

@@ -16,6 +16,8 @@
package org.springframework.integration.configuration;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.containsString;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -36,6 +38,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
@@ -630,7 +633,21 @@ public class EnableIntegrationTests {
@Test
@DirtiesContext
public void testRoles() {
assertThat(this.roleController.getRoles(), containsInAnyOrder("foo", "bar"));
assertFalse(this.roleController.allEndpointsRunning("foo"));
assertFalse(this.roleController.noEndpointsRunning("foo"));
assertTrue(this.roleController.allEndpointsRunning("bar"));
assertFalse(this.roleController.noEndpointsRunning("bar"));
Map<String, Boolean> state = this.roleController.getEndpointsRunningStatus("foo");
assertThat(state.get("annotationTestService.handle.serviceActivator"), equalTo(Boolean.FALSE));
assertThat(state.get("enableIntegrationTests.ContextConfiguration2.sendAsyncHandler.serviceActivator"),
equalTo(Boolean.TRUE));
this.roleController.startLifecyclesInRole("foo");
assertTrue(this.roleController.allEndpointsRunning("foo"));
this.roleController.stopLifecyclesInRole("foo");
assertFalse(this.roleController.allEndpointsRunning("foo"));
assertTrue(this.roleController.noEndpointsRunning("foo"));
@SuppressWarnings("unchecked")
MultiValueMap<String, SmartLifecycle> lifecycles = TestUtils.getPropertyValue(this.roleController,
"lifecycles", MultiValueMap.class);