You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by be...@apache.org on 2015/06/03 14:10:21 UTC

[6/9] cassandra git commit: Do not reuse cfs in MockSchema

Do not reuse cfs in MockSchema

patch by stefania; reviewed by benedict for CASSANDRA-9537


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

Branch: refs/heads/trunk
Commit: 99da210229b9ddab8ce46d0664c46fe92282c6e3
Parents: c1c7855
Author: stefania <st...@datastax.com>
Authored: Wed Jun 3 13:07:21 2015 +0100
Committer: Benedict Elliott Smith <be...@apache.org>
Committed: Wed Jun 3 13:07:21 2015 +0100

----------------------------------------------------------------------
 test/unit/org/apache/cassandra/MockSchema.java  | 21 +++-----
 .../cassandra/db/lifecycle/HelpersTest.java     |  7 ++-
 .../db/lifecycle/LifecycleTransactionTest.java  | 52 ++++++++++++--------
 .../cassandra/db/lifecycle/TrackerTest.java     | 24 ++++++---
 .../apache/cassandra/db/lifecycle/ViewTest.java | 24 +++++----
 5 files changed, 74 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/99da2102/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
index 86593c2..94313cd 100644
--- a/test/unit/org/apache/cassandra/MockSchema.java
+++ b/test/unit/org/apache/cassandra/MockSchema.java
@@ -62,38 +62,33 @@ public class MockSchema
     }
     private static final AtomicInteger id = new AtomicInteger();
     public static final Keyspace ks = Keyspace.mockKS(new KSMetaData("mockks", SimpleStrategy.class, ImmutableMap.of("replication_factor", "1"), false));
-    public static final ColumnFamilyStore cfs = newCFS();
 
     private static final IndexSummary indexSummary;
     private static final SegmentedFile segmentedFile = new BufferedSegmentedFile(new ChannelProxy(temp("mocksegmentedfile")), 0);
 
-    public static Memtable memtable()
+    public static Memtable memtable(ColumnFamilyStore cfs)
     {
         return new Memtable(cfs.metadata);
     }
 
-    public static SSTableReader sstable(int generation)
+    public static SSTableReader sstable(int generation, ColumnFamilyStore cfs)
     {
-        return sstable(generation, false);
+        return sstable(generation, false, cfs);
     }
 
-    public static SSTableReader sstable(int generation, boolean keepRef)
+    public static SSTableReader sstable(int generation, boolean keepRef, ColumnFamilyStore cfs)
     {
-        return sstable(generation, 0, keepRef);
+        return sstable(generation, 0, keepRef, cfs);
     }
 
-    public static SSTableReader sstable(int generation, int size)
+    public static SSTableReader sstable(int generation, int size, ColumnFamilyStore cfs)
     {
-        return sstable(generation, size, false);
+        return sstable(generation, size, false, cfs);
     }
 
