/* * Copyright 2016 Composable Systems Limited * * 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 systems.composable.dropwizard.cassandra.pooling; import com.datastax.driver.core.HostDistance; import com.datastax.driver.core.PoolingOptions; import io.dropwizard.util.Duration; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; public class PoolingOptionsFactoryTest { @Test public void buildsPoolingOptionsWithConfiguredValues() throws Exception { // given final PoolingOptionsFactory factory = new PoolingOptionsFactory(); factory.setHeartbeatInterval(Duration.minutes(1)); factory.setPoolTimeout(Duration.seconds(2)); factory.setLocal(createHostDistanceOptions(1, 3, 5, 25)); factory.setRemote(createHostDistanceOptions(2, 4, 6, 30)); // when final PoolingOptions poolingOptions = factory.build(); // then assertThat(poolingOptions.getHeartbeatIntervalSeconds()).isEqualTo(60); assertThat(poolingOptions.getPoolTimeoutMillis()).isEqualTo(2000); assertThat(poolingOptions.getCoreConnectionsPerHost(HostDistance.LOCAL)).isEqualTo(1); assertThat(poolingOptions.getMaxConnectionsPerHost(HostDistance.LOCAL)).isEqualTo(3); assertThat(poolingOptions.getMaxRequestsPerConnection(HostDistance.LOCAL)).isEqualTo(5); assertThat(poolingOptions.getNewConnectionThreshold(HostDistance.LOCAL)).isEqualTo(25); assertThat(poolingOptions.getCoreConnectionsPerHost(HostDistance.REMOTE)).isEqualTo(2); assertThat(poolingOptions.getMaxConnectionsPerHost(HostDistance.REMOTE)).isEqualTo(4); assertThat(poolingOptions.getMaxRequestsPerConnection(HostDistance.REMOTE)).isEqualTo(6); assertThat(poolingOptions.getNewConnectionThreshold(HostDistance.REMOTE)).isEqualTo(30); } private HostDistanceOptions createHostDistanceOptions(int coreConnections, int maxConnections, int maxRequestsPerConnection, int newConnectionThreshold) { HostDistanceOptions options = new HostDistanceOptions(); options.setCoreConnections(coreConnections); options.setMaxConnections(maxConnections); options.setMaxRequestsPerConnection(maxRequestsPerConnection); options.setNewConnectionThreshold(newConnectionThreshold); return options; } @Test public void buildsPoolingOptionsWithDefaultValues() throws Exception { final PoolingOptionsFactory factory = new PoolingOptionsFactory(); final PoolingOptions defaultPoolingOptions = new PoolingOptions(); final PoolingOptions poolingOptions = factory.build(); assertThat(poolingOptions.getHeartbeatIntervalSeconds()).isEqualTo(defaultPoolingOptions.getHeartbeatIntervalSeconds()); assertThat(poolingOptions.getPoolTimeoutMillis()).isEqualTo(defaultPoolingOptions.getPoolTimeoutMillis()); verifySamePoolingOptions(poolingOptions, defaultPoolingOptions, HostDistance.LOCAL); verifySamePoolingOptions(poolingOptions, defaultPoolingOptions, HostDistance.REMOTE); } private void verifySamePoolingOptions(PoolingOptions poolingOptions, PoolingOptions defaultPoolingOptions, HostDistance hostDistance) { assertThat(poolingOptions.getCoreConnectionsPerHost(hostDistance)) .isEqualTo(defaultPoolingOptions.getCoreConnectionsPerHost(hostDistance)); assertThat(poolingOptions.getMaxConnectionsPerHost(hostDistance)) .isEqualTo(defaultPoolingOptions.getMaxConnectionsPerHost(hostDistance)); assertThat(poolingOptions.getMaxRequestsPerConnection(hostDistance)) .isEqualTo(defaultPoolingOptions.getMaxRequestsPerConnection(hostDistance)); assertThat(poolingOptions.getNewConnectionThreshold(hostDistance)) .isEqualTo(defaultPoolingOptions.getNewConnectionThreshold(hostDistance)); } }