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);
     }

Reply via email to