-    public static SSTableReader sstable(int generation, int size, boolean keepRef)
-    {
-        return sstable(generation, size, keepRef, cfs);
-    }
     public static SSTableReader sstable(int generation, int size, boolean keepRef, ColumnFamilyStore cfs)
     {
-        Descriptor descriptor = new Descriptor(temp("mockcfdir").getParentFile(), "mockks", "mockcf", generation, Descriptor.Type.FINAL);
+        Descriptor descriptor = new Descriptor(temp("mockcfdir").getParentFile(), ks.getName(), cfs.getColumnFamilyName(), generation, Descriptor.Type.FINAL);
         Set<Component> components = ImmutableSet.of(Component.DATA, Component.PRIMARY_INDEX, Component.FILTER, Component.TOC);
         for (Component component : components)
         {

http://git-wip-us.apache.org/repos/asf/cassandra/blob/99da2102/test/unit/org/apache/cassandra/db/lifecycle/HelpersTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/lifecycle/HelpersTest.java b/test/unit/org/apache/cassandra/db/lifecycle/HelpersTest.java
index d53a830..24d2bda 100644
--- a/test/unit/org/apache/cassandra/db/lifecycle/HelpersTest.java
+++ b/test/unit/org/apache/cassandra/db/lifecycle/HelpersTest.java
@@ -30,6 +30,7 @@ import org.junit.Test;
 import junit.framework.Assert;
 import org.apache.cassandra.MockSchema;
 import org.apache.cassandra.Util;
+import org.apache.cassandra.db.ColumnFamilyStore;
 import org.apache.cassandra.io.sstable.Descriptor;
 import org.apache.cassandra.io.sstable.format.SSTableReader;
 import org.apache.cassandra.io.sstable.format.big.BigTableReader;
@@ -135,7 +136,8 @@ public class HelpersTest
     @Test
     public void testSetupDeletionNotification()
     {
-        Iterable<SSTableReader> readers = Lists.newArrayList(MockSchema.sstable(1), MockSchema.sstable(2));
+        ColumnFamilyStore cfs = MockSchema.newCFS();
+        Iterable<SSTableReader> readers = Lists.newArrayList(MockSchema.sstable(1, cfs), MockSchema.sstable(2, cfs));
         Throwable accumulate = Helpers.setReplaced(readers, null);
         Assert.assertNull(accumulate);
         for (SSTableReader reader : readers)
@@ -147,7 +149,8 @@ public class HelpersTest
     @Test
     public void testMarkObsolete()
     {
-        Iterable<SSTableReader> readers = Lists.newArrayList(MockSchema.sstable(1), MockSchema.sstable(2));
+        ColumnFamilyStore cfs = MockSchema.newCFS();
+        Iterable<SSTableReader> readers = Lists.newArrayList(MockSchema.sstable(1, cfs), MockSchema.sstable(2, cfs));
         Throwable accumulate = Helpers.markObsolete(readers, null);
         Assert.assertNull(accumulate);
         for (SSTableReader reader : readers)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/99da2102/test/unit/org/apache/cassandra/db/lifecycle/LifecycleTransactionTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/lifecycle/LifecycleTransactionTest.java b/test/unit/org/apache/cassandra/db/lifecycle/LifecycleTransactionTest.java
index 3153ef1..2c6c830 100644
--- a/test/unit/org/apache/cassandra/db/lifecycle/LifecycleTransactionTest.java
+++ b/test/unit/org/apache/cassandra/db/lifecycle/LifecycleTransactionTest.java
@@ -28,11 +28,13 @@ import org.junit.Test;
 import junit.framework.Assert;
 import org.apache.cassandra.MockSchema;
 import org.apache.cassandra.config.DatabaseDescriptor;
+import org.apache.cassandra.db.ColumnFamilyStore;
 import org.apache.cassandra.db.compaction.OperationType;
 import org.apache.cassandra.db.lifecycle.LifecycleTransaction.ReaderState;
 import org.apache.cassandra.db.lifecycle.LifecycleTransaction.ReaderState.Action;
 import org.apache.cassandra.io.sstable.SSTableDeletingTask;
 import org.apache.cassandra.io.sstable.format.SSTableReader;
+import org.apache.cassandra.metrics.ColumnFamilyMetrics;
 import org.apache.cassandra.utils.Pair;
 import org.apache.cassandra.utils.concurrent.AbstractTransactionalTest;
 import org.apache.cassandra.utils.concurrent.Transactional.AbstractTransactional.State;
@@ -66,10 +68,11 @@ public class LifecycleTransactionTest extends AbstractTransactionalTest
     @Test
     public void testUpdates() // (including obsoletion)
     {
+        ColumnFamilyStore cfs = MockSchema.newCFS();
         Tracker tracker = new Tracker(null, false);
-        SSTableReader[] readers = readersArray(0, 3);
-        SSTableReader[] readers2 = readersArray(0, 4);
-        SSTableReader[] readers3 = readersArray(0, 4);
+        SSTableReader[] readers = readersArray(0, 3, cfs);
+        SSTableReader[] readers2 = readersArray(0, 4, cfs);
+        SSTableReader[] readers3 = readersArray(0, 4, cfs);
         tracker.addInitialSSTables(copyOf(readers));
         LifecycleTransaction txn = tracker.tryModify(copyOf(readers), OperationType.UNKNOWN);
 
@@ -129,15 +132,16 @@ public class LifecycleTransactionTest extends AbstractTransactionalTest
     @Test
     public void testCancellation()
     {
+        ColumnFamilyStore cfs = MockSchema.newCFS();
         Tracker tracker = new Tracker(null, false);
-        List<SSTableReader> readers = readers(0, 3);
+        List<SSTableReader> readers = readers(0, 3, cfs);
         tracker.addInitialSSTables(readers);
         LifecycleTransaction txn = tracker.tryModify(readers, OperationType.UNKNOWN);
 
         SSTableReader cancel = readers.get(0);
-        SSTableReader update = readers(1, 2).get(0);
-        SSTableReader fresh = readers(3, 4).get(0);
-        SSTableReader notPresent = readers(4, 5).get(0);
+        SSTableReader update = readers(1, 2, cfs).get(0);
+        SSTableReader fresh = readers(3, 4,cfs).get(0);
+        SSTableReader notPresent = readers(4, 5, cfs).get(0);
 
         txn.cancel(cancel);
         txn.update(update, true);
@@ -172,8 +176,9 @@ public class LifecycleTransactionTest extends AbstractTransactionalTest
     @Test
     public void testSplit()
     {
+        ColumnFamilyStore cfs = MockSchema.newCFS();
         Tracker tracker = new Tracker(null, false);
-        List<SSTableReader> readers = readers(0, 3);
+        List<SSTableReader> readers = readers(0, 3, cfs);
         tracker.addInitialSSTables(readers);
         LifecycleTransaction txn = tracker.tryModify(readers, OperationType.UNKNOWN);
         LifecycleTransaction txn2 = txn.split(readers.subList(0, 1));
@@ -181,7 +186,7 @@ public class LifecycleTransactionTest extends AbstractTransactionalTest
         Assert.assertTrue(all(readers.subList(1, 3), in(txn.originals())));
         Assert.assertEquals(1, txn2.originals().size());
         Assert.assertTrue(all(readers.subList(0, 1), in(txn2.originals())));
-        txn.update(readers(1, 2).get(0), true);
+        txn.update(readers(1, 2, cfs).get(0), true);
         boolean failed = false;
         try
         {
@@ -255,21 +260,26 @@ public class LifecycleTransactionTest extends AbstractTransactionalTest
         final Tracker tracker;
         final LifecycleTransaction txn;
 
-        private static Tracker tracker(List<SSTableReader> readers)
+        private static Tracker tracker(ColumnFamilyStore cfs, List<SSTableReader> readers)
         {
-            Tracker tracker = new Tracker(MockSchema.cfs, false);
+            Tracker tracker = new Tracker(cfs, false);
             tracker.addInitialSSTables(readers);
             return tracker;
         }
 
         private TxnTest()
         {
-            this(readers(0, 8));
+            this(MockSchema.newCFS());
         }
 
-        private TxnTest(List<SSTableReader> readers)
+        private TxnTest(ColumnFamilyStore cfs)
         {
-            this(tracker(readers), readers);
+            this(cfs, readers(0, 8, cfs));
+        }
+
+        private TxnTest(ColumnFamilyStore cfs, List<SSTableReader> readers)
+        {
+            this(tracker(cfs, readers), readers);
         }
 
         private TxnTest(Tracker tracker, List<SSTableReader> readers)
@@ -283,11 +293,11 @@ public class LifecycleTransactionTest extends AbstractTransactionalTest
             this.tracker = tracker;
             this.originals = readers;
             this.txn = txn;
-            update(txn, loggedUpdate = readers(0, 2), true);
+            update(txn, loggedUpdate = readers(0, 2, tracker.cfstore), true);
             obsolete(txn, loggedObsolete = readers.subList(2, 4));
-            update(txn, loggedNew = readers(8, 10), false);
+            update(txn, loggedNew = readers(8, 10, tracker.cfstore), false);
             txn.checkpoint();
-            update(txn, stagedNew = readers(10, 12), false);
+            update(txn, stagedNew = readers(10, 12, tracker.cfstore), false);
             obsolete(txn, stagedObsolete = copyOf(concat(loggedUpdate, originals.subList(4, 6))));
             untouchedOriginals = originals.subList(6, 8);
         }
@@ -385,16 +395,16 @@ public class LifecycleTransactionTest extends AbstractTransactionalTest
         }
     }
 
-    private static SSTableReader[] readersArray(int lb, int ub)
+    private static SSTableReader[] readersArray(int lb, int ub, ColumnFamilyStore cfs)
     {
-        return readers(lb, ub).toArray(new SSTableReader[0]);
+        return readers(lb, ub, cfs).toArray(new SSTableReader[0]);
     }
 
-    private static List<SSTableReader> readers(int lb, int ub)
+    private static List<SSTableReader> readers(int lb, int ub, ColumnFamilyStore cfs)
     {
         List<SSTableReader> readers = new ArrayList<>();
         for (int i = lb ; i < ub ; i++)
-            readers.add(MockSchema.sstable(i, i, true));
+            readers.add(MockSchema.sstable(i, i, true, cfs));
         return copyOf(readers);
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/99da2102/test/unit/org/apache/cassandra/db/lifecycle/TrackerTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/lifecycle/TrackerTest.java b/test/unit/org/apache/cassandra/db/lifecycle/TrackerTest.java
index 1859e70..0d46153 100644
--- a/test/unit/org/apache/cassandra/db/lifecycle/TrackerTest.java
+++ b/test/unit/org/apache/cassandra/db/lifecycle/TrackerTest.java
@@ -82,7 +82,7 @@ public class TrackerTest
     {
         ColumnFamilyStore cfs = MockSchema.newCFS();
         Tracker tracker = new Tracker(cfs, false);
-        List<SSTableReader> readers = ImmutableList.of(MockSchema.sstable(0), MockSchema.sstable(1), MockSchema.sstable(2));
+        List<SSTableReader> readers = ImmutableList.of(MockSchema.sstable(0, cfs), MockSchema.sstable(1, cfs), MockSchema.sstable(2, cfs));
         tracker.addInitialSSTables(copyOf(readers));
         try (LifecycleTransaction txn = tracker.tryModify(readers.get(0), OperationType.COMPACTION);)
         {
@@ -101,8 +101,9 @@ public class TrackerTest
     @Test
     public void testApply()
     {
+        final ColumnFamilyStore cfs = MockSchema.newCFS();
         final Tracker tracker = new Tracker(null, false);
-        final View resultView = ViewTest.fakeView(0, 0);
+        final View resultView = ViewTest.fakeView(0, 0, cfs);
         final AtomicInteger count = new AtomicInteger();
         tracker.apply(new Predicate<View>()
         {
@@ -110,7 +111,7 @@ public class TrackerTest
             {
                 // confound the CAS by swapping the view, and check we retry
                 if (count.incrementAndGet() < 3)
-                    tracker.view.set(ViewTest.fakeView(0, 0));
+                    tracker.view.set(ViewTest.fakeView(0, 0, cfs));
                 return true;
             }
         }, new Function<View, View>()
@@ -143,7 +144,9 @@ public class TrackerTest
     {
         ColumnFamilyStore cfs = MockSchema.newCFS();
         Tracker tracker = new Tracker(cfs, false);
-        List<SSTableReader> readers = ImmutableList.of(MockSchema.sstable(0, 17), MockSchema.sstable(1, 121), MockSchema.sstable(2, 9));
+        List<SSTableReader> readers = ImmutableList.of(MockSchema.sstable(0, 17, cfs),
+                                                       MockSchema.sstable(1, 121, cfs),
+                                                       MockSchema.sstable(2, 9, cfs));
         tracker.addInitialSSTables(copyOf(readers));
 
         Assert.assertEquals(3, tracker.view.get().sstables.size());
@@ -163,7 +166,9 @@ public class TrackerTest
         Tracker tracker = new Tracker(cfs, false);
         MockListener listener = new MockListener(false);
         tracker.subscribe(listener);
-        List<SSTableReader> readers = ImmutableList.of(MockSchema.sstable(0, 17), MockSchema.sstable(1, 121), MockSchema.sstable(2, 9));
+        List<SSTableReader> readers = ImmutableList.of(MockSchema.sstable(0, 17, cfs),
+                                                       MockSchema.sstable(1, 121, cfs),
+                                                       MockSchema.sstable(2, 9, cfs));
         tracker.addSSTables(copyOf(readers));
 
         Assert.assertEquals(3, tracker.view.get().sstables.size());
@@ -193,7 +198,9 @@ public class TrackerTest
         Tracker tracker = cfs.getTracker();
         MockListener listener = new MockListener(false);
         tracker.subscribe(listener);
-        final List<SSTableReader> readers = ImmutableList.of(MockSchema.sstable(0, 9, true), MockSchema.sstable(1, 15, true), MockSchema.sstable(2, 71, true));
+        final List<SSTableReader> readers = ImmutableList.of(MockSchema.sstable(0, 9, true, cfs),
+                                                             MockSchema.sstable(1, 15, true, cfs),
+                                                             MockSchema.sstable(2, 71, true, cfs));
         tracker.addInitialSSTables(copyOf(readers));
 
         try
@@ -321,7 +328,8 @@ public class TrackerTest
     @Test
     public void testNotifications()
     {
-        SSTableReader r1 = MockSchema.sstable(0), r2 = MockSchema.sstable(1);
+        ColumnFamilyStore cfs = MockSchema.newCFS();
+        SSTableReader r1 = MockSchema.sstable(0, cfs), r2 = MockSchema.sstable(1, cfs);
         Tracker tracker = new Tracker(null, false);
         MockListener listener = new MockListener(false);
         tracker.subscribe(listener);
@@ -338,7 +346,7 @@ public class TrackerTest
         tracker.notifySSTableRepairedStatusChanged(singleton(r1));
         Assert.assertEquals(singleton(r1), ((SSTableRepairStatusChanged) listener.received.get(0)).sstable);
         listener.received.clear();
-        Memtable memtable = MockSchema.memtable();
+        Memtable memtable = MockSchema.memtable(cfs);
         tracker.notifyRenewed(memtable);
         Assert.assertEquals(memtable, ((MemtableRenewedNotification) listener.received.get(0)).renewed);
         listener.received.clear();

http://git-wip-us.apache.org/repos/asf/cassandra/blob/99da2102/test/unit/org/apache/cassandra/db/lifecycle/ViewTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/lifecycle/ViewTest.java b/test/unit/org/apache/cassandra/db/lifecycle/ViewTest.java
index 811e025..aa99fbd 100644
--- a/test/unit/org/apache/cassandra/db/lifecycle/ViewTest.java
+++ b/test/unit/org/apache/cassandra/db/lifecycle/ViewTest.java
@@ -30,6 +30,7 @@ import org.junit.Test;
 
 import junit.framework.Assert;
 import org.apache.cassandra.MockSchema;
+import org.apache.cassandra.db.ColumnFamilyStore;
 import org.apache.cassandra.db.Memtable;
 import org.apache.cassandra.db.RowPosition;
 import org.apache.cassandra.dht.AbstractBounds;
@@ -46,7 +47,8 @@ public class ViewTest
     @Test
     public void testSSTablesInBounds()
     {
-        View initialView = fakeView(0, 5);
+        ColumnFamilyStore cfs = MockSchema.newCFS();
+        View initialView = fakeView(0, 5, cfs);
         for (int i = 0 ; i < 5 ; i++)
         {
             for (int j = i ; j < 5 ; j++)
@@ -70,7 +72,8 @@ public class ViewTest
     @Test
     public void testCompaction()
     {
-        View initialView = fakeView(0, 5);
+        ColumnFamilyStore cfs = MockSchema.newCFS();
+        View initialView = fakeView(0, 5, cfs);
         View cur = initialView;
         List<SSTableReader> readers = ImmutableList.copyOf(initialView.sstables);
         Assert.assertTrue(View.permitCompacting(readers).apply(cur));
@@ -96,7 +99,7 @@ public class ViewTest
         testFailure(View.updateCompacting(copyOf(readers.subList(0, 1)), readers.subList(1, 2)), cur);
 
         // make equivalents of readers.subList(0, 3) that are different instances
-        SSTableReader r0 = MockSchema.sstable(0), r1 = MockSchema.sstable(1), r2 = MockSchema.sstable(2);
+        SSTableReader r0 = MockSchema.sstable(0, cfs), r1 = MockSchema.sstable(1, cfs), r2 = MockSchema.sstable(2, cfs);
         // attempt to mark compacting a version not in the live set
         testFailure(View.updateCompacting(emptySet(), of(r2)), cur);
         // update one compacting, one non-compacting, of the liveset to another instance of the same readers;
@@ -138,17 +141,18 @@ public class ViewTest
     @Test
     public void testFlushing()
     {
-        View initialView = fakeView(1, 0);
+        ColumnFamilyStore cfs = MockSchema.newCFS();
+        View initialView = fakeView(1, 0, cfs);
         View cur = initialView;
         Memtable memtable1 = initialView.getCurrentMemtable();
-        Memtable memtable2 = MockSchema.memtable();
+        Memtable memtable2 = MockSchema.memtable(cfs);
 
         cur = View.switchMemtable(memtable2).apply(cur);
         Assert.assertEquals(2, cur.liveMemtables.size());
         Assert.assertEquals(memtable1, cur.liveMemtables.get(0));
         Assert.assertEquals(memtable2, cur.getCurrentMemtable());
 
-        Memtable memtable3 = MockSchema.memtable();
+        Memtable memtable3 = MockSchema.memtable(cfs);
         cur = View.switchMemtable(memtable3).apply(cur);
         Assert.assertEquals(3, cur.liveMemtables.size());
         Assert.assertEquals(0, cur.flushingMemtables.size());
@@ -179,7 +183,7 @@ public class ViewTest
         Assert.assertEquals(memtable1, cur.flushingMemtables.get(0));
         Assert.assertEquals(memtable3, cur.getCurrentMemtable());
 
-        SSTableReader sstable = MockSchema.sstable(1);
+        SSTableReader sstable = MockSchema.sstable(1, cfs);
         cur = View.replaceFlushed(memtable1, sstable).apply(cur);
         Assert.assertEquals(0, cur.flushingMemtables.size());
         Assert.assertEquals(1, cur.liveMemtables.size());
@@ -188,14 +192,14 @@ public class ViewTest
         Assert.assertEquals(sstable, cur.sstablesMap.get(sstable));
     }
 
-    static View fakeView(int memtableCount, int sstableCount)
+    static View fakeView(int memtableCount, int sstableCount, ColumnFamilyStore cfs)
     {
         List<Memtable> memtables = new ArrayList<>();
         List<SSTableReader> sstables = new ArrayList<>();
         for (int i = 0 ; i < memtableCount ; i++)
-            memtables.add(MockSchema.memtable());
+            memtables.add(MockSchema.memtable(cfs));
         for (int i = 0 ; i < sstableCount ; i++)
-            sstables.add(MockSchema.sstable(i));
+            sstables.add(MockSchema.sstable(i, cfs));
         return new View(ImmutableList.copyOf(memtables), Collections.<Memtable>emptyList(), Helpers.identityMap(sstables),
                         Collections.<SSTableReader>emptySet(), SSTableIntervalTree.build(sstables));
     }