http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java b/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java index 0b40fcb..ba702dd 100644 --- a/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java +++ b/src/java/org/apache/cassandra/utils/NativeSSTableLoaderClient.java @@ -22,23 +22,20 @@ import java.util.*; import com.datastax.driver.core.*; -import org.apache.cassandra.config.ColumnDefinition; -import org.apache.cassandra.config.ColumnDefinition.ClusteringOrder; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.SchemaConstants; +import org.apache.cassandra.schema.*; +import org.apache.cassandra.schema.ColumnMetadata; +import org.apache.cassandra.schema.ColumnMetadata.ClusteringOrder; import org.apache.cassandra.cql3.ColumnIdentifier; import org.apache.cassandra.db.marshal.*; import org.apache.cassandra.dht.*; import org.apache.cassandra.dht.Token; import org.apache.cassandra.dht.Token.TokenFactory; import org.apache.cassandra.io.sstable.SSTableLoader; -import org.apache.cassandra.schema.CQLTypeParser; -import org.apache.cassandra.schema.SchemaKeyspace; -import org.apache.cassandra.schema.Types; +import org.apache.cassandra.schema.TableMetadata; public class NativeSSTableLoaderClient extends SSTableLoader.Client { - protected final Map<String, CFMetaData> tables; + protected final Map<String, TableMetadataRef> tables; private final Collection<InetAddress> hosts; private final int port; private final AuthProvider authProvider; @@ -90,20 +87,20 @@ public class NativeSSTableLoaderClient extends SSTableLoader.Client Types types = fetchTypes(keyspace, session); tables.putAll(fetchTables(keyspace, session, partitioner, types)); - // We only need the CFMetaData for the views, so we only load that. + // We only need the TableMetadata for the views, so we only load that. tables.putAll(fetchViews(keyspace, session, partitioner, types)); } } - public CFMetaData getTableMetadata(String tableName) + public TableMetadataRef getTableMetadata(String tableName) { return tables.get(tableName); } @Override - public void setTableMetadata(CFMetaData cfm) + public void setTableMetadata(TableMetadataRef cfm) { - tables.put(cfm.cfName, cfm); + tables.put(cfm.name, cfm); } private static Types fetchTypes(String keyspace, Session session) @@ -130,9 +127,9 @@ public class NativeSSTableLoaderClient extends SSTableLoader.Client * Note: It is not safe for this class to use static methods from SchemaKeyspace (static final fields are ok) * as that triggers initialization of the class, which fails in client mode. */ - private static Map<String, CFMetaData> fetchTables(String keyspace, Session session, IPartitioner partitioner, Types types) + private static Map<String, TableMetadataRef> fetchTables(String keyspace, Session session, IPartitioner partitioner, Types types) { - Map<String, CFMetaData> tables = new HashMap<>(); + Map<String, TableMetadataRef> tables = new HashMap<>(); String query = String.format("SELECT * FROM %s.%s WHERE keyspace_name = ?", SchemaConstants.SCHEMA_KEYSPACE_NAME, SchemaKeyspace.TABLES); for (Row row : session.execute(query, keyspace)) @@ -144,12 +141,9 @@ public class NativeSSTableLoaderClient extends SSTableLoader.Client return tables; } - /* - * In the case where we are creating View CFMetaDatas, we - */ - private static Map<String, CFMetaData> fetchViews(String keyspace, Session session, IPartitioner partitioner, Types types) + private static Map<String, TableMetadataRef> fetchViews(String keyspace, Session session, IPartitioner partitioner, Types types) { - Map<String, CFMetaData> tables = new HashMap<>(); + Map<String, TableMetadataRef> tables = new HashMap<>(); String query = String.format("SELECT * FROM %s.%s WHERE keyspace_name = ?", SchemaConstants.SCHEMA_KEYSPACE_NAME, SchemaKeyspace.VIEWS); for (Row row : session.execute(query, keyspace)) @@ -161,43 +155,31 @@ public class NativeSSTableLoaderClient extends SSTableLoader.Client return tables; } - private static CFMetaData createTableMetadata(String keyspace, - Session session, - IPartitioner partitioner, - boolean isView, - Row row, - String name, - Types types) + private static TableMetadataRef createTableMetadata(String keyspace, + Session session, + IPartitioner partitioner, + boolean isView, + Row row, + String name, + Types types) { - UUID id = row.getUUID("id"); - Set<CFMetaData.Flag> flags = isView ? Collections.emptySet() : CFMetaData.flagsFromStrings(row.getSet("flags", String.class)); + TableMetadata.Builder builder = TableMetadata.builder(keyspace, name, TableId.fromUUID(row.getUUID("id"))) + .partitioner(partitioner); - boolean isSuper = flags.contains(CFMetaData.Flag.SUPER); - boolean isCounter = flags.contains(CFMetaData.Flag.COUNTER); - boolean isDense = flags.contains(CFMetaData.Flag.DENSE); - boolean isCompound = isView || flags.contains(CFMetaData.Flag.COMPOUND); + if (!isView) + builder.flags(TableMetadata.Flag.fromStringSet(row.getSet("flags", String.class))); String columnsQuery = String.format("SELECT * FROM %s.%s WHERE keyspace_name = ? AND table_name = ?", SchemaConstants.SCHEMA_KEYSPACE_NAME, SchemaKeyspace.COLUMNS); - List<ColumnDefinition> defs = new ArrayList<>(); for (Row colRow : session.execute(columnsQuery, keyspace, name)) - defs.add(createDefinitionFromRow(colRow, keyspace, name, types)); - - return CFMetaData.create(keyspace, - name, - id, - isDense, - isCompound, - isSuper, - isCounter, - isView, - defs, - partitioner); + builder.addColumn(createDefinitionFromRow(colRow, keyspace, name, types)); + + return TableMetadataRef.forOfflineTools(builder.build()); } - private static ColumnDefinition createDefinitionFromRow(Row row, String keyspace, String table, Types types) + private static ColumnMetadata createDefinitionFromRow(Row row, String keyspace, String table, Types types) { ClusteringOrder order = ClusteringOrder.valueOf(row.getString("clustering_order").toUpperCase()); AbstractType<?> type = CQLTypeParser.parse(keyspace, row.getString("type"), types); @@ -209,7 +191,7 @@ public class NativeSSTableLoaderClient extends SSTableLoader.Client row.getString("column_name")); int position = row.getInt("position"); - ColumnDefinition.Kind kind = ColumnDefinition.Kind.valueOf(row.getString("kind").toUpperCase()); - return new ColumnDefinition(keyspace, table, name, type, position, kind); + org.apache.cassandra.schema.ColumnMetadata.Kind kind = ColumnMetadata.Kind.valueOf(row.getString("kind").toUpperCase()); + return new ColumnMetadata(keyspace, table, name, type, position, kind); } }
http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/test/long/org/apache/cassandra/cql3/CorruptionTest.java ---------------------------------------------------------------------- diff --git a/test/long/org/apache/cassandra/cql3/CorruptionTest.java b/test/long/org/apache/cassandra/cql3/CorruptionTest.java index 43cf5e0..f2ed36a 100644 --- a/test/long/org/apache/cassandra/cql3/CorruptionTest.java +++ b/test/long/org/apache/cassandra/cql3/CorruptionTest.java @@ -37,7 +37,7 @@ import com.datastax.driver.core.policies.Policies; import com.datastax.driver.core.utils.Bytes; import org.apache.cassandra.SchemaLoader; import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.config.Schema; +import org.apache.cassandra.schema.Schema; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.service.EmbeddedCassandraService; http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/test/long/org/apache/cassandra/db/commitlog/CommitLogStressTest.java ---------------------------------------------------------------------- diff --git a/test/long/org/apache/cassandra/db/commitlog/CommitLogStressTest.java b/test/long/org/apache/cassandra/db/commitlog/CommitLogStressTest.java index 3f5be03..eb1be8b 100644 --- a/test/long/org/apache/cassandra/db/commitlog/CommitLogStressTest.java +++ b/test/long/org/apache/cassandra/db/commitlog/CommitLogStressTest.java @@ -47,6 +47,7 @@ import org.apache.cassandra.db.partitions.PartitionUpdate; import org.apache.cassandra.db.rows.*; import org.apache.cassandra.io.util.DataInputBuffer; import org.apache.cassandra.io.util.DataInputPlus; +import org.apache.cassandra.schema.Schema; import org.apache.cassandra.security.EncryptionContext; import org.apache.cassandra.security.EncryptionContextGenerator; @@ -262,7 +263,7 @@ public class CommitLogStressTest } verifySizes(commitLog); - commitLog.discardCompletedSegments(Schema.instance.getCFMetaData("Keyspace1", "Standard1").cfId, + commitLog.discardCompletedSegments(Schema.instance.getTableMetadata("Keyspace1", "Standard1").id, CommitLogPosition.NONE, discardedPos); threads.clear(); @@ -444,7 +445,7 @@ public class CommitLogStressTest rl.acquire(); ByteBuffer key = randomBytes(16, rand); - UpdateBuilder builder = UpdateBuilder.create(Schema.instance.getCFMetaData("Keyspace1", "Standard1"), Util.dk(key)); + UpdateBuilder builder = UpdateBuilder.create(Schema.instance.getTableMetadata("Keyspace1", "Standard1"), Util.dk(key)); for (int ii = 0; ii < numCells; ii++) { int sz = randomSize ? rand.nextInt(cellSize) : cellSize; http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/test/long/org/apache/cassandra/db/compaction/LongCompactionsTest.java ---------------------------------------------------------------------- diff --git a/test/long/org/apache/cassandra/db/compaction/LongCompactionsTest.java b/test/long/org/apache/cassandra/db/compaction/LongCompactionsTest.java index d684e11..f204303 100644 --- a/test/long/org/apache/cassandra/db/compaction/LongCompactionsTest.java +++ b/test/long/org/apache/cassandra/db/compaction/LongCompactionsTest.java @@ -28,7 +28,7 @@ import org.junit.Test; import org.apache.cassandra.UpdateBuilder; import org.apache.cassandra.SchemaLoader; -import org.apache.cassandra.config.Schema; +import org.apache.cassandra.schema.Schema; import org.apache.cassandra.Util; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.db.*; @@ -108,7 +108,7 @@ public class LongCompactionsTest { String key = String.valueOf(j); // last sstable has highest timestamps - UpdateBuilder builder = UpdateBuilder.create(store.metadata, String.valueOf(j)) + UpdateBuilder builder = UpdateBuilder.create(store.metadata(), String.valueOf(j)) .withTimestamp(k); for (int i = 0; i < rowsPerPartition; i++) builder.newRow(String.valueOf(i)).add("val", String.valueOf(i)); @@ -123,7 +123,7 @@ public class LongCompactionsTest Thread.sleep(1000); long start = System.nanoTime(); - final int gcBefore = (int) (System.currentTimeMillis() / 1000) - Schema.instance.getCFMetaData(KEYSPACE1, "Standard1").params.gcGraceSeconds; + final int gcBefore = (int) (System.currentTimeMillis() / 1000) - Schema.instance.getTableMetadata(KEYSPACE1, "Standard1").params.gcGraceSeconds; try (LifecycleTransaction txn = store.getTracker().tryModify(sstables, OperationType.COMPACTION)) { assert txn != null : "Cannot markCompacting all sstables"; @@ -146,7 +146,7 @@ public class LongCompactionsTest cfs.clearUnsafe(); final int ROWS_PER_SSTABLE = 10; - final int SSTABLES = cfs.metadata.params.minIndexInterval * 3 / ROWS_PER_SSTABLE; + final int SSTABLES = cfs.metadata().params.minIndexInterval * 3 / ROWS_PER_SSTABLE; // disable compaction while flushing cfs.disableAutoCompaction(); @@ -158,7 +158,7 @@ public class LongCompactionsTest DecoratedKey key = Util.dk(String.valueOf(i % 2)); long timestamp = j * ROWS_PER_SSTABLE + i; maxTimestampExpected = Math.max(timestamp, maxTimestampExpected); - UpdateBuilder.create(cfs.metadata, key) + UpdateBuilder.create(cfs.metadata(), key) .withTimestamp(timestamp) .newRow(String.valueOf(i / 2)).add("val", ByteBufferUtil.EMPTY_BYTE_BUFFER) .apply(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/test/long/org/apache/cassandra/db/compaction/LongLeveledCompactionStrategyTest.java ---------------------------------------------------------------------- diff --git a/test/long/org/apache/cassandra/db/compaction/LongLeveledCompactionStrategyTest.java b/test/long/org/apache/cassandra/db/compaction/LongLeveledCompactionStrategyTest.java index cf4aba2..3d18d85 100644 --- a/test/long/org/apache/cassandra/db/compaction/LongLeveledCompactionStrategyTest.java +++ b/test/long/org/apache/cassandra/db/compaction/LongLeveledCompactionStrategyTest.java @@ -82,7 +82,7 @@ public class LongLeveledCompactionStrategyTest for (int r = 0; r < rows; r++) { DecoratedKey key = Util.dk(String.valueOf(r)); - UpdateBuilder builder = UpdateBuilder.create(store.metadata, key); + UpdateBuilder builder = UpdateBuilder.create(store.metadata(), key); for (int c = 0; c < columns; c++) builder.newRow("column" + c).add("val", value); @@ -160,7 +160,7 @@ public class LongLeveledCompactionStrategyTest for (int r = 0; r < rows; r++) { DecoratedKey key = Util.dk(String.valueOf(r)); - UpdateBuilder builder = UpdateBuilder.create(store.metadata, key); + UpdateBuilder builder = UpdateBuilder.create(store.metadata(), key); for (int c = 0; c < columns; c++) builder.newRow("column" + c).add("val", value); @@ -179,7 +179,7 @@ public class LongLeveledCompactionStrategyTest for (int r = 0; r < 10; r++) { DecoratedKey key = Util.dk(String.valueOf(r)); - UpdateBuilder builder = UpdateBuilder.create(store.metadata, key); + UpdateBuilder builder = UpdateBuilder.create(store.metadata(), key); for (int c = 0; c < 10; c++) builder.newRow("column" + c).add("val", value); http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/test/long/org/apache/cassandra/hints/HintsWriteThenReadTest.java ---------------------------------------------------------------------- diff --git a/test/long/org/apache/cassandra/hints/HintsWriteThenReadTest.java b/test/long/org/apache/cassandra/hints/HintsWriteThenReadTest.java index fd880cb..a905f9a 100644 --- a/test/long/org/apache/cassandra/hints/HintsWriteThenReadTest.java +++ b/test/long/org/apache/cassandra/hints/HintsWriteThenReadTest.java @@ -31,8 +31,8 @@ import com.google.common.collect.Iterables; import org.junit.Test; import org.apache.cassandra.SchemaLoader; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.Schema; +import org.apache.cassandra.schema.TableMetadata; +import org.apache.cassandra.schema.Schema; import org.apache.cassandra.db.Mutation; import org.apache.cassandra.db.RowUpdateBuilder; import org.apache.cassandra.db.rows.Cell; @@ -167,7 +167,7 @@ public class HintsWriteThenReadTest private static Mutation createMutation(int index, long timestamp) { - CFMetaData table = Schema.instance.getCFMetaData(KEYSPACE, TABLE); + TableMetadata table = Schema.instance.getTableMetadata(KEYSPACE, TABLE); return new RowUpdateBuilder(table, timestamp, bytes(index)) .clustering(bytes(index)) .add("val", bytes(index)) http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/test/long/org/apache/cassandra/streaming/LongStreamingTest.java ---------------------------------------------------------------------- diff --git a/test/long/org/apache/cassandra/streaming/LongStreamingTest.java b/test/long/org/apache/cassandra/streaming/LongStreamingTest.java index 1340224..a30d6c9 100644 --- a/test/long/org/apache/cassandra/streaming/LongStreamingTest.java +++ b/test/long/org/apache/cassandra/streaming/LongStreamingTest.java @@ -24,14 +24,13 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import com.google.common.io.Files; -import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.apache.cassandra.SchemaLoader; -import org.apache.cassandra.config.CFMetaData; +import org.apache.cassandra.schema.TableMetadataRef; import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.config.Schema; +import org.apache.cassandra.schema.Schema; import org.apache.cassandra.cql3.QueryProcessor; import org.apache.cassandra.cql3.UntypedResultSet; import org.apache.cassandra.db.Keyspace; @@ -110,9 +109,9 @@ public class LongStreamingTest this.ks = keyspace; } - public CFMetaData getTableMetadata(String cfName) + public TableMetadataRef getTableMetadata(String cfName) { - return Schema.instance.getCFMetaData(ks, cfName); + return Schema.instance.getTableMetadataRef(ks, cfName); } }, new OutputHandler.SystemOutput(false, false)); @@ -137,9 +136,9 @@ public class LongStreamingTest this.ks = keyspace; } - public CFMetaData getTableMetadata(String cfName) + public TableMetadataRef getTableMetadata(String cfName) { - return Schema.instance.getCFMetaData(ks, cfName); + return Schema.instance.getTableMetadataRef(ks, cfName); } }, new OutputHandler.SystemOutput(false, false)); http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/test/microbench/org/apache/cassandra/test/microbench/CompactionBench.java ---------------------------------------------------------------------- diff --git a/test/microbench/org/apache/cassandra/test/microbench/CompactionBench.java b/test/microbench/org/apache/cassandra/test/microbench/CompactionBench.java index d8dfd66..41220a2 100644 --- a/test/microbench/org/apache/cassandra/test/microbench/CompactionBench.java +++ b/test/microbench/org/apache/cassandra/test/microbench/CompactionBench.java @@ -21,51 +21,16 @@ package org.apache.cassandra.test.microbench; import java.io.File; import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.Collection; import java.util.List; import java.util.concurrent.*; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; -import com.google.common.util.concurrent.Uninterruptibles; - -import org.apache.cassandra.UpdateBuilder; -import org.apache.cassandra.concurrent.StageManager; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.Config; -import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.config.Schema; import org.apache.cassandra.cql3.CQLTester; -import org.apache.cassandra.cql3.statements.ParsedStatement; import org.apache.cassandra.db.ColumnFamilyStore; import org.apache.cassandra.db.Directories; import org.apache.cassandra.db.Keyspace; -import org.apache.cassandra.db.Mutation; -import org.apache.cassandra.db.compaction.CompactionManager; -import org.apache.cassandra.dht.Murmur3Partitioner; import org.apache.cassandra.io.sstable.Descriptor; -import org.apache.cassandra.io.util.DataInputBuffer; -import org.apache.cassandra.io.util.DataOutputBuffer; -import org.apache.cassandra.io.util.DataOutputBufferFixed; import org.apache.cassandra.io.util.FileUtils; -import org.apache.cassandra.net.MessageIn; -import org.apache.cassandra.net.MessageOut; -import org.apache.cassandra.net.MessagingService; -import org.apache.cassandra.schema.KeyspaceMetadata; -import org.apache.cassandra.schema.KeyspaceParams; -import org.apache.cassandra.service.CassandraDaemon; -import org.apache.cassandra.service.StorageService; -import org.apache.cassandra.transport.messages.ResultMessage; -import org.apache.cassandra.utils.FBUtilities; -import org.apache.hadoop.util.bloom.Key; import org.openjdk.jmh.annotations.*; -import org.openjdk.jmh.profile.StackProfiler; -import org.openjdk.jmh.results.Result; -import org.openjdk.jmh.results.RunResult; -import org.openjdk.jmh.runner.Runner; -import org.openjdk.jmh.runner.options.Options; -import org.openjdk.jmh.runner.options.OptionsBuilder; @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.MILLISECONDS) http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/test/microbench/org/apache/cassandra/test/microbench/MutationBench.java ---------------------------------------------------------------------- diff --git a/test/microbench/org/apache/cassandra/test/microbench/MutationBench.java b/test/microbench/org/apache/cassandra/test/microbench/MutationBench.java index 8c177cf..45ad258 100644 --- a/test/microbench/org/apache/cassandra/test/microbench/MutationBench.java +++ b/test/microbench/org/apache/cassandra/test/microbench/MutationBench.java @@ -25,10 +25,10 @@ import java.util.Collection; import java.util.concurrent.*; import org.apache.cassandra.UpdateBuilder; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.Config; +import org.apache.cassandra.cql3.statements.CreateTableStatement; +import org.apache.cassandra.schema.TableMetadata; import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.config.Schema; +import org.apache.cassandra.schema.Schema; import org.apache.cassandra.db.Mutation; import org.apache.cassandra.dht.Murmur3Partitioner; import org.apache.cassandra.io.util.DataInputBuffer; @@ -91,16 +91,16 @@ public class MutationBench public void setup() throws IOException { Schema.instance.load(KeyspaceMetadata.create(keyspace, KeyspaceParams.simple(1))); - KeyspaceMetadata ksm = Schema.instance.getKSMetaData(keyspace); - CFMetaData metadata = CFMetaData.compile("CREATE TABLE userpics " + - "( userid bigint," + - "picid bigint," + - "commentid bigint, " + - "PRIMARY KEY(userid, picid))", keyspace); - - Schema.instance.load(metadata); - Schema.instance.setKeyspaceMetadata(ksm.withSwapped(ksm.tables.with(metadata))); - + KeyspaceMetadata ksm = Schema.instance.getKeyspaceMetadata(keyspace); + TableMetadata metadata = + CreateTableStatement.parse("CREATE TABLE userpics " + + "( userid bigint," + + "picid bigint," + + "commentid bigint, " + + "PRIMARY KEY(userid, picid))", keyspace) + .build(); + + Schema.instance.load(ksm.withSwapped(ksm.tables.with(metadata))); mutation = (Mutation)UpdateBuilder.create(metadata, 1L).newRow(1L).add("commentid", 32L).makeMutation(); messageOut = mutation.createMessage(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/test/microbench/org/apache/cassandra/test/microbench/ReadWriteTest.java ---------------------------------------------------------------------- diff --git a/test/microbench/org/apache/cassandra/test/microbench/ReadWriteTest.java b/test/microbench/org/apache/cassandra/test/microbench/ReadWriteTest.java index 89973fd..066c289 100644 --- a/test/microbench/org/apache/cassandra/test/microbench/ReadWriteTest.java +++ b/test/microbench/org/apache/cassandra/test/microbench/ReadWriteTest.java @@ -19,44 +19,13 @@ package org.apache.cassandra.test.microbench; -import java.io.File; import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.Collection; -import java.util.List; import java.util.concurrent.*; -import org.apache.cassandra.UpdateBuilder; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.Config; -import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.config.Schema; import org.apache.cassandra.cql3.CQLTester; -import org.apache.cassandra.cql3.statements.ParsedStatement; import org.apache.cassandra.db.ColumnFamilyStore; -import org.apache.cassandra.db.Directories; import org.apache.cassandra.db.Keyspace; -import org.apache.cassandra.db.Mutation; -import org.apache.cassandra.dht.Murmur3Partitioner; -import org.apache.cassandra.io.util.DataInputBuffer; -import org.apache.cassandra.io.util.DataOutputBuffer; -import org.apache.cassandra.io.util.DataOutputBufferFixed; -import org.apache.cassandra.io.util.FileUtils; -import org.apache.cassandra.net.MessageIn; -import org.apache.cassandra.net.MessageOut; -import org.apache.cassandra.net.MessagingService; -import org.apache.cassandra.schema.KeyspaceMetadata; -import org.apache.cassandra.schema.KeyspaceParams; -import org.apache.cassandra.service.CassandraDaemon; -import org.apache.cassandra.service.StorageService; -import org.apache.cassandra.transport.messages.ResultMessage; import org.openjdk.jmh.annotations.*; -import org.openjdk.jmh.profile.StackProfiler; -import org.openjdk.jmh.results.Result; -import org.openjdk.jmh.results.RunResult; -import org.openjdk.jmh.runner.Runner; -import org.openjdk.jmh.runner.options.Options; -import org.openjdk.jmh.runner.options.OptionsBuilder; @BenchmarkMode(Mode.Throughput) @OutputTimeUnit(TimeUnit.MILLISECONDS) http://git-wip-us.apache.org/repos/asf/cassandra/blob/af3fe39d/test/unit/org/apache/cassandra/MockSchema.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/MockSchema.java b/test/unit/org/apache/cassandra/MockSchema.java deleted file mode 100644 index 804bccb..0000000 --- a/test/unit/org/apache/cassandra/MockSchema.java +++ /dev/null @@ -1,187 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one -* or more contributor license agreements. See the NOTICE file -* distributed with this work for additional information -* regarding copyright ownership. The ASF licenses this file -* to you 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 org.apache.cassandra; - -import java.io.File; -import java.io.IOException; -import java.io.RandomAccessFile; -import java.util.*; -import java.util.concurrent.atomic.AtomicInteger; - -import com.google.common.collect.ImmutableSet; - -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.db.*; -import org.apache.cassandra.db.marshal.UTF8Type; -import org.apache.cassandra.dht.Murmur3Partitioner; -import org.apache.cassandra.io.sstable.Component; -import org.apache.cassandra.io.sstable.Descriptor; -import org.apache.cassandra.io.sstable.IndexSummary; -import org.apache.cassandra.io.sstable.format.SSTableFormat; -import org.apache.cassandra.io.sstable.format.SSTableReader; -import org.apache.cassandra.io.sstable.metadata.MetadataCollector; -import org.apache.cassandra.io.sstable.metadata.MetadataType; -import org.apache.cassandra.io.sstable.metadata.StatsMetadata; -import org.apache.cassandra.io.util.FileUtils; -import org.apache.cassandra.io.util.Memory; -import org.apache.cassandra.io.util.FileHandle; -import org.apache.cassandra.schema.CachingParams; -import org.apache.cassandra.schema.KeyspaceMetadata; -import org.apache.cassandra.schema.KeyspaceParams; -import org.apache.cassandra.utils.AlwaysPresentFilter; -import org.apache.cassandra.utils.ByteBufferUtil; - -public class MockSchema -{ - static - { - Memory offsets = Memory.allocate(4); - offsets.setInt(0, 0); - indexSummary = new IndexSummary(Murmur3Partitioner.instance, offsets, 0, Memory.allocate(4), 0, 0, 0, 1); - } - private static final AtomicInteger id = new AtomicInteger(); - public static final Keyspace ks = Keyspace.mockKS(KeyspaceMetadata.create("mockks", KeyspaceParams.simpleTransient(1))); - - public static final IndexSummary indexSummary; - private static final FileHandle RANDOM_ACCESS_READER_FACTORY = new FileHandle.Builder(temp("mocksegmentedfile").getAbsolutePath()).complete(); - - public static Memtable memtable(ColumnFamilyStore cfs) - { - return new Memtable(cfs.metadata); - } - - public static SSTableReader sstable(int generation, ColumnFamilyStore cfs) - { - return sstable(generation, false, cfs); - } - - public static SSTableReader sstable(int generation, boolean keepRef, ColumnFamilyStore cfs) - { - return sstable(generation, 0, keepRef, cfs); - } - - public static SSTableReader sstable(int generation, int size, ColumnFamilyStore cfs) - { - return sstable(generation, size, false, cfs); - } - - public static SSTableReader sstable(int generation, int size, boolean keepRef, ColumnFamilyStore cfs) - { - Descriptor descriptor = new Descriptor(cfs.getDirectories().getDirectoryForNewSSTables(), - cfs.keyspace.getName(), - cfs.getColumnFamilyName(), - generation, SSTableFormat.Type.BIG); - Set<Component> components = ImmutableSet.of(Component.DATA, Component.PRIMARY_INDEX, Component.FILTER, Component.TOC); - for (Component component : components) - { - File file = new File(descriptor.filenameFor(component)); - try - { - file.createNewFile(); - } - catch (IOException e) - { - } - } - if (size > 0) - { - try - { - File file = new File(descriptor.filenameFor(Component.DATA)); - try (RandomAccessFile raf = new RandomAccessFile(file, "rw")) - { - raf.setLength(size); - } - } - catch (IOException e) - { - throw new RuntimeException(e); - } - } - SerializationHeader header = SerializationHeader.make(cfs.metadata, Collections.emptyList()); - StatsMetadata metadata = (StatsMetadata) new MetadataCollector(cfs.metadata.comparator) - .finalizeMetadata(cfs.metadata.partitioner.getClass().getCanonicalName(), 0.01f, -1, header) - .get(MetadataType.STATS); - SSTableReader reader = SSTableReader.internalOpen(descriptor, components, cfs.metadata, - RANDOM_ACCESS_READER_FACTORY.sharedCopy(), RANDOM_ACCESS_READER_FACTORY.sharedCopy(), indexSummary.sharedCopy(), - new AlwaysPresentFilter(), 1L, metadata, SSTableReader.OpenReason.NORMAL, header); - reader.first = reader.last = readerBounds(generation); - if (!keepRef) - reader.selfRef().release(); - return reader; - } - - public static ColumnFamilyStore newCFS() - { - return newCFS(ks.getName()); - } - - public static ColumnFamilyStore newCFS(String ksname) - { - String cfname = "mockcf" + (id.incrementAndGet()); - CFMetaData metadata = newCFMetaData(ksname, cfname); - return new ColumnFamilyStore(ks, cfname, 0, metadata, new Directories(metadata), false, false, false); - } - - public static CFMetaData newCFMetaData(String ksname, String cfname) - { - CFMetaData metadata = CFMetaData.Builder.create(ksname, cfname) - .addPartitionKey("key", UTF8Type.instance) - .addClusteringColumn("col", UTF8Type.instance) - .addRegularColumn("value", UTF8Type.instance) - .withPartitioner(Murmur3Partitioner.instance) - .build(); - metadata.caching(CachingParams.CACHE_NOTHING); - return metadata; - } - - public static BufferDecoratedKey readerBounds(int generation) - { - return new BufferDecoratedKey(new Murmur3Partitioner.LongToken(generation), ByteBufferUtil.EMPTY_BYTE_BUFFER); - } - - private static File temp(String id) - { - try - { - File file = File.createTempFile(id, "tmp"); - file.deleteOnExit(); - return file; - } - catch (IOException e) - { - throw new RuntimeException(e); - } - } - - public static void cleanup() - { - // clean up data directory which are stored as data directory/keyspace/data files - for (String dirName : DatabaseDescriptor.getAllDataFileLocations()) - { - File dir = new File(dirName); - if (!dir.exists()) - continue; - String[] children = dir.list(); - for (String child : children) - FileUtils.deleteRecursive(new File(dir, child)); - } - } -}
