You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by mo...@apache.org on 2017/11/02 18:48:28 UTC

[24/25] knox git commit: KNOX-998 - Some more refactoring

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockHttpServletRequest.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockHttpServletRequest.java b/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockHttpServletRequest.java
deleted file mode 100644
index 82ebe3d..0000000
--- a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockHttpServletRequest.java
+++ /dev/null
@@ -1,410 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.test.mock;
-
-import javax.servlet.AsyncContext;
-import javax.servlet.DispatcherType;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletInputStream;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpUpgradeHandler;
-import javax.servlet.http.Part;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.security.Principal;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.Locale;
-import java.util.Map;
-
-public class MockHttpServletRequest implements HttpServletRequest {
-
-  private String queryString;
-  private String contentType;
-  private String characterEncoding;
-  private ServletInputStream inputStream;
-  private String method = "GET";
-
-  @Override
-  public String getAuthType() {
-    return null;
-  }
-
-  @Override
-  public Cookie[] getCookies() {
-    return new Cookie[ 0 ];
-  }
-
-  @Override
-  public long getDateHeader( String s ) {
-    return 0;
-  }
-
-  @Override
-  public String getHeader( String s ) {
-    return null;
-  }
-
-  @Override
-  public Enumeration<String> getHeaders( String s ) {
-    return null;
-  }
-
-  @Override
-  public Enumeration<String> getHeaderNames() {
-    return null;
-  }
-
-  @Override
-  public int getIntHeader( String s ) {
-    return 0;
-  }
-
-  @Override
-  public String getMethod() {
-    return method;
-  }
-
-  public void setMethod( String method ) {
-    this.method = method;
-  }
-
-  @Override
-  public String getPathInfo() {
-    return null;
-  }
-
-  @Override
-  public String getPathTranslated() {
-    return null;
-  }
-
-  @Override
-  public String getContextPath() {
-    return null;
-  }
-
-  @Override
-  public String getQueryString() {
-    return queryString;
-  }
-
-  public void setQueryString( String queryString ) {
-    this.queryString = queryString;
-  }
-
-  @Override
-  public String getRemoteUser() {
-    return null;
-  }
-
-  @Override
-  public boolean isUserInRole( String s ) {
-    return false;
-  }
-
-  @Override
-  public Principal getUserPrincipal() {
-    return null;
-  }
-
-  @Override
-  public String getRequestedSessionId() {
-    return null;
-  }
-
-  @Override
-  public String getRequestURI() {
-    return null;
-  }
-
-  @Override
-  public StringBuffer getRequestURL() {
-    return null;
-  }
-
-  @Override
-  public String getServletPath() {
-    return null;
-  }
-
-  @Override
-  public HttpSession getSession( boolean b ) {
-    return null;
-  }
-
-  @Override
-  public HttpSession getSession() {
-    return null;
-  }
-
-  @Override
-  public String changeSessionId() {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public boolean isRequestedSessionIdValid() {
-    return false;
-  }
-
-  @Override
-  public boolean isRequestedSessionIdFromCookie() {
-    return false;
-  }
-
-  @Override
-  public boolean isRequestedSessionIdFromURL() {
-    return false;
-  }
-
-  @Override
-  @SuppressWarnings("deprecation")
-  public boolean isRequestedSessionIdFromUrl() {
-    return false;
-  }
-
-  @Override
-  public boolean authenticate( HttpServletResponse httpServletResponse ) throws IOException, ServletException {
-    return false;
-  }
-
-  @Override
-  public void login( String s, String s1 ) throws ServletException {
-  }
-
-  @Override
-  public void logout() throws ServletException {
-  }
-
-  @Override
-  public Collection<Part> getParts() throws IOException, ServletException {
-    return null;
-  }
-
-  @Override
-  public Part getPart( String s ) throws IOException, ServletException {
-    return null;
-  }
-
-  @Override
-  public <T extends HttpUpgradeHandler> T upgrade( Class<T> aClass ) throws IOException, ServletException {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public Object getAttribute( String s ) {
-    return null;
-  }
-
-  @Override
-  public Enumeration<String> getAttributeNames() {
-    return null;
-  }
-
-  @Override
-  public String getCharacterEncoding() {
-    return characterEncoding;
-  }
-
-  @Override
-  public void setCharacterEncoding( String characterEncoding ) throws UnsupportedEncodingException {
-    this.characterEncoding = characterEncoding;
-  }
-
-  @Override
-  public int getContentLength() {
-    return 0;
-  }
-
-  @Override
-  public long getContentLengthLong() {
-    return 0;
-  }
-
-  @Override
-  public String getContentType() {
-    return contentType;
-  }
-
-  public void setContentType( String contentType ) {
-    this.contentType = contentType;
-  }
-
-  @Override
-  public ServletInputStream getInputStream() throws IOException {
-    return inputStream;
-  }
-
-  public void setInputStream( ServletInputStream intputStream ) {
-    this.inputStream = intputStream;
-  }
-
-  @Override
-  public String getParameter( String s ) {
-    return null;
-  }
-
-  @Override
-  public Enumeration<String> getParameterNames() {
-    return null;
-  }
-
-  @Override
-  public String[] getParameterValues( String s ) {
-    return new String[ 0 ];
-  }
-
-  @Override
-  public Map<String, String[]> getParameterMap() {
-    return null;
-  }
-
-  @Override
-  public String getProtocol() {
-    return null;
-  }
-
-  @Override
-  public String getScheme() {
-    return null;
-  }
-
-  @Override
-  public String getServerName() {
-    return null;
-  }
-
-  @Override
-  public int getServerPort() {
-    return 0;
-  }
-
-  @Override
-  public BufferedReader getReader() throws IOException {
-    return null;
-  }
-
-  @Override
-  public String getRemoteAddr() {
-    return null;
-  }
-
-  @Override
-  public String getRemoteHost() {
-    return null;
-  }
-
-  @Override
-  public void setAttribute( String s, Object o ) {
-  }
-
-  @Override
-  public void removeAttribute( String s ) {
-  }
-
-  @Override
-  public Locale getLocale() {
-    return null;
-  }
-
-  @Override
-  public Enumeration<Locale> getLocales() {
-    return null;
-  }
-
-  @Override
-  public boolean isSecure() {
-    return false;
-  }
-
-  @Override
-  public RequestDispatcher getRequestDispatcher( String s ) {
-    return null;
-  }
-
-  @Override
-  @SuppressWarnings("deprecation")
-  public String getRealPath( String s ) {
-    return null;
-  }
-
-  @Override
-  public int getRemotePort() {
-    return 0;
-  }
-
-  @Override
-  public String getLocalName() {
-    return null;
-  }
-
-  @Override
-  public String getLocalAddr() {
-    return null;
-  }
-
-  @Override
-  public int getLocalPort() {
-    return 0;
-  }
-
-  @Override
-  public ServletContext getServletContext() {
-    return null;
-  }
-
-  @Override
-  public AsyncContext startAsync() throws IllegalStateException {
-    return null;
-  }
-
-  @Override
-  public AsyncContext startAsync( ServletRequest servletRequest, ServletResponse servletResponse ) throws IllegalStateException {
-    return null;
-  }
-
-  @Override
-  public boolean isAsyncStarted() {
-    return false;
-  }
-
-  @Override
-  public boolean isAsyncSupported() {
-    return false;
-  }
-
-  @Override
-  public AsyncContext getAsyncContext() {
-    return null;
-  }
-
-  @Override
-  public DispatcherType getDispatcherType() {
-    return null;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockHttpServletResponse.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockHttpServletResponse.java b/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockHttpServletResponse.java
deleted file mode 100644
index 9d20d17..0000000
--- a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockHttpServletResponse.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.test.mock;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Collection;
-import java.util.Locale;
-
-public class MockHttpServletResponse implements HttpServletResponse {
-
-  @Override
-  public void addCookie( Cookie cookie ) {
-  }
-
-  @Override
-  public boolean containsHeader( String s ) {
-    return false;
-  }
-
-  @Override
-  public String encodeURL( String s ) {
-    return null;
-  }
-
-  @Override
-  public String encodeRedirectURL( String s ) {
-    return null;
-  }
-
-  @Override
-  @SuppressWarnings("deprecation")
-  public String encodeUrl( String s ) {
-    return null;
-  }
-
-  @Override
-  public String encodeRedirectUrl( String s ) {
-    return null;
-  }
-
-  @Override
-  public void sendError( int i, String s ) throws IOException {
-  }
-
-  @Override
-  public void sendError( int i ) throws IOException {
-  }
-
-  @Override
-  public void sendRedirect( String s ) throws IOException {
-  }
-
-  @Override
-  public void setDateHeader( String s, long l ) {
-  }
-
-  @Override
-  public void addDateHeader( String s, long l ) {
-  }
-
-  @Override
-  public void setHeader( String s, String s1 ) {
-  }
-
-  @Override
-  public void addHeader( String s, String s1 ) {
-  }
-
-  @Override
-  public void setIntHeader( String s, int i ) {
-  }
-
-  @Override
-  public void addIntHeader( String s, int i ) {
-  }
-
-  @Override
-  public void setStatus( int i ) {
-  }
-
-  @Override
-  @SuppressWarnings("deprecation")
-  public void setStatus( int i, String s ) {
-  }
-
-  @Override
-  public int getStatus() {
-    return 0;
-  }
-
-  @Override
-  public String getHeader( String s ) {
-    return null;
-  }
-
-  @Override
-  public Collection<String> getHeaders( String s ) {
-    return null;
-  }
-
-  @Override
-  public Collection<String> getHeaderNames() {
-    return null;
-  }
-
-  @Override
-  public String getCharacterEncoding() {
-    return null;
-  }
-
-  @Override
-  public String getContentType() {
-    return null;
-  }
-
-  @Override
-  public ServletOutputStream getOutputStream() throws IOException {
-    return null;
-  }
-
-  @Override
-  public PrintWriter getWriter() throws IOException {
-    return null;
-  }
-
-  @Override
-  public void setCharacterEncoding( String s ) {
-  }
-
-  @Override
-  public void setContentLength( int i ) {
-  }
-
-  @Override
-  public void setContentLengthLong( long l ) {
-  }
-
-  @Override
-  public void setContentType( String s ) {
-  }
-
-  @Override
-  public void setBufferSize( int i ) {
-  }
-
-  @Override
-  public int getBufferSize() {
-    return 0;
-  }
-
-  @Override
-  public void flushBuffer() throws IOException {
-  }
-
-  @Override
-  public void resetBuffer() {
-  }
-
-  @Override
-  public boolean isCommitted() {
-    return false;
-  }
-
-  @Override
-  public void reset() {
-  }
-
-  @Override
-  public void setLocale( Locale locale ) {
-  }
-
-  @Override
-  public Locale getLocale() {
-    return null;
-  }
-}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockInteraction.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockInteraction.java b/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockInteraction.java
deleted file mode 100644
index 1e30d38..0000000
--- a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockInteraction.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.test.mock;
-
-public class MockInteraction {
-
-  private MockResponseProvider response = new MockResponseProvider();
-  private MockRequestMatcher request = new MockRequestMatcher( response );
-
-  public MockRequestMatcher expect() {
-    return request;
-  }
-
-  public MockResponseProvider respond() {
-    return response;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockRequestMatcher.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockRequestMatcher.java b/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockRequestMatcher.java
deleted file mode 100644
index e107e6f..0000000
--- a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockRequestMatcher.java
+++ /dev/null
@@ -1,330 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.test.mock;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.http.NameValuePair;
-import org.apache.http.client.utils.URLEncodedUtils;
-import org.apache.http.message.BasicNameValuePair;
-import org.hamcrest.Matcher;
-import org.hamcrest.Matchers;
-
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.nio.charset.Charset;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.equalToIgnoringCase;
-import static org.xmlmatchers.XmlMatchers.isEquivalentTo;
-import static org.xmlmatchers.transform.XmlConverters.the;
-import static uk.co.datumedge.hamcrest.json.SameJSONAs.sameJSONAs;
-
-public class MockRequestMatcher {
-
-  private static final Charset UTF8 = Charset.forName( "UTF-8" );
-
-  private String from;
-  private MockResponseProvider response;
-  private Set<String> methods = null;
-  private String pathInfo = null;
-  private String requestURL = null;
-  Map<String,Matcher> headers = null;
-  Set<Cookie> cookies = null;
-  private Map<String,Object> attributes = null;
-  private Map<String,String> queryParams = null;
-  private String contentType = null;
-  private String characterEncoding = null;
-  private Integer contentLength = null;
-  private byte[] entity = null;
-  private Map<String,String[]> formParams = null;
-
-  public MockRequestMatcher( MockResponseProvider response ) {
-    this.response = response;
-  }
-
-  public MockResponseProvider respond() {
-    return response;
-  }
-
-  public MockRequestMatcher from( String from ) {
-    this.from = from;
-    return this;
-  }
-
-  public MockRequestMatcher method( String... methods ) {
-    if( this.methods == null ) {
-      this.methods = new HashSet<>();
-    }
-    if( methods != null ) {
-      for( String method: methods ) {
-        this.methods.add( method );
-      }
-    }
-    return this;
-  }
-
-  public MockRequestMatcher pathInfo( String pathInfo ) {
-    this.pathInfo = pathInfo;
-    return this;
-  }
-
-  public MockRequestMatcher requestUrl( String requestUrl ) {
-    this.requestURL = requestUrl;
-    return this;
-  }
-
-  public MockRequestMatcher header( String name, String value ) {
-    if( headers == null ) {
-      headers = new HashMap<>();
-    }
-    headers.put( name, Matchers.is(value) );
-    return this;
-  }
-
-  public MockRequestMatcher header( String name, Matcher matcher ) {
-    if( headers == null ) {
-      headers = new HashMap<>();
-    }
-    headers.put( name, matcher );
-    return this;
-  }
-
-  public MockRequestMatcher cookie( Cookie cookie ) {
-    if( cookies == null ) {
-      cookies = new HashSet<>();
-    }
-    cookies.add( cookie );
-    return this;
-  }
-
-  public MockRequestMatcher attribute( String name, Object value ) {
-    if( this.attributes == null ) {
-      this.attributes = new HashMap<>();
-    }
-    attributes.put( name, value );
-    return this;
-  }
-
-  public MockRequestMatcher queryParam( String name, String value ) {
-    if( this.queryParams == null ) {
-      this.queryParams = new HashMap<>();
-    }
-    queryParams.put( name, value );
-    return this;
-  }
-
-  public MockRequestMatcher formParam( String name, String... values ) {
-    if( entity != null ) {
-      throw new IllegalStateException( "Entity already specified." );
-    }
-    if( formParams == null ) {
-      formParams = new HashMap<>();
-    }
-    String[] currentValues = formParams.get( name );
-    if( currentValues == null ) {
-      currentValues = values;
-    } else if ( values != null ) {
-      currentValues = ArrayUtils.addAll( currentValues, values );
-    }
-    formParams.put( name, currentValues );
-    return this;
-  }
-
-  public MockRequestMatcher content( String string, Charset charset ) {
-    content( string.getBytes( charset ) );
-    return this;
-  }
-
-  public MockRequestMatcher content( byte[] entity ) {
-    if( formParams != null ) {
-      throw new IllegalStateException( "Form params already specified." );
-    }
-    this.entity = entity;
-    return this;
-  }
-
-  public MockRequestMatcher content( URL url ) throws IOException {
-    content( url.openStream() );
-    return this;
-  }
-
-  public MockRequestMatcher content( InputStream stream ) throws IOException {
-    content( IOUtils.toByteArray( stream ) );
-    return this;
-  }
-
-  public MockRequestMatcher contentType( String contentType ) {
-    this.contentType = contentType;
-    return this;
-  }
-
-  public MockRequestMatcher contentLength( int length ) {
-    this.contentLength = length;
-    return this;
-  }
-
-  public MockRequestMatcher characterEncoding( String charset ) {
-    this.characterEncoding = charset;
-    return this;
-  }
-
-  public void match( HttpServletRequest request ) throws IOException {
-    if( methods != null ) {
-      assertThat(
-          "Request " + request.getMethod() + " " + request.getRequestURL() +
-              " is not using one of the expected HTTP methods",
-          methods, hasItem( request.getMethod() ) );
-    }
-    if( pathInfo != null ) {
-      assertThat(
-          "Request " + request.getMethod() + " " + request.getRequestURL() +
-              " does not have the expected pathInfo",
-          request.getPathInfo(), is( pathInfo ) );
-    }
-    if( requestURL != null ) {
-      assertThat( 
-          "Request " + request.getMethod() + " " + request.getRequestURL() +
-              " does not have the expected requestURL",
-          request.getRequestURL().toString(), is( requestURL ) );
-    }
-    if( headers != null ) {
-      for( Entry<String, Matcher> entry : headers.entrySet() ) {
-        assertThat(
-            "Request " + request.getMethod() + " " + request.getRequestURL() +
-                " does not have the expected value for header " + entry.getKey(),
-            request.getHeader( entry.getKey() ),  entry.getValue() );
-      }
-    }
-    if( cookies != null ) {
-      List<Cookie> requestCookies = Arrays.asList( request.getCookies() );
-      for( Cookie cookie: cookies ) {
-        assertThat(
-            "Request " + request.getMethod() + " " + request.getRequestURL() +
-                " does not have the expected cookie " + cookie,
-            requestCookies, hasItem( cookie ) );
-      }
-    }
-    if( contentType != null ) {
-      String[] requestContentType = request.getContentType().split(";",2);
-      assertThat(
-          "Request " + request.getMethod() + " " + request.getRequestURL() +
-              " does not have the expected content type",
-          requestContentType[ 0 ], is( contentType ) );
-    }
-    if( characterEncoding != null ) {
-      assertThat(
-          "Request " + request.getMethod() + " " + request.getRequestURL() +
-              " does not have the expected character encoding",
-          request.getCharacterEncoding(), equalToIgnoringCase( characterEncoding ) );
-    }
-    if( contentLength != null ) {
-      assertThat(
-          "Request " + request.getMethod() + " " + request.getRequestURL() +
-              " does not have the expected content length",
-          request.getContentLength(), is( contentLength ) );
-    }
-    if( attributes != null ) {
-      for( String name: attributes.keySet() ) {
-        assertThat(
-            "Request " + request.getMethod() + " " + request.getRequestURL() +
-                " is missing attribute '" + name + "'",
-            request.getAttribute( name ), notNullValue() );
-        assertThat(
-            "Request " + request.getMethod() + " " + request.getRequestURL() +
-                " has wrong value for attribute '" + name + "'",
-            request.getAttribute( name ), is( request.getAttribute( name ) ) );
-      }
-    }
-    // Note: Cannot use any of the expect.getParameter*() methods because they will read the
-    // body and we don't want that to happen.
-    if( queryParams != null ) {
-      String queryString = request.getQueryString();
-      List<NameValuePair> requestParams = parseQueryString( queryString == null ? "" : queryString );
-      for( Entry<String, String> entry : queryParams.entrySet() ) {
-        assertThat(
-            "Request " + request.getMethod() + " " + request.getRequestURL() +
-                " query string " + queryString + " is missing parameter '" + entry.getKey() + "'",
-            requestParams, hasItem( new BasicNameValuePair(entry.getKey(), entry.getValue())) );
-      }
-    }
-    if( formParams != null ) {
-      String paramString = IOUtils.toString( request.getInputStream(), request.getCharacterEncoding() );
-      List<NameValuePair> requestParams = parseQueryString( paramString == null ? "" : paramString );
-      for( Entry<String, String[]> entry : formParams.entrySet() ) {
-        String[] expectedValues = entry.getValue();
-        for( String expectedValue : expectedValues ) {
-          assertThat(
-              "Request " + request.getMethod() + " " + request.getRequestURL() +
-                  " form params " + paramString + " is missing a value " + expectedValue + " for parameter '" + entry.getKey() + "'",
-              requestParams, hasItem( new BasicNameValuePair(entry.getKey(), expectedValue ) ));
-        }
-      }
-    }
-    if( entity != null ) {
-      if( contentType != null && contentType.endsWith( "/xml" ) ) {
-        String expectEncoding = characterEncoding;
-        String expect = new String( entity, ( expectEncoding == null ? UTF8.name() : expectEncoding ) );
-        String actualEncoding = request.getCharacterEncoding();
-        String actual = IOUtils.toString( request.getInputStream(), actualEncoding == null ? UTF8.name() : actualEncoding );
-        assertThat( the( actual ), isEquivalentTo( the( expect ) ) );
-      } else if ( contentType != null && contentType.endsWith( "/json" ) )  {
-        String expectEncoding = characterEncoding;
-        String expect = new String( entity, ( expectEncoding == null ? UTF8.name() : expectEncoding ) );
-        String actualEncoding = request.getCharacterEncoding();
-        String actual = IOUtils.toString( request.getInputStream(), actualEncoding == null ? UTF8.name() : actualEncoding );
-//        System.out.println( "EXPECT=" + expect );
-//        System.out.println( "ACTUAL=" + actual );
-        assertThat( actual, sameJSONAs( expect ) );
-      } else if( characterEncoding == null || request.getCharacterEncoding() == null ) {
-        byte[] bytes = IOUtils.toByteArray( request.getInputStream() );
-        assertThat(
-            "Request " + request.getMethod() + " " + request.getRequestURL() +
-                " content does not match the expected content",
-            bytes, is( entity ) );
-      } else {
-        String expect = new String( entity, characterEncoding );
-        String actual = IOUtils.toString( request.getInputStream(), request.getCharacterEncoding() );
-        assertThat(
-            "Request " + request.getMethod() + " " + request.getRequestURL() +
-                " content does not match the expected content",
-            actual, is( expect ) );
-      }
-    }
-  }
-
-  public String toString() {
-    return "from=" + from + ", pathInfo=" + pathInfo;
-  }
-
-  private static List<NameValuePair> parseQueryString( String queryString ) {
-    return URLEncodedUtils.parse(queryString, Charset.defaultCharset());
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockResponseProvider.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockResponseProvider.java b/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockResponseProvider.java
deleted file mode 100644
index b1b1178..0000000
--- a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockResponseProvider.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.test.mock;
-
-import org.apache.commons.io.IOUtils;
-
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.nio.charset.Charset;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-public class MockResponseProvider {
-
-  Integer errorCode = null;
-  String errorMsg = null;
-  Integer statusCode = null;
-  String redirectUrl = null;
-  Map<String,String> headers = null;
-  Set<Cookie> cookies = null;
-  byte[] entity = null;
-  String contentType = null;
-  String characterEncoding = null;
-  Integer contentLength = null;
-
-  public MockResponseProvider status( int statusCode ) {
-    this.statusCode = statusCode;
-    return this;
-  }
-
-  public MockResponseProvider error( int code, String message ) {
-    errorCode = code;
-    errorMsg = message;
-    return this;
-  }
-
-  public MockResponseProvider redirect( String location ) {
-    redirectUrl = location;
-    return this;
-  }
-
-  public MockResponseProvider header( String name, String value ) {
-    if( headers == null ) {
-      headers = new HashMap<>();
-    }
-    headers.put( name, value );
-    return this;
-  }
-
-  public MockResponseProvider cookie( Cookie cookie ) {
-    if( cookies == null ) {
-      cookies = new HashSet<>();
-    }
-    cookies.add( cookie );
-    return this;
-  }
-
-  public MockResponseProvider content( byte[] entity ) {
-    this.entity = entity;
-    return this;
-  }
-
-  public MockResponseProvider content( String string, Charset charset ) {
-    this.entity = string.getBytes( charset );
-    return this;
-  }
-
-  public MockResponseProvider content( URL url ) throws IOException {
-    content( url.openStream() );
-    return this;
-  }
-
-  public MockResponseProvider content( InputStream stream ) throws IOException {
-    content( IOUtils.toByteArray( stream ) );
-    return this;
-  }
-
-  public MockResponseProvider contentType( String contentType ) {
-    this.contentType = contentType;
-    return this;
-  }
-
-  public MockResponseProvider contentLength( int contentLength ) {
-    this.contentLength = contentLength;
-    return this;
-  }
-
-  public MockResponseProvider characterEncoding( String charset ) {
-    this.characterEncoding = charset;
-    return this;
-  }
-
-  public void apply( HttpServletResponse response ) throws IOException {
-    if( statusCode != null ) {
-      response.setStatus( statusCode );
-    } else {
-      response.setStatus( HttpServletResponse.SC_OK );
-    }
-    if( errorCode != null ) {
-      if( errorMsg != null ) {
-        response.sendError( errorCode, errorMsg );
-      } else {
-        response.sendError( errorCode );
-      }
-    }
-    if( redirectUrl != null ) {
-      response.sendRedirect( redirectUrl );
-    }
-    if( headers != null ) {
-      for( Entry<String, String> entry : headers.entrySet() ) {
-        response.addHeader( entry.getKey(), entry.getValue() );
-      }
-    }
-    if( cookies != null ) {
-      for( Cookie cookie: cookies ) {
-        response.addCookie( cookie );
-      }
-    }
-    if( contentType != null ) {
-      response.setContentType( contentType );
-    }
-    if( characterEncoding != null ) {
-      response.setCharacterEncoding( characterEncoding );
-    }
-    if( contentLength != null ) {
-      response.setContentLength( contentLength );
-    }
-    response.flushBuffer();
-    if( entity != null ) {
-      response.getOutputStream().write( entity );
-      //KNOX-685: response.getOutputStream().flush();
-      response.getOutputStream().close();
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServer.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServer.java b/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServer.java
deleted file mode 100644
index 5d95ce6..0000000
--- a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServer.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.test.mock;
-
-import org.eclipse.jetty.server.Handler;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.servlet.Servlet;
-import java.util.LinkedList;
-import java.util.Queue;
-
-/**
- * An embedded Jetty server with a single servlet deployed on "/*".
- * It is used by populating a queue of "interactions".
- * Each interaction is an expected request and a resulting response.
- * These interactions are added to a queue in a fluent API style.
- * So in most of the tests like GatewayBasicFuncTest.testBasicJsonUseCase you will see calls like
- * driver.getMock( "WEBHDFS" ).expect()....respond()...;
- * This adds a single interaction to the mock server which is returned via the driver.getMock( "WEBHDFS" ) above.
- * Any number of interactions may be added.
- * When the request comes in it will check the request against the expected request.
- * If it matches return the response otherwise it will return a 500 error.
- * Typically at the end of a test you should check to make sure the interaction queue is consumed by calling isEmpty().
- * The reset() method can be used to ensure everything is cleaned up so that the mock server can be reused beteween tests.
- * The whole idea was modeled after how the REST testing framework REST-assured and aims to be a server side equivalent.
- */
-public class MockServer {
-
-  private Logger log = LoggerFactory.getLogger( this.getClass() );
-
-  private String name;
-  private Server jetty;
-
-  private Queue<MockInteraction> interactions = new LinkedList<MockInteraction>();
-
-  public MockServer( String name ) {
-    this.name = name;
-  }
-
-  public MockServer( String name, boolean start ) throws Exception {
-    this.name = name;
-    if( start ) {
-      start();
-    }
-  }
-
-  public String getName() {
-    return name;
-  }
-
-  public void start() throws Exception {
-    Handler context = createHandler();
-    jetty = new Server(0);
-    jetty.setHandler( context );
-    jetty.start();
-    log.info( "Mock server started on port " + getPort() );
-  }
-
-  public void stop() throws Exception {
-    jetty.stop();
-    jetty.join();
-  }
-
-  private ServletContextHandler createHandler() {
-    Servlet servlet = new MockServlet( getName(), interactions );
-    ServletHolder holder = new ServletHolder( servlet );
-    ServletContextHandler context = new ServletContextHandler( ServletContextHandler.SESSIONS );
-    context.setContextPath( "/" );
-    context.addServlet( holder, "/*" );
-    return context;
-  }
-
-  public int getPort() {
-    return jetty.getURI().getPort();
-  }
-
-  public MockRequestMatcher expect() {
-    MockInteraction interaction = new MockInteraction();
-    interactions.add( interaction );
-    return interaction.expect();
-  }
-
-  public MockResponseProvider respond() {
-    MockInteraction interaction = new MockInteraction();
-    interactions.add( interaction );
-    return interaction.respond();
-  }
-
-  public int getCount() {
-    return interactions.size();
-  }
-
-  public boolean isEmpty() {
-    return interactions.isEmpty();
-  }
-
-  public void reset() {
-    interactions.clear();
-  }
-}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServlet.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServlet.java b/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServlet.java
deleted file mode 100644
index ca4692c..0000000
--- a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServlet.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.test.mock;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.Queue;
-
-import org.apache.log4j.Logger;
-
-import static org.junit.Assert.fail;
-
-public class MockServlet extends HttpServlet {
-
-  private static final Logger LOG = Logger.getLogger(MockServlet.class.getName());
-
-  public String name;
-  public Queue<MockInteraction> interactions;
-
-  public MockServlet( String name, Queue<MockInteraction> interactions ) {
-    this.name = name;
-    this.interactions = interactions;
-  }
-
-  @Override
-  protected void service( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
-    LOG.debug( "service: request=" + request.getMethod() + " " + request.getRequestURL() + "?" + request.getQueryString() );
-    try {
-      if( interactions.isEmpty() ) {
-        fail( "Mock servlet " + name + " received a request but the expected interaction queue is empty." );
-      }
-      MockInteraction interaction = interactions.remove();
-      interaction.expect().match( request );
-      interaction.respond().apply( response );
-      LOG.debug( "service: response=" + response.getStatus() );
-    } catch( AssertionError e ) {
-      LOG.debug( "service: exception=" + e.getMessage() );
-      e.printStackTrace(); // I18N not required.
-      throw new ServletException( e );
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServletContext.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServletContext.java b/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServletContext.java
deleted file mode 100644
index 0df84c3..0000000
--- a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServletContext.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.test.mock;
-
-import javax.servlet.Filter;
-import javax.servlet.FilterRegistration;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRegistration;
-import javax.servlet.SessionCookieConfig;
-import javax.servlet.SessionTrackingMode;
-import javax.servlet.descriptor.JspConfigDescriptor;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.EventListener;
-import java.util.Map;
-import java.util.Set;
-
-public class MockServletContext implements ServletContext {
-
-  @Override
-  public String getContextPath() {
-    return null;
-  }
-
-  @Override
-  public ServletContext getContext( String s ) {
-    return null;
-  }
-
-  @Override
-  public int getMajorVersion() {
-    return 0;
-  }
-
-  @Override
-  public int getMinorVersion() {
-    return 0;
-  }
-
-  @Override
-  public int getEffectiveMajorVersion() {
-    return 0;
-  }
-
-  @Override
-  public int getEffectiveMinorVersion() {
-    return 0;
-  }
-
-  @Override
-  public String getMimeType( String s ) {
-    return null;
-  }
-
-  @Override
-  public Set<String> getResourcePaths( String s ) {
-    return null;
-  }
-
-  @Override
-  public URL getResource( String s ) throws MalformedURLException {
-    return null;
-  }
-
-  @Override
-  public InputStream getResourceAsStream( String s ) {
-    return null;
-  }
-
-  @Override
-  public RequestDispatcher getRequestDispatcher( String s ) {
-    return null;
-  }
-
-  @Override
-  public RequestDispatcher getNamedDispatcher( String s ) {
-    return null;
-  }
-
-  @Override
-  @SuppressWarnings("deprecation")
-  public Servlet getServlet( String s ) throws ServletException {
-    return null;
-  }
-
-  @Override
-  @SuppressWarnings("deprecation")
-  public Enumeration<Servlet> getServlets() {
-    return null;
-  }
-
-  @Override
-  @SuppressWarnings("deprecation")
-  public Enumeration<String> getServletNames() {
-    return null;
-  }
-
-  @Override
-  public void log( String s ) {
-  }
-
-  @Override
-  @SuppressWarnings("deprecation")
-  public void log( Exception e, String s ) {
-  }
-
-  @Override
-  public void log( String s, Throwable throwable ) {
-  }
-
-  @Override
-  public String getRealPath( String s ) {
-    return null;
-  }
-
-  @Override
-  public String getServerInfo() {
-    return null;
-  }
-
-  @Override
-  public String getInitParameter( String s ) {
-    return null;
-  }
-
-  @Override
-  public Enumeration<String> getInitParameterNames() {
-    return null;
-  }
-
-  @Override
-  public boolean setInitParameter( String s, String s1 ) {
-    return false;
-  }
-
-  @Override
-  public Object getAttribute( String s ) {
-    return null;
-  }
-
-  @Override
-  public Enumeration<String> getAttributeNames() {
-    return null;
-  }
-
-  @Override
-  public void setAttribute( String s, Object o ) {
-  }
-
-  @Override
-  public void removeAttribute( String s ) {
-  }
-
-  @Override
-  public String getServletContextName() {
-    return null;
-  }
-
-  @Override
-  public ServletRegistration.Dynamic addServlet( String s, String s1 ) {
-    return null;
-  }
-
-  @Override
-  public ServletRegistration.Dynamic addServlet( String s, Servlet servlet ) {
-    return null;
-  }
-
-  @Override
-  public ServletRegistration.Dynamic addServlet( String s, Class<? extends Servlet> aClass ) {
-    return null;
-  }
-
-  @Override
-  public <T extends Servlet> T createServlet( Class<T> tClass ) throws ServletException {
-    return null;
-  }
-
-  @Override
-  public ServletRegistration getServletRegistration( String s ) {
-    return null;
-  }
-
-  @Override
-  public Map<String, ? extends ServletRegistration> getServletRegistrations() {
-    return null;
-  }
-
-  @Override
-  public FilterRegistration.Dynamic addFilter( String s, String s1 ) {
-    return null;
-  }
-
-  @Override
-  public FilterRegistration.Dynamic addFilter( String s, Filter filter ) {
-    return null;
-  }
-
-  @Override
-  public FilterRegistration.Dynamic addFilter( String s, Class<? extends Filter> aClass ) {
-    return null;
-  }
-
-  @Override
-  public <T extends Filter> T createFilter( Class<T> tClass ) throws ServletException {
-    return null;
-  }
-
-  @Override
-  public FilterRegistration getFilterRegistration( String s ) {
-    return null;
-  }
-
-  @Override
-  public Map<String, ? extends FilterRegistration> getFilterRegistrations() {
-    return null;
-  }
-
-  @Override
-  public SessionCookieConfig getSessionCookieConfig() {
-    return null;
-  }
-
-  @Override
-  public void setSessionTrackingModes( Set<SessionTrackingMode> sessionTrackingModes ) {
-  }
-
-  @Override
-  public Set<SessionTrackingMode> getDefaultSessionTrackingModes() {
-    return null;
-  }
-
-  @Override
-  public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() {
-    return null;
-  }
-
-  @Override
-  public void addListener( String s ) {
-  }
-
-  @Override
-  public <T extends EventListener> void addListener( T t ) {
-  }
-
-  @Override
-  public void addListener( Class<? extends EventListener> aClass ) {
-  }
-
-  @Override
-  public <T extends EventListener> T createListener( Class<T> tClass ) throws ServletException {
-    return null;
-  }
-
-  @Override
-  public JspConfigDescriptor getJspConfigDescriptor() {
-    return null;
-  }
-
-  @Override
-  public ClassLoader getClassLoader() {
-    return null;
-  }
-
-  @Override
-  public void declareRoles( String... strings ) {
-  }
-
-  @Override
-  public String getVirtualServerName() {
-    throw new UnsupportedOperationException();
-  }
-}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServletInputStream.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServletInputStream.java b/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServletInputStream.java
deleted file mode 100644
index 227dc1c..0000000
--- a/gateway-test-utils/src/main/java/org/apache/hadoop/test/mock/MockServletInputStream.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.test.mock;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.servlet.ReadListener;
-import javax.servlet.ServletInputStream;
-
-public class MockServletInputStream extends ServletInputStream {
-
-  private InputStream stream;
-
-  public MockServletInputStream( InputStream stream ) {
-    this.stream = stream;
-  }
-
-  @Override
-  public int read() throws IOException {
-    return stream.read();
-  }
-
-  @Override
-  public boolean isFinished() {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public boolean isReady() {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public void setReadListener( ReadListener readListener ) {
-    throw new UnsupportedOperationException();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/knox/test/Console.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/knox/test/Console.java b/gateway-test-utils/src/main/java/org/apache/knox/test/Console.java
new file mode 100644
index 0000000..0965748
--- /dev/null
+++ b/gateway-test-utils/src/main/java/org/apache/knox/test/Console.java
@@ -0,0 +1,57 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.knox.test;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+
+public class Console {
+
+  PrintStream oldOut, newOut;
+  PrintStream oldErr, newErr;
+  ByteArrayOutputStream newOutBuf, newErrBuf;
+
+  public void capture() {
+    oldErr = System.err;
+    newErrBuf = new ByteArrayOutputStream();
+    newErr = new PrintStream( newErrBuf );
+
+    oldOut = System.out; // I18N not required.
+    newOutBuf = new ByteArrayOutputStream();
+    newOut = new PrintStream( newOutBuf );
+
+    System.setErr( newErr );
+    System.setOut( newOut );
+  }
+
+  public byte[] getOut() {
+    return newOutBuf.toByteArray();
+  }
+
+  public byte[] getErr() {
+    return newErrBuf.toByteArray();
+  }
+
+  public void release() {
+    System.setErr( oldErr );
+    System.setOut( oldOut );
+    newErr.close();
+    newOut.close();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/knox/test/TestUtils.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/knox/test/TestUtils.java b/gateway-test-utils/src/main/java/org/apache/knox/test/TestUtils.java
new file mode 100644
index 0000000..5437ce1
--- /dev/null
+++ b/gateway-test-utils/src/main/java/org/apache/knox/test/TestUtils.java
@@ -0,0 +1,216 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.knox.test;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringWriter;
+import java.net.HttpURLConnection;
+import java.net.InetSocketAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.URL;
+import java.nio.ByteBuffer;
+import java.util.Properties;
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.log4j.Logger;
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.runtime.RuntimeConstants;
+import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
+import org.eclipse.jetty.http.HttpTester;
+import org.eclipse.jetty.servlet.ServletTester;
+
+public class TestUtils {
+
+  private static Logger LOG = Logger.getLogger(TestUtils.class);
+
+  public static final long SHORT_TIMEOUT = 1000L;
+  public static final long MEDIUM_TIMEOUT = 20 * 1000L;
+  public static final long LONG_TIMEOUT = 60 * 1000L;
+
+  public static String getResourceName( Class clazz, String name ) {
+    name = clazz.getName().replaceAll( "\\.", "/" ) + "/" + name;
+    return name;
+  }
+
+  public static URL getResourceUrl( Class clazz, String name ) throws FileNotFoundException {
+    name = getResourceName( clazz, name );
+    URL url = ClassLoader.getSystemResource( name );
+    if( url == null ) {
+      throw new FileNotFoundException( name );
+    }
+    return url;
+  }
+
+  public static URL getResourceUrl( String name ) throws FileNotFoundException {
+    URL url = ClassLoader.getSystemResource( name );
+    if( url == null ) {
+      throw new FileNotFoundException( name );
+    }
+    return url;
+  }
+
+  public static InputStream getResourceStream( String name ) throws IOException {
+    URL url = ClassLoader.getSystemResource( name );
+    InputStream stream = url.openStream();
+    return stream;
+  }
+
+  public static InputStream getResourceStream( Class clazz, String name ) throws IOException {
+    URL url = getResourceUrl( clazz, name );
+    InputStream stream = url.openStream();
+    return stream;
+  }
+
+  public static Reader getResourceReader( String name, String charset ) throws IOException {
+    return new InputStreamReader( getResourceStream( name ), charset );
+  }
+
+  public static Reader getResourceReader( Class clazz, String name, String charset ) throws IOException {
+    return new InputStreamReader( getResourceStream( clazz, name ), charset );
+  }
+
+  public static String getResourceString( Class clazz, String name, String charset ) throws IOException {
+    return IOUtils.toString( getResourceReader( clazz, name, charset ) );
+  }
+
+  public static File createTempDir( String prefix ) throws IOException {
+    File targetDir = new File( System.getProperty( "user.dir" ), "target" );
+    File tempDir = new File( targetDir, prefix + UUID.randomUUID() );
+    FileUtils.forceMkdir( tempDir );
+    return tempDir;
+  }
+
+  public static void LOG_ENTER() {
+    StackTraceElement caller = Thread.currentThread().getStackTrace()[2];
+    System.out.flush();
+    System.out.println( String.format( "Running %s#%s", caller.getClassName(), caller.getMethodName() ) );
+    System.out.flush();
+  }
+
+  public static void LOG_EXIT() {
+    StackTraceElement caller = Thread.currentThread().getStackTrace()[2];
+    System.out.flush();
+    System.out.println( String.format( "Exiting %s#%s", caller.getClassName(), caller.getMethodName() ) );
+    System.out.flush();
+  }
+
+  public static void awaitPortOpen( InetSocketAddress address, int timeout, int delay ) throws InterruptedException {
+    long maxTime = System.currentTimeMillis() + timeout;
+    do {
+      try {
+        Socket socket = new Socket();
+        socket.connect( address, delay );
+        socket.close();
+        return;
+      } catch ( IOException e ) {
+        //e.printStackTrace();
+      }
+    } while( System.currentTimeMillis() < maxTime );
+    throw new IllegalStateException( "Timed out " + timeout + " waiting for port " + address );
+  }
+
+  public static void awaitNon404HttpStatus( URL url, int timeout, int delay ) throws InterruptedException {
+    long maxTime = System.currentTimeMillis() + timeout;
+    do {
+      Thread.sleep( delay );
+      HttpURLConnection conn = null;
+      try {
+        conn = (HttpURLConnection)url.openConnection();
+        conn.getInputStream().close();
+        return;
+      } catch ( IOException e ) {
+        //e.printStackTrace();
+        try {
+          if( conn != null && conn.getResponseCode() != 404 ) {
+            return;
+          }
+        } catch ( IOException ee ) {
+          //ee.printStackTrace();
+        }
+      }
+    } while( System.currentTimeMillis() < maxTime );
+    throw new IllegalStateException( "Timed out " + timeout + " waiting for URL " + url );
+  }
+
+  public static String merge( String resource, Properties properties ) {
+    ClasspathResourceLoader loader = new ClasspathResourceLoader();
+    loader.getResourceStream( resource );
+
+    VelocityEngine engine = new VelocityEngine();
+    Properties config = new Properties();
+    config.setProperty( RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS, "org.apache.velocity.runtime.log.NullLogSystem" );
+    config.setProperty( RuntimeConstants.RESOURCE_LOADER, "classpath" );
+    config.setProperty( "classpath.resource.loader.class", ClasspathResourceLoader.class.getName() );
+    engine.init( config );
+
+    VelocityContext context = new VelocityContext( properties );
+    Template template = engine.getTemplate( resource );
+    StringWriter writer = new StringWriter();
+    template.merge( context, writer );
+    return writer.toString();
+  }
+
+  public static String merge( Class base, String resource, Properties properties ) {
+    String baseResource = base.getName().replaceAll( "\\.", "/" );
+    String fullResource = baseResource + "/" + resource;
+    return merge( fullResource, properties );
+  }
+
+  public static int findFreePort() throws IOException {
+    ServerSocket socket = new ServerSocket(0);
+    int port = socket.getLocalPort();
+    socket.close();
+    return port;
+  }
+
+  public static void waitUntilNextSecond() {
+    long before = System.currentTimeMillis();
+    long wait;
+    while( ( wait = ( 1000 - ( System.currentTimeMillis() - before ) ) ) > 0 ) {
+      try {
+        Thread.sleep( wait );
+      } catch( InterruptedException e ) {
+        // Ignore.
+      }
+    }
+  }
+
+  public static HttpTester.Response execute( ServletTester server, HttpTester.Request request ) throws Exception {
+    LOG.debug( "execute: request=" + request );
+    ByteBuffer requestBuffer = request.generate();
+    LOG.trace( "execute: requestBuffer=[" + new String(requestBuffer.array(),0,requestBuffer.limit()) + "]" );
+    ByteBuffer responseBuffer = server.getResponses( requestBuffer, 30, TimeUnit.SECONDS );
+    HttpTester.Response response = HttpTester.parseResponse( responseBuffer );
+    LOG.trace( "execute: responseBuffer=[" + new String(responseBuffer.array(),0,responseBuffer.limit()) + "]" );
+    LOG.debug( "execute: reponse=" + response );
+    return response;
+  }
+
+
+}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/knox/test/category/FastTests.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/knox/test/category/FastTests.java b/gateway-test-utils/src/main/java/org/apache/knox/test/category/FastTests.java
new file mode 100644
index 0000000..2360c17
--- /dev/null
+++ b/gateway-test-utils/src/main/java/org/apache/knox/test/category/FastTests.java
@@ -0,0 +1,21 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.knox.test.category;
+
+public interface FastTests {
+}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/knox/test/category/ManualTests.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/knox/test/category/ManualTests.java b/gateway-test-utils/src/main/java/org/apache/knox/test/category/ManualTests.java
new file mode 100644
index 0000000..0065357
--- /dev/null
+++ b/gateway-test-utils/src/main/java/org/apache/knox/test/category/ManualTests.java
@@ -0,0 +1,21 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.knox.test.category;
+
+public interface ManualTests {
+}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/knox/test/category/MediumTests.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/knox/test/category/MediumTests.java b/gateway-test-utils/src/main/java/org/apache/knox/test/category/MediumTests.java
new file mode 100644
index 0000000..f5d354b
--- /dev/null
+++ b/gateway-test-utils/src/main/java/org/apache/knox/test/category/MediumTests.java
@@ -0,0 +1,21 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.knox.test.category;
+
+public interface MediumTests {
+}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/knox/test/category/ReleaseTest.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/knox/test/category/ReleaseTest.java b/gateway-test-utils/src/main/java/org/apache/knox/test/category/ReleaseTest.java
new file mode 100644
index 0000000..6e2279e
--- /dev/null
+++ b/gateway-test-utils/src/main/java/org/apache/knox/test/category/ReleaseTest.java
@@ -0,0 +1,21 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.knox.test.category;
+
+public interface ReleaseTest {
+}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/knox/test/category/SlowTests.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/knox/test/category/SlowTests.java b/gateway-test-utils/src/main/java/org/apache/knox/test/category/SlowTests.java
new file mode 100644
index 0000000..3f0b50c
--- /dev/null
+++ b/gateway-test-utils/src/main/java/org/apache/knox/test/category/SlowTests.java
@@ -0,0 +1,21 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.knox.test.category;
+
+public interface SlowTests {
+}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/knox/test/category/UnitTests.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/knox/test/category/UnitTests.java b/gateway-test-utils/src/main/java/org/apache/knox/test/category/UnitTests.java
new file mode 100644
index 0000000..0d91e00
--- /dev/null
+++ b/gateway-test-utils/src/main/java/org/apache/knox/test/category/UnitTests.java
@@ -0,0 +1,21 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.knox.test.category;
+
+public interface UnitTests {
+}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/knox/test/category/VerifyTest.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/knox/test/category/VerifyTest.java b/gateway-test-utils/src/main/java/org/apache/knox/test/category/VerifyTest.java
new file mode 100644
index 0000000..825c08f
--- /dev/null
+++ b/gateway-test-utils/src/main/java/org/apache/knox/test/category/VerifyTest.java
@@ -0,0 +1,21 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.knox.test.category;
+
+public interface VerifyTest {
+}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/knox/test/log/CollectAppender.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/knox/test/log/CollectAppender.java b/gateway-test-utils/src/main/java/org/apache/knox/test/log/CollectAppender.java
new file mode 100644
index 0000000..3ab0c93
--- /dev/null
+++ b/gateway-test-utils/src/main/java/org/apache/knox/test/log/CollectAppender.java
@@ -0,0 +1,51 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.knox.test.log;
+
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.spi.LoggingEvent;
+
+public class CollectAppender extends AppenderSkeleton {
+
+  public CollectAppender() {
+    super();
+  }
+
+  public static BlockingQueue<LoggingEvent> queue = new LinkedBlockingQueue<LoggingEvent>();
+  public static boolean closed = false;
+
+  @Override
+  protected void append( LoggingEvent event ) {
+    event.getProperties();
+    queue.add( event );
+  }
+
+  @Override
+  public void close() {
+    closed = true;
+  }
+
+  @Override
+  public boolean requiresLayout() {
+    return false;
+  }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/knox/test/log/NoOpAppender.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/knox/test/log/NoOpAppender.java b/gateway-test-utils/src/main/java/org/apache/knox/test/log/NoOpAppender.java
new file mode 100644
index 0000000..80a7fce
--- /dev/null
+++ b/gateway-test-utils/src/main/java/org/apache/knox/test/log/NoOpAppender.java
@@ -0,0 +1,98 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.knox.test.log;
+
+import org.apache.log4j.Appender;
+import org.apache.log4j.Layout;
+import org.apache.log4j.Logger;
+import org.apache.log4j.spi.ErrorHandler;
+import org.apache.log4j.spi.Filter;
+import org.apache.log4j.spi.LoggingEvent;
+
+import java.util.Enumeration;
+
+public class NoOpAppender implements Appender {
+
+  public static Enumeration<Appender> setUp() {
+    Enumeration<Appender> appenders = (Enumeration<Appender>)Logger.getRootLogger().getAllAppenders();
+    Logger.getRootLogger().removeAllAppenders();
+    Logger.getRootLogger().addAppender( new NoOpAppender() );
+    return appenders;
+  }
+
+  public static void tearDown( Enumeration<Appender> appenders ) {
+    if( appenders != null ) {
+      while( appenders.hasMoreElements() ) {
+        Logger.getRootLogger().addAppender( appenders.nextElement() );
+      }
+    }
+  }
+
+  @Override
+  public void addFilter( Filter newFilter ) {
+  }
+
+  @Override
+  public Filter getFilter() {
+    return null;
+  }
+
+  @Override
+  public void clearFilters() {
+  }
+
+  @Override
+  public void close() {
+  }
+
+  @Override
+  public void doAppend( LoggingEvent event ) {
+  }
+
+  @Override
+  public String getName() {
+    return this.getClass().getName();
+  }
+
+  @Override
+  public void setErrorHandler( ErrorHandler errorHandler ) {
+  }
+
+  @Override
+  public ErrorHandler getErrorHandler() {
+    return null;
+  }
+
+  @Override
+  public void setLayout( Layout layout ) {
+  }
+
+  @Override
+  public Layout getLayout() {
+    return null;
+  }
+
+  @Override
+  public void setName( String name ) {
+  }
+
+  @Override
+  public boolean requiresLayout() {
+    return false;
+  }
+}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/knox/test/log/NoOpLogger.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/knox/test/log/NoOpLogger.java b/gateway-test-utils/src/main/java/org/apache/knox/test/log/NoOpLogger.java
new file mode 100644
index 0000000..2c6763f
--- /dev/null
+++ b/gateway-test-utils/src/main/java/org/apache/knox/test/log/NoOpLogger.java
@@ -0,0 +1,87 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.knox.test.log;
+
+import org.eclipse.jetty.util.log.Logger;
+
+public class NoOpLogger implements Logger {
+
+  @Override
+  public String getName() {
+    return "";
+  }
+
+  @Override
+  public void warn( String msg, Object... args ) {
+  }
+
+  @Override
+  public void warn( Throwable thrown ) {
+  }
+
+  @Override
+  public void warn( String msg, Throwable thrown ) {
+  }
+
+  @Override
+  public void info( String msg, Object... args ) {
+  }
+
+  @Override
+  public void info( Throwable thrown ) {
+  }
+
+  @Override
+  public void info( String msg, Throwable thrown ) {
+  }
+
+  @Override
+  public boolean isDebugEnabled() {
+    return false;
+  }
+
+  @Override
+  public void setDebugEnabled( boolean enabled ) {
+  }
+
+  @Override
+  public void debug( String msg, Object... args ) {
+  }
+
+  @Override
+  public void debug( String msg, long arg ) {
+  }
+
+  @Override
+  public void debug( Throwable thrown ) {
+  }
+
+  @Override
+  public void debug( String msg, Throwable thrown ) {
+  }
+
+  @Override
+  public Logger getLogger( String name ) {
+    return this;
+  }
+
+  @Override
+  public void ignore( Throwable ignored ) {
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/knox/blob/1451428f/gateway-test-utils/src/main/java/org/apache/knox/test/mock/MockFilterConfig.java
----------------------------------------------------------------------
diff --git a/gateway-test-utils/src/main/java/org/apache/knox/test/mock/MockFilterConfig.java b/gateway-test-utils/src/main/java/org/apache/knox/test/mock/MockFilterConfig.java
new file mode 100644
index 0000000..39a3625
--- /dev/null
+++ b/gateway-test-utils/src/main/java/org/apache/knox/test/mock/MockFilterConfig.java
@@ -0,0 +1,46 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.knox.test.mock;
+
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletContext;
+import java.util.Enumeration;
+
+public class MockFilterConfig implements FilterConfig {
+
+  @Override
+  public String getFilterName() {
+    return null;
+  }
+
+  @Override
+  public ServletContext getServletContext() {
+    return null;
+  }
+
+  @Override
+  public String getInitParameter( String s ) {
+    return null;
+  }
+
+  @Override
+  public Enumeration<String> getInitParameterNames() {
+    return null;
+  }
+
+}