Updated Branches:
  refs/heads/trunk 98eb543a9 -> f92fb2241

move testStandardColumnCompactions and testSuperColumnCompactions to 
LongSompactionsTest


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f92fb224
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f92fb224
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f92fb224

Branch: refs/heads/trunk
Commit: f92fb2241fc2ea5c7fb25ee885337404de3fbb49
Parents: 98eb543
Author: Jonathan Ellis <jbel...@apache.org>
Authored: Fri Sep 21 10:05:51 2012 -0500
Committer: Jonathan Ellis <jbel...@apache.org>
Committed: Fri Sep 21 10:05:51 2012 -0500

----------------------------------------------------------------------
 .../db/compaction/LongCompactionSpeedTest.java     |  102 -------
 .../db/compaction/LongCompactionsTest.java         |  217 +++++++++++++++
 .../cassandra/db/compaction/CompactionsTest.java   |  107 +-------
 3 files changed, 218 insertions(+), 208 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f92fb224/test/long/org/apache/cassandra/db/compaction/LongCompactionSpeedTest.java
----------------------------------------------------------------------
diff --git 
a/test/long/org/apache/cassandra/db/compaction/LongCompactionSpeedTest.java 
b/test/long/org/apache/cassandra/db/compaction/LongCompactionSpeedTest.java
deleted file mode 100644
index 8338c2c..0000000
--- a/test/long/org/apache/cassandra/db/compaction/LongCompactionSpeedTest.java
+++ /dev/null
@@ -1,102 +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.db.compaction;
-
-import java.util.*;
-
-import org.apache.cassandra.config.Schema;
-import org.junit.Test;
-import org.apache.cassandra.SchemaLoader;
-import org.apache.cassandra.Util;
-import org.apache.cassandra.db.*;
-import org.apache.cassandra.io.sstable.SSTableReader;
-import org.apache.cassandra.io.sstable.SSTableUtils;
-
-public class LongCompactionSpeedTest extends SchemaLoader
-{
-    public static final String TABLE1 = "Keyspace1";
-
-    /**
-     * Test compaction with a very wide row.
-     */
-    @Test
-    public void testCompactionWide() throws Exception
-    {
-        testCompaction(2, 1, 200000);
-    }
-
-    /**
-     * Test compaction with lots of skinny rows.
-     */
-    @Test
-    public void testCompactionSlim() throws Exception
-    {
-        testCompaction(2, 200000, 1);
-    }
-
-    /**
-     * Test compaction with lots of small sstables.
-     */
-    @Test
-    public void testCompactionMany() throws Exception
-    {
-        testCompaction(100, 800, 5);
-    }
-
-    protected void testCompaction(int sstableCount, int rowsPerSSTable, int 
colsPerRow) throws Exception
-    {
-        CompactionManager.instance.disableAutoCompaction();
-
-        Table table = Table.open(TABLE1);
-        ColumnFamilyStore store = table.getColumnFamilyStore("Standard1");
-
-        ArrayList<SSTableReader> sstables = new ArrayList<SSTableReader>();
-        for (int k = 0; k < sstableCount; k++)
-        {
-            SortedMap<String,ColumnFamily> rows = new 
TreeMap<String,ColumnFamily>();
-            for (int j = 0; j < rowsPerSSTable; j++)
-            {
-                String key = String.valueOf(j);
-                IColumn[] cols = new IColumn[colsPerRow];
-                for (int i = 0; i < colsPerRow; i++)
-                {
-                    // last sstable has highest timestamps
-                    cols[i] = Util.column(String.valueOf(i), 
String.valueOf(i), k);
-                }
-                rows.put(key, SSTableUtils.createCF(Long.MIN_VALUE, 
Integer.MIN_VALUE, cols));
-            }
-            SSTableReader sstable = SSTableUtils.prepare().write(rows);
-            sstables.add(sstable);
-            store.addSSTable(sstable);
-        }
-
-        // give garbage collection a bit of time to catch up
-        Thread.sleep(1000);
-
-        long start = System.currentTimeMillis();
-        final int gcBefore = (int) (System.currentTimeMillis() / 1000) - 
Schema.instance.getCFMetaData(TABLE1, "Standard1").getGcGraceSeconds();
-        new CompactionTask(store, sstables, gcBefore).execute(null);
-        System.out.println(String.format("%s: sstables=%d rowsper=%d 
colsper=%d: %d ms",
-                                         this.getClass().getName(),
-                                         sstableCount,
-                                         rowsPerSSTable,
-                                         colsPerRow,
-                                         System.currentTimeMillis() - start));
-    }
-}

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f92fb224/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
new file mode 100644
index 0000000..4407170
--- /dev/null
+++ b/test/long/org/apache/cassandra/db/compaction/LongCompactionsTest.java
@@ -0,0 +1,217 @@
+/*
+* 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.db.compaction;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.*;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
+import org.apache.cassandra.config.DatabaseDescriptor;
+import org.apache.cassandra.config.Schema;
+import org.junit.Test;
+import org.apache.cassandra.SchemaLoader;
+import org.apache.cassandra.Util;
+import org.apache.cassandra.db.*;
+import org.apache.cassandra.db.filter.QueryPath;
+import org.apache.cassandra.io.sstable.SSTableReader;
+import org.apache.cassandra.io.sstable.SSTableUtils;
+import org.apache.cassandra.utils.ByteBufferUtil;
+import org.apache.cassandra.utils.FBUtilities;
+
+import static junit.framework.Assert.assertEquals;
+
+public class LongCompactionsTest extends SchemaLoader
+{
+    public static final String TABLE1 = "Keyspace1";
+
+    /**
+     * Test compaction with a very wide row.
+     */
+    @Test
+    public void testCompactionWide() throws Exception
+    {
+        testCompaction(2, 1, 200000);
+    }
+
+    /**
+     * Test compaction with lots of skinny rows.
+     */
+    @Test
+    public void testCompactionSlim() throws Exception
+    {
+        testCompaction(2, 200000, 1);
+    }
+
+    /**
+     * Test compaction with lots of small sstables.
+     */
+    @Test
+    public void testCompactionMany() throws Exception
+    {
+        testCompaction(100, 800, 5);
+    }
+
+    protected void testCompaction(int sstableCount, int rowsPerSSTable, int 
colsPerRow) throws Exception
+    {
+        CompactionManager.instance.disableAutoCompaction();
+
+        Table table = Table.open(TABLE1);
+        ColumnFamilyStore store = table.getColumnFamilyStore("Standard1");
+
+        ArrayList<SSTableReader> sstables = new ArrayList<SSTableReader>();
+        for (int k = 0; k < sstableCount; k++)
+        {
+            SortedMap<String,ColumnFamily> rows = new 
TreeMap<String,ColumnFamily>();
+            for (int j = 0; j < rowsPerSSTable; j++)
+            {
+                String key = String.valueOf(j);
+                IColumn[] cols = new IColumn[colsPerRow];
+                for (int i = 0; i < colsPerRow; i++)
+                {
+                    // last sstable has highest timestamps
+                    cols[i] = Util.column(String.valueOf(i), 
String.valueOf(i), k);
+                }
+                rows.put(key, SSTableUtils.createCF(Long.MIN_VALUE, 
Integer.MIN_VALUE, cols));
+            }
+            SSTableReader sstable = SSTableUtils.prepare().write(rows);
+            sstables.add(sstable);
+            store.addSSTable(sstable);
+        }
+
+        // give garbage collection a bit of time to catch up
+        Thread.sleep(1000);
+
+        long start = System.currentTimeMillis();
+        final int gcBefore = (int) (System.currentTimeMillis() / 1000) - 
Schema.instance.getCFMetaData(TABLE1, "Standard1").getGcGraceSeconds();
+        new CompactionTask(store, sstables, gcBefore).execute(null);
+        System.out.println(String.format("%s: sstables=%d rowsper=%d 
colsper=%d: %d ms",
+                                         this.getClass().getName(),
+                                         sstableCount,
+                                         rowsPerSSTable,
+                                         colsPerRow,
+                                         System.currentTimeMillis() - start));
+    }
+
+    @Test
+    public void testStandardColumnCompactions() throws IOException, 
ExecutionException, InterruptedException
+    {
+        // this test does enough rows to force multiple block indexes to be 
used
+        Table table = Table.open(TABLE1);
+        ColumnFamilyStore cfs = table.getColumnFamilyStore("Standard1");
+
+        final int ROWS_PER_SSTABLE = 10;
+        final int SSTABLES = DatabaseDescriptor.getIndexInterval() * 3 / 
ROWS_PER_SSTABLE;
+
+        // disable compaction while flushing
+        cfs.disableAutoCompaction();
+
+        long maxTimestampExpected = Long.MIN_VALUE;
+        Set<DecoratedKey> inserted = new HashSet<DecoratedKey>();
+        for (int j = 0; j < SSTABLES; j++) {
+            for (int i = 0; i < ROWS_PER_SSTABLE; i++) {
+                DecoratedKey key = Util.dk(String.valueOf(i % 2));
+                RowMutation rm = new RowMutation(TABLE1, key.key);
+                long timestamp = j * ROWS_PER_SSTABLE + i;
+                rm.add(new QueryPath("Standard1", null, 
ByteBufferUtil.bytes(String.valueOf(i / 2))),
+                       ByteBufferUtil.EMPTY_BYTE_BUFFER,
+                       timestamp);
+                maxTimestampExpected = Math.max(timestamp, 
maxTimestampExpected);
+                rm.apply();
+                inserted.add(key);
+            }
+            cfs.forceBlockingFlush();
+            CompactionsTest.assertMaxTimestamp(cfs, maxTimestampExpected);
+            assertEquals(inserted.toString(), inserted.size(), 
Util.getRangeSlice(cfs).size());
+        }
+
+        forceCompactions(cfs);
+
+        assertEquals(inserted.size(), Util.getRangeSlice(cfs).size());
+
+        // make sure max timestamp of compacted sstables is recorded properly 
after compaction.
+        CompactionsTest.assertMaxTimestamp(cfs, maxTimestampExpected);
+        cfs.truncate();
+    }
+
+    @Test
+    public void testSuperColumnCompactions() throws IOException, 
ExecutionException, InterruptedException
+    {
+        Table table = Table.open(TABLE1);
+        ColumnFamilyStore cfs = table.getColumnFamilyStore("Super1");
+
+        final int ROWS_PER_SSTABLE = 10;
+        final int SSTABLES = DatabaseDescriptor.getIndexInterval() * 3 / 
ROWS_PER_SSTABLE;
+
+        //disable compaction while flushing
+        cfs.disableAutoCompaction();
+
+        long maxTimestampExpected = Long.MIN_VALUE;
+        Set<DecoratedKey> inserted = new HashSet<DecoratedKey>();
+        ByteBuffer superColumn = ByteBufferUtil.bytes("TestSuperColumn");
+        for (int j = 0; j < SSTABLES; j++)
+        {
+            for (int i = 0; i < ROWS_PER_SSTABLE; i++)
+            {
+                DecoratedKey key = Util.dk(String.valueOf(i % 2));
+                RowMutation rm = new RowMutation(TABLE1, key.key);
+                long timestamp = j * ROWS_PER_SSTABLE + i;
+                rm.add(new QueryPath("Super1", superColumn, 
ByteBufferUtil.bytes((long)(i / 2))),
+                       ByteBufferUtil.EMPTY_BYTE_BUFFER,
+                       timestamp);
+                maxTimestampExpected = Math.max(timestamp, 
maxTimestampExpected);
+                rm.apply();
+                inserted.add(key);
+            }
+            cfs.forceBlockingFlush();
+            CompactionsTest.assertMaxTimestamp(cfs, maxTimestampExpected);
+            assertEquals(inserted.toString(), inserted.size(), 
Util.getRangeSlice(cfs, superColumn).size());
+        }
+
+        forceCompactions(cfs);
+
+        assertEquals(inserted.size(), Util.getRangeSlice(cfs, 
superColumn).size());
+
+        // make sure max timestamp of compacted sstables is recorded properly 
after compaction.
+        CompactionsTest.assertMaxTimestamp(cfs, maxTimestampExpected);
+    }
+
+    private void forceCompactions(ColumnFamilyStore cfs) throws 
ExecutionException, InterruptedException
+    {
+        // re-enable compaction with thresholds low enough to force a few 
rounds
+        cfs.setCompactionThresholds(2, 4);
+
+        // loop submitting parallel compactions until they all return 0
+        do
+        {
+            ArrayList<Future<?>> compactions = new ArrayList<Future<?>>();
+            for (int i = 0; i < 10; i++)
+                
compactions.add(CompactionManager.instance.submitBackground(cfs));
+            // another compaction attempt will be launched in the background by
+            // each completing compaction: not much we can do to control them 
here
+            FBUtilities.waitOnFutures(compactions);
+        } while (CompactionManager.instance.getPendingTasks() > 0 || 
CompactionManager.instance.getActiveCompactions() > 0);
+
+        if (cfs.getSSTables().size() > 1)
+        {
+            CompactionManager.instance.performMaximal(cfs);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f92fb224/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java 
b/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java
index dc5a256..6795f87 100644
--- a/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java
+++ b/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java
@@ -62,47 +62,6 @@ public class CompactionsTest extends SchemaLoader
         testBlacklisting(LeveledCompactionStrategy.class.getCanonicalName());
     }
 
-    @Test
-    public void testStandardColumnCompactions() throws IOException, 
ExecutionException, InterruptedException
-    {
-        // this test does enough rows to force multiple block indexes to be 
used
-        Table table = Table.open(TABLE1);
-        ColumnFamilyStore cfs = table.getColumnFamilyStore("Standard1");
-
-        final int ROWS_PER_SSTABLE = 10;
-        final int SSTABLES = DatabaseDescriptor.getIndexInterval() * 3 / 
ROWS_PER_SSTABLE;
-
-        // disable compaction while flushing
-        cfs.disableAutoCompaction();
-
-        long maxTimestampExpected = Long.MIN_VALUE;
-        Set<DecoratedKey> inserted = new HashSet<DecoratedKey>();
-        for (int j = 0; j < SSTABLES; j++) {
-            for (int i = 0; i < ROWS_PER_SSTABLE; i++) {
-                DecoratedKey key = Util.dk(String.valueOf(i % 2));
-                RowMutation rm = new RowMutation(TABLE1, key.key);
-                long timestamp = j * ROWS_PER_SSTABLE + i;
-                rm.add(new QueryPath("Standard1", null, 
ByteBufferUtil.bytes(String.valueOf(i / 2))),
-                       ByteBufferUtil.EMPTY_BYTE_BUFFER,
-                       timestamp);
-                maxTimestampExpected = Math.max(timestamp, 
maxTimestampExpected);
-                rm.apply();
-                inserted.add(key);
-            }
-            cfs.forceBlockingFlush();
-            assertMaxTimestamp(cfs, maxTimestampExpected);
-            assertEquals(inserted.toString(), inserted.size(), 
Util.getRangeSlice(cfs).size());
-        }
-
-        forceCompactions(cfs);
-
-        assertEquals(inserted.size(), Util.getRangeSlice(cfs).size());
-
-        // make sure max timestamp of compacted sstables is recorded properly 
after compaction.
-        assertMaxTimestamp(cfs, maxTimestampExpected);
-        cfs.truncate();
-    }
-
     /**
      * Test to see if sstable has enough expired columns, it is compacted 
itself.
      */
@@ -205,48 +164,6 @@ public class CompactionsTest extends SchemaLoader
     }
 
     @Test
