/* * Copyright 2010 Proofpoint, Inc. * * Licensed 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 io.airlift.http.server; import com.google.common.collect.ImmutableMap; import io.airlift.configuration.testing.ConfigAssertions; import io.airlift.units.DataSize; import io.airlift.units.Duration; import org.testng.annotations.Test; import java.util.Map; import java.util.concurrent.TimeUnit; public class TestHttpServerConfig { @Test public void testDefaults() { ConfigAssertions.assertRecordedDefaults(ConfigAssertions.recordDefaults(HttpServerConfig.class) .setHttpEnabled(true) .setHttpPort(8080) .setHttpAcceptQueueSize(8000) .setHttpsEnabled(false) .setHttpsPort(8443) .setSecureRandomAlgorithm(null) .setHttpsIncludedCipherSuites("") .setHttpsExcludedCipherSuites("") .setKeystorePath(null) .setKeystorePassword(null) .setLogPath("var/log/http-request.log") .setLogEnabled(true) .setLogMaxFileSize(new DataSize(Long.MAX_VALUE, DataSize.Unit.BYTE)) .setLogHistory(15) .setHttpAcceptorThreads(null) .setHttpSelectorThreads(null) .setHttpsAcceptorThreads(null) .setHttpsSelectorThreads(null) .setMinThreads(2) .setMaxThreads(200) .setThreadMaxIdleTime(new Duration(1, TimeUnit.MINUTES)) .setNetworkMaxIdleTime(new Duration(200, TimeUnit.SECONDS)) .setUserAuthFile(null) .setAdminEnabled(true) .setAdminPort(0) .setAdminMinThreads(2) .setAdminMaxThreads(200) .setMaxRequestHeaderSize(null) .setHttp2MaxConcurrentStreams(16384) .setShowStackTrace(true) ); } @Test public void testExplicitPropertyMappings() { Map<String, String> properties = new ImmutableMap.Builder<String, String>() .put("http-server.http.enabled", "false") .put("http-server.http.port", "1") .put("http-server.accept-queue-size", "1024") .put("http-server.https.enabled", "true") .put("http-server.https.port", "2") .put("http-server.https.keystore.path", "/keystore") .put("http-server.https.keystore.key", "keystore password") .put("http-server.https.secure-random-algorithm", "NativePRNG") .put("http-server.https.included-cipher", "TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA") .put("http-server.https.excluded-cipher", "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA") .put("http-server.log.path", "/log") .put("http-server.log.enabled", "false") .put("http-server.log.max-size", "1GB") .put("http-server.log.max-history", "1") .put("http-server.http.acceptor-threads", "10") .put("http-server.http.selector-threads", "11") .put("http-server.https.acceptor-threads", "12") .put("http-server.https.selector-threads", "13") .put("http-server.threads.min", "100") .put("http-server.threads.max", "500") .put("http-server.threads.max-idle-time", "10m") .put("http-server.net.max-idle-time", "20m") .put("http-server.auth.users-file", "/auth") .put("http-server.admin.enabled", "false") .put("http-server.admin.port", "3") .put("http-server.admin.threads.min", "3") .put("http-server.admin.threads.max", "4") .put("http-server.max-request-header-size", "32kB") .put("http-server.http2.max-concurrent-streams", "1234") .put("http-server.show-stack-trace", "false") .build(); HttpServerConfig expected = new HttpServerConfig() .setHttpEnabled(false) .setHttpPort(1) .setHttpAcceptQueueSize(1024) .setHttpsEnabled(true) .setHttpsPort(2) .setHttpsIncludedCipherSuites("TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA") .setHttpsExcludedCipherSuites("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA") .setKeystorePath("/keystore") .setKeystorePassword("keystore password") .setSecureRandomAlgorithm("NativePRNG") .setLogPath("/log") .setLogEnabled(false) .setLogMaxFileSize(new DataSize(1, DataSize.Unit.GIGABYTE)) .setLogHistory(1) .setHttpAcceptorThreads(10) .setHttpSelectorThreads(11) .setHttpsAcceptorThreads(12) .setHttpsSelectorThreads(13) .setMinThreads(100) .setMaxThreads(500) .setThreadMaxIdleTime(new Duration(10, TimeUnit.MINUTES)) .setNetworkMaxIdleTime(new Duration(20, TimeUnit.MINUTES)) .setMaxRequestHeaderSize(new DataSize(32, DataSize.Unit.KILOBYTE)) .setUserAuthFile("/auth") .setAdminEnabled(false) .setAdminPort(3) .setAdminMinThreads(3) .setAdminMaxThreads(4) .setHttp2MaxConcurrentStreams(1234) .setShowStackTrace(false); ConfigAssertions.assertFullMapping(properties, expected); } }