import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ConsistencyLevel;
import com.datastax.driver.core.HostDistance;
import com.datastax.driver.core.PoolingOptions;
import com.datastax.driver.core.QueryOptions;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.SocketOptions;
import com.datastax.driver.core.policies.ExponentialReconnectionPolicy;
import com.datastax.driver.core.policies.ReconnectionPolicy;
public class ConnectionFloodTest {
/**
* This is a test for creating a lof of connections to
* a given cluster as a flood of connections
*
* @param args - optional
*/
public static void main (String args []){
ConnectionFloodTest myTest = new ConnectionFloodTest();
for (int i=0; i < 1001; i ++){
String hosts[] = {"192.168.56.21","192.168.56.22","192.168.56.23"};
myTest.initializeDatastaxClient(hosts, "markc",Boolean.FALSE);
System.out.println("connect attempt: " + i);
}
}
private Session session;
private void initializeDatastaxClient(String[] cassandraHosts, String cassandraKeySpaceName, final boolean noKeySpace) {
QueryOptions queryOptions = new QueryOptions();
queryOptions.setConsistencyLevel(ConsistencyLevel.QUORUM);
PoolingOptions poolingOptions = new PoolingOptions()
.setMaxConnectionsPerHost(HostDistance.LOCAL, 30)
.setCoreConnectionsPerHost(HostDistance.LOCAL, 10);
SocketOptions socketOptions = new SocketOptions()
.setConnectTimeoutMillis(6000)
.setReadTimeoutMillis(6000);
ReconnectionPolicy reconnectionPolicy = new ExponentialReconnectionPolicy(100, 2000);
Cluster cluster = Cluster.builder()
.withClusterName("Solr")
.withPort(9042)
.addContactPoints(cassandraHosts)
.withQueryOptions(queryOptions)
.withReconnectionPolicy(reconnectionPolicy)
.withPoolingOptions(poolingOptions)
.withSocketOptions(socketOptions)
.build();
this.session = noKeySpace ? cluster.connect() : cluster.connect(cassandraKeySpaceName);
System.out.println("initialization complete");
System.out.println(this.session.getLoggedKeyspace());
}
}