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 2018/01/11 17:38:59 UTC
[32/53] [abbrv] knox git commit: Merge branch 'master' into
KNOX-998-Package_Restructuring
http://git-wip-us.apache.org/repos/asf/knox/blob/22a7304a/gateway-spi/src/main/java/org/apache/knox/gateway/config/GatewayConfig.java
----------------------------------------------------------------------
diff --cc gateway-spi/src/main/java/org/apache/knox/gateway/config/GatewayConfig.java
index 0ed7556,0000000..882bc71
mode 100644,000000..100644
--- a/gateway-spi/src/main/java/org/apache/knox/gateway/config/GatewayConfig.java
+++ b/gateway-spi/src/main/java/org/apache/knox/gateway/config/GatewayConfig.java
@@@ -1,302 -1,0 +1,352 @@@
+/**
+ * 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.gateway.config;
+
+import java.net.InetSocketAddress;
+import java.net.UnknownHostException;
+import java.util.List;
+import java.util.Map;
+
+public interface GatewayConfig {
+
+ // Used as the basis for any home directory that is not specified.
+ static final String GATEWAY_HOME_VAR = "GATEWAY_HOME";
+
+ // Variable name for the location of configuration files edited by users
+ static final String GATEWAY_CONF_HOME_VAR = "GATEWAY_CONF_HOME";
+
+ // Variable name for the location of data files generated by the gateway at runtime.
+ static final String GATEWAY_DATA_HOME_VAR = "GATEWAY_DATA_HOME";
+
+ public static final String GATEWAY_CONFIG_ATTRIBUTE = "org.apache.knox.gateway.config";
+ public static final String HADOOP_KERBEROS_SECURED = "gateway.hadoop.kerberos.secured";
+ public static final String KRB5_CONFIG = "java.security.krb5.conf";
+ public static final String KRB5_DEBUG = "sun.security.krb5.debug";
+ public static final String KRB5_LOGIN_CONFIG = "java.security.auth.login.config";
+ public static final String KRB5_USE_SUBJECT_CREDS_ONLY = "javax.security.auth.useSubjectCredsOnly";
+ public static final String SIGNING_KEYSTORE_NAME = "gateway.signing.keystore.name";
+ public static final String SIGNING_KEY_ALIAS = "gateway.signing.key.alias";
+
++ String REMOTE_CONFIG_REGISTRY_TYPE = "type";
++ String REMOTE_CONFIG_REGISTRY_ADDRESS = "address";
++ String REMOTE_CONFIG_REGISTRY_NAMESPACE = "namespace";
++ String REMOTE_CONFIG_REGISTRY_AUTH_TYPE = "authType";
++ String REMOTE_CONFIG_REGISTRY_PRINCIPAL = "principal";
++ String REMOTE_CONFIG_REGISTRY_CREDENTIAL_ALIAS = "credentialAlias";
++ String REMOTE_CONFIG_REGISTRY_KEYTAB = "keytab";
++ String REMOTE_CONFIG_REGISTRY_USE_KEYTAB = "useKeytab";
++ String REMOTE_CONFIG_REGISTRY_USE_TICKET_CACHE = "useTicketCache";
++
+ /**
+ * The location of the gateway configuration.
+ * Subdirectories will be: topologies
+ * @return The location of the gateway configuration.
+ */
+ String getGatewayConfDir();
+
+ /**
+ * The location of the gateway runtime generated data.
+ * Subdirectories will be security, deployments
+ * @return The location of the gateway runtime generated data.
+ */
+ String getGatewayDataDir();
+
+ /**
+ * The location of the gateway services definition's root directory
+ * @return The location of the gateway services top level directory.
+ */
+ String getGatewayServicesDir();
+
+ /**
+ * The location of the gateway applications's root directory
+ * @return The location of the gateway applications top level directory.
+ */
+ String getGatewayApplicationsDir();
+
+ String getHadoopConfDir();
+
+ String getGatewayHost();
+
+ int getGatewayPort();
+
+ String getGatewayPath();
+
++ String getGatewayProvidersConfigDir();
++
++ String getGatewayDescriptorsDir();
++
+ String getGatewayTopologyDir();
+
+ String getGatewaySecurityDir();
+
+ String getGatewayDeploymentDir();
+
+ InetSocketAddress getGatewayAddress() throws UnknownHostException;
+
+ boolean isSSLEnabled();
+
+ List<String> getExcludedSSLProtocols();
+
+ List<String> getIncludedSSLCiphers();
+
+ List<String> getExcludedSSLCiphers();
+
+ boolean isHadoopKerberosSecured();
+
+ String getKerberosConfig();
+
+ boolean isKerberosDebugEnabled();
+
+ String getKerberosLoginConfig();
+
+ String getDefaultTopologyName();
+
+ String getDefaultAppRedirectPath();
+
+ String getFrontendUrl();
+
+ boolean isClientAuthNeeded();
+
+ boolean isClientAuthWanted();
+
+ String getTruststorePath();
+
+ boolean getTrustAllCerts();
+
+ String getKeystoreType();
+
+ String getTruststoreType();
+
+ boolean isXForwardedEnabled();
+
+ String getEphemeralDHKeySize();
+
+ int getHttpClientMaxConnections();
+
+ int getHttpClientConnectionTimeout();
+
+ int getHttpClientSocketTimeout();
+
+ int getThreadPoolMax();
+
+ int getHttpServerRequestBuffer();
+
+ int getHttpServerRequestHeaderBuffer();
+
+ int getHttpServerResponseBuffer();
+
+ int getHttpServerResponseHeaderBuffer();
+
+ int getGatewayDeploymentsBackupVersionLimit();
+
+ long getGatewayDeploymentsBackupAgeLimit();
+
+ long getGatewayIdleTimeout();
+
+ String getSigningKeystoreName();
+
+ String getSigningKeyAlias();
+
+ List<String> getGlobalRulesServices();
+
+ /**
+ * Returns true if websocket feature enabled else false.
+ * Default is false.
+ * @since 0.10
+ * @return
+ */
+ boolean isWebsocketEnabled();
+
+ /**
+ * Websocket connection max text message size.
+ * @since 0.10
+ * @return
+ */
+ int getWebsocketMaxTextMessageSize();
+
+ /**
+ * Websocket connection max binary message size.
+ * @since 0.10
+ * @return
+ */
+ int getWebsocketMaxBinaryMessageSize();
+
+ /**
+ * Websocket connection max text message buffer size.
+ * @since 0.10
+ * @return
+ */
+ int getWebsocketMaxTextMessageBufferSize();
+
+ /**
+ * Websocket connection max binary message buffer size.
+ * @since 0.10
+ * @return
+ */
+ int getWebsocketMaxBinaryMessageBufferSize();
+
+ /**
+ * Websocket connection input buffer size.
+ * @since 0.10
+ * @return
+ */
+ int getWebsocketInputBufferSize();
+
+ /**
+ * Websocket connection async write timeout.
+ * @since 0.10
+ * @return
+ */
+ int getWebsocketAsyncWriteTimeout();
+
+ /**
+ * Websocket connection idle timeout.
+ * @since 0.10
+ * @return
+ */
+ int getWebsocketIdleTimeout();
+
+ boolean isMetricsEnabled();
+
+ boolean isJmxMetricsReportingEnabled();
+
+ boolean isGraphiteMetricsReportingEnabled();
+
+ String getGraphiteHost();
+
+ int getGraphitePort();
+
+ int getGraphiteReportingFrequency();
+
+ /**
+ * List of MIME Type to be compressed.
+ * @since 0.12
+ */
+ List<String> getMimeTypesToCompress();
+
+ /**
+ * Enable cookie scoping to gateway path
+ *
+ * @since 0.13
+ */
+ boolean isCookieScopingToPathEnabled();
+
+ /**
+ * Configured name of the HTTP Header that is expected
+ * to be set by a proxy in front of the gateway.
+ * @return
+ */
+ String getHeaderNameForRemoteAddress();
+
+ /**
+ * Configured Algorithm name to be used by the CryptoService
+ * and MasterService implementations
+ * @return
+ */
+ String getAlgorithm();
+
+ /**
+ * Configured Algorithm name to be used by the CryptoService
+ * for password based encryption
+ * @return
+ */
+ String getPBEAlgorithm();
+
+ /**
+ * Configured Transformation name to be used by the CryptoService
+ * and MasterService implementations
+ * @return
+ */
+ String getTransformation();
+
+ /**
+ * Configured SaltSize to be used by the CryptoService
+ * and MasterService implementations
+ * @return
+ */
+ String getSaltSize();
+
+ /**
+ * Configured IterationCount to be used by the CryptoService
+ * and MasterService implementations
+ * @return
+ */
+ String getIterationCount();
+
+ /**
+ * Configured KeyLength to be used by the CryptoService
+ * and MasterService implementations
+ * @return
+ */
+ String getKeyLength();
+
+ /**
+ * Map of Topology names and their ports.
+ *
+ * @return
+ */
+ Map<String, Integer> getGatewayPortMappings();
+
+ /**
+ * Is the Port Mapping feature on
+ * @return
+ */
+ boolean isGatewayPortMappingEnabled();
+
+ /**
+ * Is the Server header suppressed
+ * @return
+ */
+ boolean isGatewayServerHeaderEnabled();
++
++ /**
++ *
++ * @param type The type of cluster configuration monitor for which the interval should be returned.
++ *
++ * @return The polling interval configuration value, or -1 if it has not been configured.
++ */
++ int getClusterMonitorPollingInterval(String type);
++
++ /**
++ *
++ * @param type The type of cluster configuration monitor for which the interval should be returned.
++ *
++ * @return The enabled status of the specified type of cluster configuration monitor.
++ */
++ boolean isClusterMonitorEnabled(String type);
++
++ /**
++ * @return The list of the names of any remote registry configurations defined herein.
++ */
++ List<String> getRemoteRegistryConfigurationNames();
++
++ /**
++ *
++ * @param name The name of the remote registry configuration
++ *
++ * @return The configuration associated with the specified name.
++ */
++ String getRemoteRegistryConfiguration(String name);
++
++ /**
++ *
++ * @return The name of a remote configuration registry client
++ */
++ String getRemoteConfigurationMonitorClientName();
++
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/22a7304a/gateway-spi/src/main/java/org/apache/knox/gateway/services/GatewayServices.java
----------------------------------------------------------------------
diff --cc gateway-spi/src/main/java/org/apache/knox/gateway/services/GatewayServices.java
index 4a30800,0000000..8912c98
mode 100644,000000..100644
--- a/gateway-spi/src/main/java/org/apache/knox/gateway/services/GatewayServices.java
+++ b/gateway-spi/src/main/java/org/apache/knox/gateway/services/GatewayServices.java
@@@ -1,46 -1,0 +1,50 @@@
+/**
+ * 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.gateway.services;
+
+import java.util.Collection;
+
+import org.apache.knox.gateway.deploy.ProviderDeploymentContributor;
+
+public interface GatewayServices extends Service,
+ ProviderDeploymentContributor {
+
+ public static final String GATEWAY_CLUSTER_ATTRIBUTE = "org.apache.knox.gateway.gateway.cluster";
+ public static final String GATEWAY_SERVICES_ATTRIBUTE = "org.apache.knox.gateway.gateway.services";
+
+ public static final String SSL_SERVICE = "SSLService";
+ public static final String CRYPTO_SERVICE = "CryptoService";
+ public static final String ALIAS_SERVICE = "AliasService";
+ public static final String KEYSTORE_SERVICE = "KeystoreService";
+ public static final String TOKEN_SERVICE = "TokenService";
+ public static final String SERVICE_REGISTRY_SERVICE = "ServiceRegistryService";
+ public static final String HOST_MAPPING_SERVICE = "HostMappingService";
+ public static final String SERVER_INFO_SERVICE = "ServerInfoService";
+ public static final String TOPOLOGY_SERVICE = "TopologyService";
+ public static final String SERVICE_DEFINITION_REGISTRY = "ServiceDefinitionRegistry";
+ public static final String METRICS_SERVICE = "MetricsService";
+
++ String REMOTE_REGISTRY_CLIENT_SERVICE = "RemoteConfigRegistryClientService";
++
++ String CLUSTER_CONFIGURATION_MONITOR_SERVICE = "ClusterConfigurationMonitorService";
++
+ public abstract Collection<String> getServiceNames();
+
+ public abstract <T> T getService( String serviceName );
+
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/22a7304a/gateway-test-release-utils/src/main/java/org/apache/knox/gateway/GatewayTestConfig.java
----------------------------------------------------------------------
diff --cc gateway-test-release-utils/src/main/java/org/apache/knox/gateway/GatewayTestConfig.java
index 8abf5aa,0000000..79a9292
mode 100644,000000..100644
--- a/gateway-test-release-utils/src/main/java/org/apache/knox/gateway/GatewayTestConfig.java
+++ b/gateway-test-release-utils/src/main/java/org/apache/knox/gateway/GatewayTestConfig.java
@@@ -1,617 -1,0 +1,653 @@@
+/**
+ * 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.gateway;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.knox.gateway.config.GatewayConfig;
+
+import java.io.File;
+import java.net.InetSocketAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
++import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class GatewayTestConfig extends Configuration implements GatewayConfig {
+
+ /* Websocket defaults */
+ public static final boolean DEFAULT_WEBSOCKET_FEATURE_ENABLED = false;
+ public static final int DEFAULT_WEBSOCKET_MAX_TEXT_MESSAGE_SIZE = Integer.MAX_VALUE;;
+ public static final int DEFAULT_WEBSOCKET_MAX_BINARY_MESSAGE_SIZE = Integer.MAX_VALUE;;
+ public static final int DEFAULT_WEBSOCKET_MAX_TEXT_MESSAGE_BUFFER_SIZE = 32768;
+ public static final int DEFAULT_WEBSOCKET_MAX_BINARY_MESSAGE_BUFFER_SIZE = 32768;
+ public static final int DEFAULT_WEBSOCKET_INPUT_BUFFER_SIZE = 4096;
+ public static final int DEFAULT_WEBSOCKET_ASYNC_WRITE_TIMEOUT = 60000;
+ public static final int DEFAULT_WEBSOCKET_IDLE_TIMEOUT = 300000;
+
+ private String gatewayHomeDir = "gateway-home";
+ private String hadoopConfDir = "hadoop";
+ private String gatewayHost = "localhost";
+ private int gatewayPort = 0;
+ private String gatewayPath = "gateway";
+ private boolean hadoopKerberosSecured = false;
+ private String kerberosConfig = "/etc/knox/conf/krb5.conf";
+ private boolean kerberosDebugEnabled = false;
+ private String kerberosLoginConfig = "/etc/knox/conf/krb5JAASLogin.conf";
+ private String frontendUrl = null;
+ private boolean xForwardedEnabled = true;
+ private String gatewayApplicationsDir = null;
+ private String gatewayServicesDir;
+ private String defaultTopologyName = "default";
+ private List<String> includedSSLCiphers = null;
+ private List<String> excludedSSLCiphers = null;
+ private boolean sslEnabled = false;
+ private String truststoreType = "jks";
+ private String keystoreType = "jks";
+ private boolean isTopologyPortMappingEnabled = true;
+ private ConcurrentHashMap<String, Integer> topologyPortMapping = new ConcurrentHashMap<>();
+ private int backupVersionLimit = -1;
+ private long backupAgeLimit = -1;
+
+ public void setGatewayHomeDir( String gatewayHomeDir ) {
+ this.gatewayHomeDir = gatewayHomeDir;
+ }
+
+ public String getGatewayHomeDir() {
+ return this.gatewayHomeDir;
+ }
+
+ @Override
+ public String getGatewayConfDir() {
+ return gatewayHomeDir;
+ }
+
+ @Override
+ public String getGatewayDataDir() {
+ return gatewayHomeDir;
+ }
+
+ @Override
+ public String getGatewaySecurityDir() {
+ return gatewayHomeDir + "/security";
+ }
+
+ @Override
+ public String getGatewayTopologyDir() {
+ return gatewayHomeDir + "/topologies";
+ }
+
+ @Override
+ public String getGatewayDeploymentDir() {
+ return gatewayHomeDir + "/deployments";
+ }
+
+// public void setDeploymentDir( String clusterConfDir ) {
+// this.deployDir = clusterConfDir;
+// }
+
+ @Override
+ public String getHadoopConfDir() {
+ return hadoopConfDir;
+ }
+
+// public void setHadoopConfDir( String hadoopConfDir ) {
+// this.hadoopConfDir = hadoopConfDir;
+// }
+
+ @Override
+ public String getGatewayHost() {
+ return gatewayHost;
+ }
+
+// public void setGatewayHost( String gatewayHost ) {
+// this.gatewayHost = gatewayHost;
+// }
+
+ @Override
+ public int getGatewayPort() {
+ return gatewayPort;
+ }
+
+// public void setGatewayPort( int gatewayPort ) {
+// this.gatewayPort = gatewayPort;
+// }
+
+ @Override
+ public String getGatewayPath() {
+ return gatewayPath;
+ }
+
+ public void setGatewayPath( String gatewayPath ) {
+ this.gatewayPath = gatewayPath;
+ }
+
+ @Override
+ public InetSocketAddress getGatewayAddress() throws UnknownHostException {
+ return new InetSocketAddress( getGatewayHost(), getGatewayPort() );
+ }
+
+
+ public long getGatewayIdleTimeout() {
+ return 0l;
+ }
+
+ @Override
+ public boolean isSSLEnabled() {
+ return sslEnabled;
+ }
+
+ public void setSSLEnabled( boolean sslEnabled ) {
+ this.sslEnabled = sslEnabled;
+ }
+
+ @Override
+ public boolean isHadoopKerberosSecured() {
+ return hadoopKerberosSecured;
+ }
+
+ public void setHadoopKerberosSecured(boolean hadoopKerberosSecured) {
+ this.hadoopKerberosSecured = hadoopKerberosSecured;
+ }
+
+ @Override
+ public String getKerberosConfig() {
+ return kerberosConfig;
+ }
+
+ public void setKerberosConfig(String kerberosConfig) {
+ this.kerberosConfig = kerberosConfig;
+ }
+
+ @Override
+ public boolean isKerberosDebugEnabled() {
+ return kerberosDebugEnabled;
+ }
+
+ public void setKerberosDebugEnabled(boolean kerberosDebugEnabled) {
+ this.kerberosDebugEnabled = kerberosDebugEnabled;
+ }
+
+ @Override
+ public String getKerberosLoginConfig() {
+ return kerberosLoginConfig;
+ }
+
+ @Override
+ public String getDefaultTopologyName() {
+ return defaultTopologyName;
+ }
+
+ public void setDefaultTopologyName( String defaultTopologyName ) {
+ this.defaultTopologyName = defaultTopologyName;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getDefaultAppRedirectPath()
+ */
+ @Override
+ public String getDefaultAppRedirectPath() {
+
+ if(StringUtils.isBlank(this.defaultTopologyName)) {
+ return "/gateway/sandbox";
+ } else {
+ return "/gateway/"+this.defaultTopologyName;
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getFrontendUrl()
+ */
+ @Override
+ public String getFrontendUrl() { return frontendUrl; }
+
+ public void setFrontendUrl( String frontendUrl ) {
+ this.frontendUrl = frontendUrl;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getExcludedSSLProtocols()
+ */
+ @Override
+ public List getExcludedSSLProtocols() {
+ List<String> protocols = new ArrayList<String>();
+ protocols.add("SSLv3");
+ return protocols;
+ }
+
+ @Override
+ public List getIncludedSSLCiphers() {
+ return includedSSLCiphers;
+ }
+
+ public void setIncludedSSLCiphers( List<String> list ) {
+ includedSSLCiphers = list;
+ }
+
+ @Override
+ public List getExcludedSSLCiphers() {
+ return excludedSSLCiphers;
+ }
+
+ public void setExcludedSSLCiphers( List<String> list ) {
+ excludedSSLCiphers = list;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#isClientAuthNeeded()
+ */
+ @Override
+ public boolean isClientAuthNeeded() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getTruststorePath()
+ */
+ @Override
+ public String getTruststorePath() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getTrustAllCerts()
+ */
+ @Override
+ public boolean getTrustAllCerts() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getTruststoreType()
+ */
+ @Override
+ public String getTruststoreType() {
+ return truststoreType;
+ }
+
+ public void setTruststoreType( String truststoreType ) {
+ this.truststoreType = truststoreType;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getKeystoreType()
+ */
+ @Override
+ public String getKeystoreType() {
+ return keystoreType;
+ }
+
+ public void setKeystoreType( String keystoreType ) {
+ this.keystoreType = keystoreType;
+ }
+
+ public void setKerberosLoginConfig(String kerberosLoginConfig) {
+ this.kerberosLoginConfig = kerberosLoginConfig;
+ }
+
+ @Override
+ public String getGatewayServicesDir() {
+ if( gatewayServicesDir != null ) {
+ return gatewayServicesDir;
+ } else {
+ File targetDir = new File( System.getProperty( "user.dir" ), "target/services" );
+ return targetDir.getPath();
+ }
+ }
+
+ public void setGatewayServicesDir( String gatewayServicesDir ) {
+ this.gatewayServicesDir = gatewayServicesDir;
+ }
+
+ @Override
+ public String getGatewayApplicationsDir() {
+ if( gatewayApplicationsDir != null ) {
+ return gatewayApplicationsDir;
+ } else {
+ return getGatewayConfDir() + "/applications";
+ }
+ }
+
+ public void setGatewayApplicationsDir( String gatewayApplicationsDir ) {
+ this.gatewayApplicationsDir = gatewayApplicationsDir;
+ }
+
+ @Override
+ public boolean isXForwardedEnabled() {
+ return xForwardedEnabled;
+ }
+
+ public void setXForwardedEnabled(boolean enabled) {
+ xForwardedEnabled = enabled;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getEphemeralDHKeySize()
+ */
+ @Override
+ public String getEphemeralDHKeySize() {
+ return "2048";
+ }
+
+ @Override
+ public int getHttpClientMaxConnections() {
+ return 16;
+ }
+
+ @Override
+ public int getHttpClientConnectionTimeout() {
+ return -1;
+ }
+
+ @Override
+ public int getHttpClientSocketTimeout() {
+ return -1;
+ }
+
+ @Override
+ public int getThreadPoolMax() {
- return 16;
++ return 254;
+ }
+
+ @Override
+ public int getHttpServerRequestBuffer() {
+ return 16*1024;
+ }
+
+ @Override
+ public int getHttpServerRequestHeaderBuffer() {
+ return 8*1024;
+ }
+
+ @Override
+ public int getHttpServerResponseBuffer() {
+ return 32*1024;
+ }
+
+ @Override
+ public int getHttpServerResponseHeaderBuffer() {
+ return 8*1024;
+ }
+
+ public void setGatewayDeploymentsBackupVersionLimit( int newBackupVersionLimit ) {
+ backupVersionLimit = newBackupVersionLimit;
+ }
+
+ public int getGatewayDeploymentsBackupVersionLimit() {
+ return backupVersionLimit;
+ }
+
+ public void setTopologyPortMapping(ConcurrentHashMap<String, Integer> topologyPortMapping) {
+ this.topologyPortMapping = topologyPortMapping;
+ }
+
+ public void setGatewayPortMappingEnabled(
+ boolean topologyPortMappingEnabled) {
+ isTopologyPortMappingEnabled = topologyPortMappingEnabled;
+ }
+
+ @Override
+ public long getGatewayDeploymentsBackupAgeLimit() {
+ return backupAgeLimit;
+ }
+
+ public void setGatewayDeploymentsBackupAgeLimit( long newBackupAgeLimit ) {
+ backupAgeLimit = newBackupAgeLimit;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getSigningKeystoreName()
+ */
+ @Override
+ public String getSigningKeystoreName() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getSigningKeyAlias()
+ */
+ @Override
+ public String getSigningKeyAlias() {
+ return null;
+ }
+
+ @Override
+ public List<String> getGlobalRulesServices() {
+ ArrayList<String> services = new ArrayList<>();
+ services.add("WEBHDFS");
+ services.add("HBASE");
+ services.add("HIVE");
+ services.add("OOZIE");
+ services.add("RESOURCEMANAGER");
+ services.add("STORM");
+ return services;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#isWebsocketEnabled()
+ */
+ @Override
+ public boolean isWebsocketEnabled() {
+ return DEFAULT_WEBSOCKET_FEATURE_ENABLED;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getWebsocketMaxTextMessageSize()
+ */
+ @Override
+ public int getWebsocketMaxTextMessageSize() {
+ return DEFAULT_WEBSOCKET_MAX_TEXT_MESSAGE_SIZE;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getWebsocketMaxBinaryMessageSize()
+ */
+ @Override
+ public int getWebsocketMaxBinaryMessageSize() {
+ return DEFAULT_WEBSOCKET_MAX_BINARY_MESSAGE_SIZE;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getWebsocketMaxTextMessageBufferSize()
+ */
+ @Override
+ public int getWebsocketMaxTextMessageBufferSize() {
+ return DEFAULT_WEBSOCKET_MAX_TEXT_MESSAGE_BUFFER_SIZE;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getWebsocketMaxBinaryMessageBufferSize()
+ */
+ @Override
+ public int getWebsocketMaxBinaryMessageBufferSize() {
+ return DEFAULT_WEBSOCKET_MAX_BINARY_MESSAGE_BUFFER_SIZE;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getWebsocketInputBufferSize()
+ */
+ @Override
+ public int getWebsocketInputBufferSize() {
+ return DEFAULT_WEBSOCKET_INPUT_BUFFER_SIZE;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getWebsocketAsyncWriteTimeout()
+ */
+ @Override
+ public int getWebsocketAsyncWriteTimeout() {
+ return DEFAULT_WEBSOCKET_ASYNC_WRITE_TIMEOUT;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getWebsocketIdleTimeout()
+ */
+ @Override
+ public int getWebsocketIdleTimeout() {
+ return DEFAULT_WEBSOCKET_IDLE_TIMEOUT;
+ }
+
+ @Override
+ public boolean isMetricsEnabled() {
+ return false;
+ }
+
+ @Override
+ public boolean isJmxMetricsReportingEnabled() {
+ return false;
+ }
+
+ @Override
+ public boolean isGraphiteMetricsReportingEnabled() {
+ return false;
+ }
+
+ @Override
+ public String getGraphiteHost() {
+ return null;
+ }
+
+ @Override
+ public int getGraphitePort() {
+ return 0;
+ }
+
+ @Override
+ public int getGraphiteReportingFrequency() {
+ return 0;
+ }
+
+ /* (non-Javadoc)
+ * @see GatewayConfig#getMimeTypesToCompress()
+ */
+ @Override
+ public List<String> getMimeTypesToCompress() {
+ return new ArrayList<String>();
+ }
+
+ @Override
+ public boolean isCookieScopingToPathEnabled() {
+ return false;
+ }
+
+ @Override
+ public String getHeaderNameForRemoteAddress() {
+ return "X-Forwarded-For";
+ }
+
+ @Override
+ public String getAlgorithm() {
+ return null;
+ }
+
+ @Override
+ public String getPBEAlgorithm() {
+ return null;
+ }
+
+ @Override
+ public String getTransformation() {
+ return null;
+ }
+
+ @Override
+ public String getSaltSize() {
+ return null;
+ }
+
+ @Override
+ public String getIterationCount() {
+ return null;
+ }
+
+ @Override
+ public String getKeyLength() {
+ return null;
+ }
+
+ /**
+ * Map of Topology names and their ports.
+ *
+ * @return
+ */
+ @Override
+ public Map<String, Integer> getGatewayPortMappings() {
+ return topologyPortMapping;
+ }
+
+ /**
+ * Is the Port Mapping feature on ?
+ *
+ * @return
+ */
+ @Override
+ public boolean isGatewayPortMappingEnabled() {
+ return isTopologyPortMappingEnabled;
+ }
+
+ @Override
+ public boolean isGatewayServerHeaderEnabled() {
+ return false;
+ }
+
+ @Override
+ public boolean isClientAuthWanted() {
+ return false;
+ }
++
++ @Override
++ public String getGatewayProvidersConfigDir() {
++ return null;
++ }
++
++ @Override
++ public String getGatewayDescriptorsDir() {
++ return null;
++ }
++
++ @Override
++ public List<String> getRemoteRegistryConfigurationNames() {
++ return Collections.emptyList();
++ }
++
++ @Override
++ public String getRemoteRegistryConfiguration(String s) {
++ return null;
++ }
++
++ @Override
++ public String getRemoteConfigurationMonitorClientName() {
++ return null;
++ }
++
++ @Override
++ public int getClusterMonitorPollingInterval(String type) {
++ return 600;
++ }
++
++ @Override
++ public boolean isClusterMonitorEnabled(String type) {
++ return false;
++ }
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/22a7304a/gateway-test-utils/src/main/java/org/apache/knox/test/TestUtils.java
----------------------------------------------------------------------
diff --cc gateway-test-utils/src/main/java/org/apache/knox/test/TestUtils.java
index 5437ce1,0000000..e5ed5c9
mode 100644,000000..100644
--- 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
@@@ -1,216 -1,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 MEDIUM_TIMEOUT = 30 * 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;
+ }
+
+
+}