-    public void testSuperColumnCompactions() throws IOException, 
ExecutionException, InterruptedException
-    {
-        Table table = Table.open(TABLE1);
-        ColumnFamilyStore cfs = table.getColumnFamilyStore("Super1");
-
-        final int ROWS_PER_SSTABLE = 10;
-        final int SSTABLES = DatabaseDescriptor.getIndexInterval() * 3 / 
ROWS_PER_SSTABLE;
-
-        //disable compaction while flushing
-        cfs.disableAutoCompaction();
-
-        long maxTimestampExpected = Long.MIN_VALUE;
-        Set<DecoratedKey> inserted = new HashSet<DecoratedKey>();
-        ByteBuffer superColumn = ByteBufferUtil.bytes("TestSuperColumn");
-        for (int j = 0; j < SSTABLES; j++)
-        {
-            for (int i = 0; i < ROWS_PER_SSTABLE; i++)
-            {
-                DecoratedKey key = Util.dk(String.valueOf(i % 2));
-                RowMutation rm = new RowMutation(TABLE1, key.key);
-                long timestamp = j * ROWS_PER_SSTABLE + i;
-                rm.add(new QueryPath("Super1", superColumn, 
ByteBufferUtil.bytes((long)(i / 2))),
-                       ByteBufferUtil.EMPTY_BYTE_BUFFER,
-                       timestamp);
-                maxTimestampExpected = Math.max(timestamp, 
maxTimestampExpected);
-                rm.apply();
-                inserted.add(key);
-            }
-            cfs.forceBlockingFlush();
-            assertMaxTimestamp(cfs, maxTimestampExpected);
-            assertEquals(inserted.toString(), inserted.size(), 
Util.getRangeSlice(cfs, superColumn).size());
-        }
-
-        forceCompactions(cfs);
-
-        assertEquals(inserted.size(), Util.getRangeSlice(cfs, 
superColumn).size());
-
-        // make sure max timestamp of compacted sstables is recorded properly 
after compaction.
-        assertMaxTimestamp(cfs, maxTimestampExpected);
-    }
-
-    @Test
     public void testSuperColumnTombstones() throws IOException, 
