KsDef ksdef = new KsDef().setName(keyspaceName) .setCf_defs(new LinkedList<CfDef>()) // cannot be null but can be empty .setStrategy_class(storageConfig.get(REPLICATION_STRATEGY))
KsDef solandraKS = new KsDef() .setName(keySpace) .setStrategy_class("org.apache.cassandra.locator.SimpleStrategy")
public KsDef toThrift() { KsDef def = new KsDef(name, strategyClass, ThriftCfDef.toThriftList(cfDefs)); def.setStrategy_options(strategyOptions); def.setDurable_writes(durableWrites ); return def; }
static KsDef createKsDefForFresh(CassandraClient client, CassandraKeyValueServiceConfig config) throws TException { KsDef ksDef = new KsDef(config.getKeyspaceOrThrow(), CassandraConstants.NETWORK_STRATEGY, ImmutableList.of()); Set<String> dcs = sanityCheckDatacenters(client, config); ksDef.setStrategy_options(Maps.asMap(dcs, ignore -> String.valueOf(config.replicationFactor()))); ksDef.setDurable_writes(true); return ksDef; }
/** * Creates keyspace. * * @throws Exception * the exception */ private void createKeyspace() throws Exception { if (cql_version != null && cql_version.equals(CassandraConstants.CQL_VERSION_3_0)) { onCql3CreateKeyspace(); } else { Map<String, String> strategy_options = new HashMap<String, String>(); List<CfDef> cfDefs = new ArrayList<CfDef>(); KsDef ksDef = new KsDef(databaseName, csmd.getPlacement_strategy(databaseName), cfDefs); setProperties(ksDef, strategy_options); ksDef.setStrategy_options(strategy_options); cassandra_client.system_add_keyspace(ksDef); } }
@Test public void noStrategyForDcThrows() { KsDef ksDef = new KsDef("test", CassandraConstants.SIMPLE_STRATEGY, ImmutableList.of()); ksDef.setStrategy_options(ImmutableMap.of(DC_1, "1")); assertThatThrownBy(() -> CassandraVerifier.sanityCheckReplicationFactor(ksDef, config, ImmutableSet.of(DC_1, DC_2))) .isInstanceOf(IllegalStateException.class); }
@Test public void simpleStrategyOneDcHighRfThrows() throws TException { KsDef ksDef = new KsDef("test", CassandraConstants.SIMPLE_STRATEGY, ImmutableList.of()); ksDef.setStrategy_options(ImmutableMap.of(CassandraConstants.REPLICATION_FACTOR_OPTION, "3")); assertThatThrownBy(() -> CassandraVerifier.checkAndSetReplicationFactor(client, ksDef, config)) .isInstanceOf(IllegalStateException.class); }
@Test public void differentRfThanConfigThrows() { KsDef ksDef = new KsDef("test", CassandraConstants.SIMPLE_STRATEGY, ImmutableList.of()); ksDef.setStrategy_options(ImmutableMap.of(DC_1, "1", DC_2, "2")); when(config.replicationFactor()).thenReturn(1); assertThatThrownBy(() -> CassandraVerifier.sanityCheckReplicationFactor(ksDef, config, ImmutableSortedSet.of(DC_1, DC_2))) .isInstanceOf(UnsupportedOperationException.class); }
@Test public void simpleStrategyOneDcOneRfSucceedsAndUpdatesKsDef() throws TException { setTopology(createDetails(DC_1, RACK_1, HOST_1)); when(config.replicationFactor()).thenReturn(1); KsDef ksDef = new KsDef("test", CassandraConstants.SIMPLE_STRATEGY, ImmutableList.of()); ImmutableMap<String, String> strategyOptions = ImmutableMap .of(CassandraConstants.REPLICATION_FACTOR_OPTION, "1"); ksDef.setStrategy_options(strategyOptions); ksDef = CassandraVerifier.checkAndSetReplicationFactor(client, ksDef, config); assertThat(ksDef.strategy_class).isEqualTo(CassandraConstants.NETWORK_STRATEGY); assertThat(ksDef.strategy_options).isEqualTo(ImmutableMap.of(DC_1, "1")); }
@Test public void returnSameKsDefIfNodeTopologyChecksIgnored() throws TException { setTopology(createDetails(DC_1, RACK_1, HOST_1)); when(config.replicationFactor()).thenReturn(7); when(config.ignoreNodeTopologyChecks()).thenReturn(true); KsDef ksDef = new KsDef("test", CassandraConstants.SIMPLE_STRATEGY, ImmutableList.of()); ImmutableMap<String, String> strategyOptions = ImmutableMap .of(CassandraConstants.REPLICATION_FACTOR_OPTION, "1", DC_1, "7"); ksDef.setStrategy_options(strategyOptions); ksDef = CassandraVerifier.checkAndSetReplicationFactor(client, ksDef, config); assertThat(ksDef.strategy_class).isEqualTo(CassandraConstants.SIMPLE_STRATEGY); assertThat(ksDef.strategy_options).isEqualTo(strategyOptions); }
KsDef ks_Def = new KsDef(keyspaceName, SimpleStrategy.class.getName(), cfDefs);
KsDef ks_Def = new KsDef(keyspaceName, SimpleStrategy.class.getName(), cfDefs);
@Test public void simpleStrategyMultipleDcsThrows() throws TException { setTopology(createDetails(DC_1, RACK_1, HOST_1), createDetails(DC_1, RACK_1, HOST_2), createDetails(DC_1, RACK_1, HOST_3), createDetails(DC_2, RACK_1, HOST_4)); when(config.replicationFactor()).thenReturn(1); KsDef ksDef = new KsDef("test", CassandraConstants.SIMPLE_STRATEGY, ImmutableList.of()); ksDef.setStrategy_options(ImmutableMap.of(CassandraConstants.REPLICATION_FACTOR_OPTION, "1")); assertThatThrownBy(() -> CassandraVerifier.checkAndSetReplicationFactor(client, ksDef, config)) .isInstanceOf(IllegalStateException.class); }
@Test public void test() throws NotFoundException, InvalidRequestException, TException, UnsupportedEncodingException { getEntityManagerFactory("create"); Assert.assertTrue(CassandraCli.keyspaceExist("KunderaCoreExmples")); Assert.assertTrue(CassandraCli.columnFamilyExist("Actor", "KunderaCoreExmples")); org.apache.cassandra.thrift.KsDef ksDef = new KsDef(); ksDef = client.describe_keyspace("KunderaCoreExmples"); Assert.assertEquals(2, ksDef.getCf_defs().size()); for (org.apache.cassandra.thrift.CfDef cfDef : ksDef.getCf_defs()) { if ("Actor".equals(cfDef.getName())) { Assert.assertEquals("Standard", cfDef.column_type); } } }
public static void createKeyspace(Cluster cluster, String name, String strategy, int replicationFactor, List<CfDef> cfDefList) { try { KsDef ksDef = new KsDef(name, strategy, cfDefList); ksDef.setReplication_factor(replicationFactor); cluster.addKeyspace(new ThriftKsDef(ksDef)); return; } catch (Throwable e) { System.out.println("exception while creating keyspace, " + name + " - probably already exists : " + e.getMessage()); } for (CfDef cfDef : cfDefList) { try { cluster.addColumnFamily(new ThriftCfDef(cfDef)); } catch (Throwable e) { System.out.println("exception while creating CF, " + cfDef.getName() + " - probably already exists : " + e.getMessage()); } } }
Assert.assertTrue(CassandraCli.keyspaceExist("KunderaCoreExmples")); Assert.assertTrue(CassandraCli.columnFamilyExist("CassandraEntitySimple", "KunderaCoreExmples")); org.apache.cassandra.thrift.KsDef ksDef = new KsDef(); ksDef = client.describe_keyspace("KunderaCoreExmples"); Assert.assertEquals(1, ksDef.getCf_defs().size());
@Test public void networkStrategyMultipleDcsSucceeds() throws TException { setTopology(createDetails(DC_1, RACK_1, HOST_1), createDetails(DC_1, RACK_1, HOST_2), createDetails(DC_1, RACK_1, HOST_3), createDetails(DC_2, RACK_1, HOST_4)); when(config.replicationFactor()).thenReturn(3); KsDef ksDef = new KsDef("test", CassandraConstants.NETWORK_STRATEGY, ImmutableList.of()); ImmutableMap<String, String> strategyOptions = ImmutableMap.of( CassandraConstants.REPLICATION_FACTOR_OPTION, "3", DC_1, "3", DC_2, "3"); ksDef.setStrategy_options(strategyOptions); ksDef = CassandraVerifier.checkAndSetReplicationFactor(client, ksDef, config); assertThat(ksDef.strategy_options).isEqualTo(strategyOptions); }
@Before public void setUp() throws Exception { super.setupClient(); KEYSPACE_DEV = new ThriftKsDef(new KsDef(KEYSPACE, "org.apache.cassandra.locator.SimpleStrategy", Arrays.asList(new CfDef[] { BLOB_CF_DEF }))); ((ThriftKsDef)KEYSPACE_DEV).setReplicationFactor(1); cassandraHostConfigurator = new CassandraHostConfigurator("localhost:9170"); cassandraCluster = new ThriftCluster("Test Cluster", cassandraHostConfigurator); keyspace = HFactory.createKeyspace(KEYSPACE, cassandraCluster); try { cassandraCluster.dropKeyspace(KEYSPACE); } catch (Exception e) { } cassandraCluster.addKeyspace(KEYSPACE_DEV); }
Assert.assertTrue(CassandraCli.keyspaceExist("KunderaCoreExmples")); Assert.assertTrue(CassandraCli.columnFamilyExist("CassandraEntitySimple", "KunderaCoreExmples")); org.apache.cassandra.thrift.KsDef ksDef = new KsDef(); ksDef = client.describe_keyspace("KunderaCoreExmples"); for (org.apache.cassandra.thrift.CfDef cfDef : ksDef.getCf_defs())
cfDefs.add(user_Def); ksDef = new KsDef("KunderaExamples", "org.apache.cassandra.locator.SimpleStrategy", cfDefs);