Test for force flag in HA resource filter
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/8d425905 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/8d425905 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/8d425905 Branch: refs/heads/master Commit: 8d425905af5a94e5d6f802779a284645f41e3bad Parents: 95e48b9 Author: Svetoslav Neykov <[email protected]> Authored: Fri Mar 6 15:42:10 2015 +0200 Committer: Svetoslav Neykov <[email protected]> Committed: Thu Mar 19 16:01:29 2015 +0200 ---------------------------------------------------------------------- .../rest/filter/HaMasterCheckFilter.java | 2 +- .../test/java/brooklyn/rest/HaHotCheckTest.java | 44 ++++++++++++++++++-- 2 files changed, 42 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/8d425905/usage/rest-server/src/main/java/brooklyn/rest/filter/HaMasterCheckFilter.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/main/java/brooklyn/rest/filter/HaMasterCheckFilter.java b/usage/rest-server/src/main/java/brooklyn/rest/filter/HaMasterCheckFilter.java index 5267aba..bb0663f 100644 --- a/usage/rest-server/src/main/java/brooklyn/rest/filter/HaMasterCheckFilter.java +++ b/usage/rest-server/src/main/java/brooklyn/rest/filter/HaMasterCheckFilter.java @@ -42,7 +42,7 @@ import brooklyn.management.ha.ManagementNodeState; */ public class HaMasterCheckFilter implements Filter { - protected static final String SKIP_CHECK_HEADER = "Brooklyn-Allow-Non-Master-Access"; + public static final String SKIP_CHECK_HEADER = "Brooklyn-Allow-Non-Master-Access"; private static final Set<String> SAFE_STANDBY_METHODS = Sets.newHashSet("GET", "HEAD"); protected ManagementContext mgmt; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/8d425905/usage/rest-server/src/test/java/brooklyn/rest/HaHotCheckTest.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/test/java/brooklyn/rest/HaHotCheckTest.java b/usage/rest-server/src/test/java/brooklyn/rest/HaHotCheckTest.java index 345e51b..8692325 100644 --- a/usage/rest-server/src/test/java/brooklyn/rest/HaHotCheckTest.java +++ b/usage/rest-server/src/test/java/brooklyn/rest/HaHotCheckTest.java @@ -28,6 +28,7 @@ import org.testng.annotations.Test; import brooklyn.management.ha.HighAvailabilityManager; import brooklyn.management.ha.ManagementNodeState; import brooklyn.rest.filter.HaHotCheckResourceFilter; +import brooklyn.rest.filter.HaMasterCheckFilter; import brooklyn.rest.testing.BrooklynRestResourceTest; import brooklyn.rest.testing.mocks.ManagementContextMock; import brooklyn.rest.util.HaHotStateCheckClassResource; @@ -35,6 +36,7 @@ import brooklyn.rest.util.HaHotStateCheckResource; import brooklyn.rest.util.ManagementContextProvider; import com.sun.jersey.api.client.ClientResponse; +import com.sun.jersey.api.client.WebResource.Builder; import com.sun.jersey.api.core.ResourceConfig; public class HaHotCheckTest extends BrooklynRestResourceTest { @@ -80,9 +82,45 @@ public class HaHotCheckTest extends BrooklynRestResourceTest { testResourceFetch("/ha/class/fail", 200); } - private void testResourceFetch(String resource, int code) { - ClientResponse response = client().resource(resource) - .accept(MediaType.APPLICATION_JSON_TYPE) + @Test + public void testHaCheckForce() { + HighAvailabilityManager ha = mgmtMock.getHighAvailabilityManager(); + assertEquals(ha.getNodeState(), ManagementNodeState.MASTER); + testResourceForcedFetch("/ha/method/ok", 200); + testResourceForcedFetch("/ha/method/fail", 200); + testResourceForcedFetch("/ha/class/fail", 200); + + mgmtMock.setState(ManagementNodeState.STANDBY); + assertEquals(ha.getNodeState(), ManagementNodeState.STANDBY); + + testResourceForcedFetch("/ha/method/ok", 200); + testResourceForcedFetch("/ha/method/fail", 200); + testResourceForcedFetch("/ha/class/fail", 200); + + //forces isRunning = false + mgmtMock.setState(ManagementNodeState.TERMINATED); + assertEquals(ha.getNodeState(), ManagementNodeState.TERMINATED); + + testResourceForcedFetch("/ha/method/ok", 200); + testResourceForcedFetch("/ha/method/fail", 200); + testResourceForcedFetch("/ha/class/fail", 200); + } + + private void testResourceFetch(String resourcePath, int code) { + testResourceFetch(resourcePath, false, code); + } + + private void testResourceForcedFetch(String resourcePath, int code) { + testResourceFetch(resourcePath, true, code); + } + + private void testResourceFetch(String resourcePath, boolean force, int code) { + Builder resource = client().resource(resourcePath) + .accept(MediaType.APPLICATION_JSON_TYPE); + if (force) { + resource.header(HaMasterCheckFilter.SKIP_CHECK_HEADER, "true"); + } + ClientResponse response = resource .get(ClientResponse.class); assertEquals(response.getStatus(), code); }
