|
@@ -18,25 +18,42 @@
|
|
|
|
|
|
package org.apache.hadoop.yarn.server.webproxy.amfilter;
|
|
|
|
|
|
+import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
|
|
+import org.apache.hadoop.yarn.server.webproxy.ProxyUtils;
|
|
|
+import org.apache.hadoop.yarn.server.webproxy.WebAppProxyServlet;
|
|
|
+import org.glassfish.grizzly.servlet.HttpServletResponseImpl;
|
|
|
+import org.junit.Test;
|
|
|
+import org.mockito.Mockito;
|
|
|
+
|
|
|
+import javax.servlet.Filter;
|
|
|
+import javax.servlet.FilterChain;
|
|
|
+import javax.servlet.FilterConfig;
|
|
|
+import javax.servlet.ServletContext;
|
|
|
+import javax.servlet.ServletException;
|
|
|
+import javax.servlet.ServletRequest;
|
|
|
+import javax.servlet.ServletResponse;
|
|
|
+import javax.servlet.http.Cookie;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.IOException;
|
|
|
import java.io.PrintWriter;
|
|
|
import java.io.StringWriter;
|
|
|
import java.net.HttpURLConnection;
|
|
|
-import java.util.*;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Collection;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.Enumeration;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.HashSet;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
|
|
|
-import javax.servlet.*;
|
|
|
-import javax.servlet.http.Cookie;
|
|
|
-import javax.servlet.http.HttpServletRequest;
|
|
|
-import javax.servlet.http.HttpServletResponse;
|
|
|
-
|
|
|
-import static org.junit.Assert.*;
|
|
|
-
|
|
|
-import org.apache.hadoop.yarn.server.webproxy.ProxyUtils;
|
|
|
-import org.apache.hadoop.yarn.server.webproxy.WebAppProxyServlet;
|
|
|
-import org.glassfish.grizzly.servlet.HttpServletResponseImpl;
|
|
|
-import org.junit.Test;
|
|
|
-import org.mockito.Mockito;
|
|
|
+import static org.junit.Assert.assertEquals;
|
|
|
+import static org.junit.Assert.assertFalse;
|
|
|
+import static org.junit.Assert.assertTrue;
|
|
|
+import static org.junit.Assert.fail;
|
|
|
|
|
|
/**
|
|
|
* Test AmIpFilter. Requests to a no declared hosts should has way through
|
|
@@ -121,6 +138,36 @@ public class TestAmFilter {
|
|
|
filter.destroy();
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void testFindRedirectUrl() throws Exception {
|
|
|
+ final String rm1 = "rm1";
|
|
|
+ final String rm2 = "rm2";
|
|
|
+
|
|
|
+ final String rm1Url = "host1:8088";
|
|
|
+ final String rm2Url = "host2:8088";
|
|
|
+
|
|
|
+ TestAmIpFilter filter = new TestAmIpFilter();
|
|
|
+ TestAmIpFilter spy = Mockito.spy(filter);
|
|
|
+ // make sure findRedirectUrl() go to HA branch
|
|
|
+ spy.proxyUriBases = new HashMap<>();
|
|
|
+ spy.proxyUriBases.put(rm1, rm1Url);
|
|
|
+ spy.proxyUriBases.put(rm2, rm2Url);
|
|
|
+
|
|
|
+ Collection<String> rmIds = new ArrayList<>(Arrays.asList(rm1, rm2));
|
|
|
+ Mockito.doReturn(rmIds).when(spy).getRmIds(
|
|
|
+ Mockito.any(YarnConfiguration.class));
|
|
|
+ Mockito.doReturn(rm1Url).when(spy).getUrlByRmId(
|
|
|
+ Mockito.any(YarnConfiguration.class), Mockito.eq(rm2));
|
|
|
+ Mockito.doReturn(rm2Url).when(spy)
|
|
|
+ .getUrlByRmId(Mockito.any(YarnConfiguration.class), Mockito.eq(rm1));
|
|
|
+
|
|
|
+ // Stub "isValidUrl" and returns false for rm1, returns true for rm2.
|
|
|
+ Mockito.doReturn(false).when(spy).isValidUrl(Mockito.eq(rm1Url));
|
|
|
+ Mockito.doReturn(true).when(spy).isValidUrl(Mockito.eq(rm2Url));
|
|
|
+
|
|
|
+ assertEquals(spy.findRedirectUrl(), rm2Url);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Test AmIpFilter
|
|
|
*/
|