Package com.matriks.jmeter.connections.datastaxclient

Source Code of com.matriks.jmeter.connections.datastaxclient.DataStaxClientConnection

package com.matriks.jmeter.connections.datastaxclient;

import java.io.File;
import java.io.FileReader;
import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.KeyspaceMetadata;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.policies.ConstantReconnectionPolicy;
import com.datastax.driver.core.policies.DowngradingConsistencyRetryPolicy;
import com.netflix.jmeter.connections.a6x.AstyanaxConnection;
import com.netflix.jmeter.sampler.Connection;
import com.netflix.jmeter.sampler.Operation;

public class DataStaxClientConnection extends Connection {
  private static final Logger logger = LoggerFactory.getLogger(AstyanaxConnection.class);
  private Session session;
  private Cluster cluster;
  private KeyspaceMetadata keyspaceMetaData;
 
  public static final DataStaxClientConnection instance = new DataStaxClientConnection();
  public Properties config = new Properties();

  public Session session() {
    if (session != null)
      return session;

    synchronized (DataStaxClientConnection.class) {
      if (session != null)
        return session;

      try {
        File propFile = new File("cassandra.properties");
        if (propFile.exists()) {
          config.load(new FileReader(propFile));
        }

        cluster = Cluster.builder().addContactPoints(endpoints.toArray(new String[0]))
            .withRetryPolicy(DowngradingConsistencyRetryPolicy.INSTANCE).withReconnectionPolicy(new ConstantReconnectionPolicy(2000L))
            .build();
        session = cluster.connect();
        session.execute("USE " + getKeyspaceName() + ";");
        return session;
      }
      catch (Exception e) {
        throw new RuntimeException(e);
      }
    }
  }
 
  public KeyspaceMetadata getKeyspaceMetadata() {
    if (null == keyspaceMetaData)
      keyspaceMetaData = session().getCluster().getMetadata().getKeyspace(DataStaxClientConnection.instance.getKeyspaceName());
   
    return keyspaceMetaData;
  }
 
  @Override
  public Operation newOperation(String columnFamily, boolean isCounter) {
    return new DataStaxClientOperation(columnFamily, isCounter);
  }

  @Override
  public String logConnections() {
    return cluster == null ? "" : "";
  }

  @Override
  public void shutdown() {
    if (cluster != null)
      cluster.shutdown();
  }
}
TOP

Related Classes of com.matriks.jmeter.connections.datastaxclient.DataStaxClientConnection

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.