ExecutionException, InterruptedException
     {
         Table table = Table.open(TABLE1);
@@ -283,7 +200,7 @@ public class CompactionsTest extends SchemaLoader
         assert sc.getSubColumns().isEmpty();
     }
 
-    public void assertMaxTimestamp(ColumnFamilyStore cfs, long 
maxTimestampExpected)
+    public static void assertMaxTimestamp(ColumnFamilyStore cfs, long 
maxTimestampExpected)
     {
         long maxTimestampObserved = Long.MIN_VALUE;
         for (SSTableReader sstable : cfs.getSSTables())
@@ -291,28 +208,6 @@ public class CompactionsTest extends SchemaLoader
         assertEquals(maxTimestampExpected, maxTimestampObserved);
     }
 
-    private void forceCompactions(ColumnFamilyStore cfs) throws 
ExecutionException, InterruptedException
-    {
-        // re-enable compaction with thresholds low enough to force a few 
rounds
-        cfs.setCompactionThresholds(2, 4);
-
-        // loop submitting parallel compactions until they all return 0
-        do
-        {
-            ArrayList<Future<?>> compactions = new ArrayList<Future<?>>();
-            for (int i = 0; i < 10; i++)
-                
compactions.add(CompactionManager.instance.submitBackground(cfs));
-            // another compaction attempt will be launched in the background by
-            // each completing compaction: not much we can do to control them 
here
-            FBUtilities.waitOnFutures(compactions);
-        } while (CompactionManager.instance.getPendingTasks() > 0 || 
CompactionManager.instance.getActiveCompactions() > 0);
-
-        if (cfs.getSSTables().size() > 1)
-        {
-            CompactionManager.instance.performMaximal(cfs);
-        }
-    }
-
     @Test
     public void testEchoedRow() throws IOException, ExecutionException, 
InterruptedException
     {

Reply via email to