package com.github.adejanovski.cassandra.jdbc; import java.io.FileNotFoundException; import java.text.SimpleDateFormat; import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeSuite; import com.datastax.driver.core.Cluster; import com.datastax.driver.core.Cluster.Builder; import com.datastax.driver.core.ConsistencyLevel; import com.datastax.driver.core.QueryOptions; import com.datastax.driver.core.Session; public class BuildCluster { private final static Logger logger = LoggerFactory.getLogger(BuildCluster.class); public static String HOST = System.getProperty("host", ConnectionDetails.getHost()); public static CCMBridge ccmBridge = null; public static Cluster cluster = null; public static Session session = null; public static Cluster cluster2 = null; public static Session session2 = null; public static Session sessionFluks = null; public static boolean clusterHasBuilt = false; public static boolean dynamicCluster = false; @BeforeSuite(groups={"init"}) public static void setUpBeforeSuite() throws Exception { System.setProperty("cassandra.version", "3.0.4"); System.setProperty("ipprefix","127.0.0."); if(!isClusterActive()){ ccmBridge = CCMBridge.create("jdbc_cluster" + new SimpleDateFormat("yyyyMMdd-HHmmss").format(new Date()), 1, 1); ccmBridge.waitForUp(1); //ccmBridge.waitForUp(2); HOST = CCMBridge.ipOfNode(1); dynamicCluster = true; } else{ HOST = "127.0.0.1"; } clusterHasBuilt = true; } @AfterSuite(groups={"init"}) public static void tearDownAfterSuite() throws Exception { System.out.println("CLOSING CASSANDRA CONNECTION"); if(dynamicCluster){ System.out.println("Stopping nodes"); clusterHasBuilt = false; try{ ccmBridge.forceStop(); System.out.println("Discarding cluster"); ccmBridge.remove(); HOST = System.getProperty("host", ConnectionDetails.getHost()); }catch(Exception e){ System.out.println("Silent error discarding cluster"); } } } public static boolean isClusterActive(){ try{ Builder builder = Cluster.builder().withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.QUORUM).setSerialConsistencyLevel(ConsistencyLevel.LOCAL_SERIAL)); cluster = builder.addContactPoint("127.0.0.1").build(); session = cluster.connect(); return true; } catch(Exception e){ return false; } } }