http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Indexed1.626972746864617465-hb-1-Statistics.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Indexed1.626972746864617465-hb-1-Statistics.db b/test/data/legacy-sstables/hb/Keyspace1/Indexed1.626972746864617465-hb-1-Statistics.db deleted file mode 100644 index 78c4ed3..0000000 Binary files a/test/data/legacy-sstables/hb/Keyspace1/Indexed1.626972746864617465-hb-1-Statistics.db and /dev/null differ
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Data.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Data.db b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Data.db new file mode 100644 index 0000000..896897a Binary files /dev/null and b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Data.db differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Digest.sha1 ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Digest.sha1 b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Digest.sha1 new file mode 100644 index 0000000..bc0c4e4 --- /dev/null +++ b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Digest.sha1 @@ -0,0 +1 @@ +095dd05150d499846782cdf1c77544048477cc9b Indexed1-hb-1-Data.db \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Filter.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Filter.db b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Filter.db new file mode 100644 index 0000000..4b61a27 Binary files /dev/null and b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Filter.db differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Index.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Index.db b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Index.db new file mode 100644 index 0000000..03b3dc8 Binary files /dev/null and b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Index.db differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Statistics.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Statistics.db b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Statistics.db new file mode 100644 index 0000000..78c4ed3 Binary files /dev/null and b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1-hb-1-Statistics.db differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Data.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Data.db b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Data.db new file mode 100644 index 0000000..2bdae87 Binary files /dev/null and b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Data.db differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Digest.sha1 ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Digest.sha1 b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Digest.sha1 new file mode 100644 index 0000000..7af63e1 --- /dev/null +++ b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Digest.sha1 @@ -0,0 +1 @@ +a6a32d25ca3cdf76ac5a1a6bffa78936463f9648 Indexed1.626972746864617465-hb-1-Data.db \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Filter.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Filter.db b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Filter.db new file mode 100644 index 0000000..1fd5362 Binary files /dev/null and b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Filter.db differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Index.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Index.db b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Index.db new file mode 100644 index 0000000..d9a482f Binary files /dev/null and b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Index.db differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Statistics.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Statistics.db b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Statistics.db new file mode 100644 index 0000000..78c4ed3 Binary files /dev/null and b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Indexed1.626972746864617465-hb-1-Statistics.db differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Data.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Data.db b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Data.db new file mode 100644 index 0000000..1cd5d15 Binary files /dev/null and b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Data.db differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Digest.sha1 ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Digest.sha1 b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Digest.sha1 new file mode 100644 index 0000000..fa25470 --- /dev/null +++ b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Digest.sha1 @@ -0,0 +1 @@ +72295cc1b64e6ffdb67a39dec9996c4ff0363cce Standard1-hb-0-Data.db \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Filter.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Filter.db b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Filter.db new file mode 100644 index 0000000..1fc4460 Binary files /dev/null and b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Filter.db differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Index.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Index.db b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Index.db new file mode 100644 index 0000000..bfe71f5 Binary files /dev/null and b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Index.db differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Statistics.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Statistics.db b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Statistics.db new file mode 100644 index 0000000..8c256e9 Binary files /dev/null and b/test/data/legacy-sstables/hb/Keyspace1/Keyspace1-Standard1-hb-0-Statistics.db differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Data.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Data.db b/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Data.db deleted file mode 100644 index 1cd5d15..0000000 Binary files a/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Data.db and /dev/null differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Digest.sha1 ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Digest.sha1 b/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Digest.sha1 deleted file mode 100644 index fa25470..0000000 --- a/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Digest.sha1 +++ /dev/null @@ -1 +0,0 @@ -72295cc1b64e6ffdb67a39dec9996c4ff0363cce Standard1-hb-0-Data.db \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Filter.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Filter.db b/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Filter.db deleted file mode 100644 index 1fc4460..0000000 Binary files a/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Filter.db and /dev/null differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Index.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Index.db b/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Index.db deleted file mode 100644 index bfe71f5..0000000 Binary files a/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Index.db and /dev/null differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Statistics.db ---------------------------------------------------------------------- diff --git a/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Statistics.db b/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Statistics.db deleted file mode 100644 index 8c256e9..0000000 Binary files a/test/data/legacy-sstables/hb/Keyspace1/Standard1-hb-0-Statistics.db and /dev/null differ http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/unit/org/apache/cassandra/Util.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/Util.java b/test/unit/org/apache/cassandra/Util.java index 0248869..68ae228 100644 --- a/test/unit/org/apache/cassandra/Util.java +++ b/test/unit/org/apache/cassandra/Util.java @@ -231,7 +231,7 @@ public class Util public static void compact(ColumnFamilyStore cfs, Collection<SSTableReader> sstables, boolean forceDeserialize) throws IOException { CompactionTask task = new CompactionTask(cfs, sstables, (int) (System.currentTimeMillis() / 1000) - cfs.metadata.getGcGraceSeconds()); - task.isUserDefined(forceDeserialize).compactionFileLocation(cfs.table.getDataFileLocation(1)); + task.isUserDefined(forceDeserialize); task.execute(null); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java b/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java index 60ffe59..c5c4273 100644 --- a/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java +++ b/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java @@ -686,13 +686,12 @@ public class ColumnFamilyStoreTest extends CleanupHelper @Test public void testBackupAfterFlush() throws Throwable { - insertKey1Key2(); - - File backupDir = new File(DatabaseDescriptor.getDataFileLocationForTable("Keyspace2", 0), "backups"); + ColumnFamilyStore cfs = insertKey1Key2(); for (int version = 1; version <= 2; ++version) { - Descriptor desc = new Descriptor(backupDir, "Keyspace2", "Standard1", version, false); + Descriptor existing = new Descriptor(cfs.directories.getDirectoryForNewSSTables(1), "Keyspace2", "Standard1", version, false); + Descriptor desc = new Descriptor(Directories.getBackupsDirectory(existing), "Keyspace2", "Standard1", version, false); for (Component c : new Component[]{ Component.DATA, Component.PRIMARY_INDEX, Component.FILTER, Component.STATS }) assertTrue("can not find backedup file:" + desc.filenameFor(c), new File(desc.filenameFor(c)).exists()); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/unit/org/apache/cassandra/db/DefsTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/db/DefsTest.java b/test/unit/org/apache/cassandra/db/DefsTest.java index 8b7cabe..481b07c 100644 --- a/test/unit/org/apache/cassandra/db/DefsTest.java +++ b/test/unit/org/apache/cassandra/db/DefsTest.java @@ -56,7 +56,7 @@ import org.apache.cassandra.utils.ByteBufferUtil; public class DefsTest extends CleanupHelper -{ +{ @Test public void testZeroInjection() throws IOException { @@ -293,7 +293,7 @@ public class DefsTest extends CleanupHelper assert store != null; store.forceBlockingFlush(); store.getFlushPath(1024, Descriptor.CURRENT_VERSION); - assert DefsTable.getFiles(cfm.ksName, cfm.cfName).size() > 0; + assert store.directories.sstableLister().list().size() > 0; new DropColumnFamily(ks.name, cfm.cfName).apply(); @@ -314,7 +314,7 @@ public class DefsTest extends CleanupHelper assert !success : "This mutation should have failed since the CF no longer exists."; // verify that the files are gone. - for (File file : DefsTable.getFiles(cfm.ksName, cfm.cfName)) + for (File file : store.directories.sstableLister().listFiles()) { if (file.getPath().endsWith("Data.db") && !new File(file.getPath().replace("Data.db", "Compacted")).exists()) throw new AssertionError("undeleted file " + file); @@ -366,7 +366,7 @@ public class DefsTest extends CleanupHelper ColumnFamilyStore store = Table.open(cfm.ksName).getColumnFamilyStore(cfm.cfName); assert store != null; store.forceBlockingFlush(); - assert DefsTable.getFiles(cfm.ksName, cfm.cfName).size() > 0; + assert store.directories.sstableLister().list().size() > 0; new DropKeyspace(ks.name).apply(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/unit/org/apache/cassandra/db/DirectoriesTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/db/DirectoriesTest.java b/test/unit/org/apache/cassandra/db/DirectoriesTest.java new file mode 100644 index 0000000..cf8c450 --- /dev/null +++ b/test/unit/org/apache/cassandra/db/DirectoriesTest.java @@ -0,0 +1,183 @@ +/** + * 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; + +import java.io.File; +import java.io.IOException; +import java.util.*; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import static org.junit.Assert.assertEquals; + +import org.apache.cassandra.db.compaction.LeveledManifest; +import org.apache.cassandra.io.util.FileUtils; +import org.apache.cassandra.io.sstable.*; +import org.apache.cassandra.utils.Pair; + +public class DirectoriesTest +{ + private static File tempDataDir; + private static String KS = "ks"; + private static String[] CFS = new String[] { "cf1", "ks" }; + + private static Map<String, List<File>> files = new HashMap<String, List<File>>(); + + @BeforeClass + public static void beforeClass() throws IOException + { + tempDataDir = File.createTempFile("cassandra", "unittest"); + tempDataDir.delete(); // hack to create a temp dir + tempDataDir.mkdir(); + + Directories.overrideDataDirectoriesForTest(tempDataDir.getPath()); + // Create two fake data dir for tests, one using CF directories, one that do not. + createTestFiles(); + } + + @AfterClass + public static void afterClass() throws IOException + { + Directories.resetDataDirectoriesAfterTest(); + FileUtils.deleteRecursive(tempDataDir); + } + + private static void createTestFiles() throws IOException + { + for (String cf : CFS) + { + List<File> fs = new ArrayList<File>(); + files.put(cf, fs); + File dir = cfDir(cf); + dir.mkdirs(); + + createFakeSSTable(dir, cf, 1, false, false, fs); + createFakeSSTable(dir, cf, 2, true, false, fs); + createFakeSSTable(dir, cf, 3, false, true, fs); + // leveled manifest + new File(dir, cf + LeveledManifest.EXTENSION).createNewFile(); + + File backupDir = new File(dir, Directories.BACKUPS_SUBDIR); + backupDir.mkdir(); + createFakeSSTable(backupDir, cf, 1, false, false, fs); + + File snapshotDir = new File(dir, Directories.SNAPSHOT_SUBDIR + File.separator + "42"); + snapshotDir.mkdirs(); + createFakeSSTable(snapshotDir, cf, 1, false, false, fs); + } + } + + private static void createFakeSSTable(File dir, String cf, int gen, boolean temp, boolean compacted, List<File> addTo) throws IOException + { + Descriptor desc = new Descriptor(dir, KS, cf, gen, temp); + for (Component c : new Component[]{ Component.DATA, Component.PRIMARY_INDEX, Component.FILTER }) + { + File f = new File(desc.filenameFor(c)); + f.createNewFile(); + addTo.add(f); + } + if (compacted) + { + File f = new File(desc.filenameFor(Component.COMPACTED_MARKER)); + f.createNewFile(); + addTo.add(f); + } + } + + private static File cfDir(String cf) + { + return new File(tempDataDir, KS + File.separator + cf); + } + + @Test + public void testStandardDirs() + { + for (String cf : CFS) + { + Directories directories = Directories.create(KS, cf); + assertEquals(cfDir(cf), directories.getDirectoryForNewSSTables(0)); + + Descriptor desc = new Descriptor(cfDir(cf), KS, cf, 1, false); + File snapshotDir = new File(cfDir(cf), File.separator + Directories.SNAPSHOT_SUBDIR + File.separator + "42"); + assertEquals(snapshotDir, directories.getSnapshotDirectory(desc, "42")); + + File backupsDir = new File(cfDir(cf), File.separator + Directories.BACKUPS_SUBDIR); + assertEquals(backupsDir, directories.getBackupsDirectory(desc)); + } + } + + @Test + public void testSSTableLister() + { + for (String cf : CFS) + { + Directories directories = Directories.create(KS, cf); + Directories.SSTableLister lister; + Set<File> listed; + + // List all but no snapshot, backup + lister = directories.sstableLister(); + listed = new HashSet<File>(lister.listFiles()); + for (File f : files.get(cf)) + { + if (f.getPath().contains(Directories.SNAPSHOT_SUBDIR) || f.getPath().contains(Directories.BACKUPS_SUBDIR)) + assert !listed.contains(f) : f + " should not be listed"; + else + assert listed.contains(f) : f + " is missing"; + } + + // List all but including backup (but no snapshot) + lister = directories.sstableLister().includeBackups(true); + listed = new HashSet<File>(lister.listFiles()); + for (File f : files.get(cf)) + { + if (f.getPath().contains(Directories.SNAPSHOT_SUBDIR)) + assert !listed.contains(f) : f + " should not be listed"; + else + assert listed.contains(f) : f + " is missing"; + } + + // Skip temporary and compacted + lister = directories.sstableLister().skipTemporary(true).skipCompacted(true); + listed = new HashSet<File>(lister.listFiles()); + for (File f : files.get(cf)) + { + if (f.getPath().contains(Directories.SNAPSHOT_SUBDIR) || f.getPath().contains(Directories.BACKUPS_SUBDIR)) + assert !listed.contains(f) : f + " should not be listed"; + else if (f.getName().contains("-tmp-")) + assert !listed.contains(f) : f + " should not be listed"; + else if (f.getName().endsWith("Compacted") || new File(f.getPath().replaceFirst("-[a-zA-Z]+.db", "-Compacted")).exists()) + assert !listed.contains(f) : f + " should not be listed"; + else + assert listed.contains(f) : f + " is missing"; + } + } + } + + @Test + public void testLeveledManifestPath() + { + for (String cf : CFS) + { + Directories directories = Directories.create(KS, cf); + File manifest = new File(cfDir(cf), cf + LeveledManifest.EXTENSION); + assertEquals(manifest, directories.tryGetLeveledManifest()); + } + } +} http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/unit/org/apache/cassandra/db/ScrubTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/db/ScrubTest.java b/test/unit/org/apache/cassandra/db/ScrubTest.java index c549d1b..f8620f7 100644 --- a/test/unit/org/apache/cassandra/db/ScrubTest.java +++ b/test/unit/org/apache/cassandra/db/ScrubTest.java @@ -58,20 +58,16 @@ public class ScrubTest extends CleanupHelper File rootDir = new File(root); assert rootDir.isDirectory(); - String[] destDirs = DatabaseDescriptor.getAllDataFileLocationsForTable(TABLE); - assert destDirs != null; - assert destDirs.length > 0; + File destDir = Directories.create(TABLE, CF2).getDirectoryForNewSSTables(1); - FileUtils.createDirectory(destDirs[0]); + FileUtils.createDirectory(destDir); for (File srcFile : rootDir.listFiles()) { if (srcFile.getName().equals(".svn")) continue; - File destFile = new File(destDirs[0]+File.separator+srcFile.getName()); + File destFile = new File(destDir, srcFile.getName()); CLibrary.createHardLinkWithExec(srcFile, destFile); - destFile = new File(destDirs[0]+File.separator+srcFile.getName()); - assert destFile.exists() : destFile.getAbsoluteFile(); if(destFile.getName().endsWith("Data.db")) http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/unit/org/apache/cassandra/io/sstable/DescriptorTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/io/sstable/DescriptorTest.java b/test/unit/org/apache/cassandra/io/sstable/DescriptorTest.java index 4ffca5a..d0568a5 100644 --- a/test/unit/org/apache/cassandra/io/sstable/DescriptorTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/DescriptorTest.java @@ -25,58 +25,35 @@ import java.io.File; import org.junit.Test; -import org.apache.cassandra.db.Table; +import org.apache.cassandra.db.Directories; public class DescriptorTest { @Test public void testLegacy() { - Descriptor descriptor = Descriptor.fromFilename(new File("Keyspace1"), "userActionUtilsKey-9-Data.db").left; + Descriptor descriptor = Descriptor.fromFilename("Keyspace1-userActionUtilsKey-9-Data.db"); + assert descriptor.version.equals(Descriptor.LEGACY_VERSION); assert descriptor.usesOldBloomFilter; } @Test - public void testExtractKeyspace() - { - // Test a path representing a SNAPSHOT directory - String dirPath = "Keyspace10" + File.separator + Table.SNAPSHOT_SUBDIR_NAME + File.separator + System.currentTimeMillis(); - assertKeyspace("Keyspace10", dirPath); - - // Test a path representing a regular SSTables directory - dirPath = "Keyspace11"; - assertKeyspace("Keyspace11", dirPath); - } - - @Test public void testVersion() { // letter only - Descriptor desc = Descriptor.fromFilename(new File("Keyspace1"), "Standard1-h-1-Data.db").left; + Descriptor desc = Descriptor.fromFilename("Keyspace1-Standard1-h-1-Data.db"); assert "h".equals(desc.version); assert desc.tracksMaxTimestamp; // multiple letters - desc = Descriptor.fromFilename(new File("Keyspace1"), "Standard1-ha-1-Data.db").left; + desc = Descriptor.fromFilename("Keyspace1-Standard1-ha-1-Data.db"); assert "ha".equals(desc.version); assert desc.tracksMaxTimestamp; // hypothetical two-letter g version - desc = Descriptor.fromFilename(new File("Keyspace1"), "Standard1-gz-1-Data.db").left; + desc = Descriptor.fromFilename("Keyspace1-Standard1-gz-1-Data.db"); assert "gz".equals(desc.version); assert !desc.tracksMaxTimestamp; } - - private void assertKeyspace(String expectedKsName, String dirPath) { - File dir = new File(dirPath); - dir.deleteOnExit(); - - // Create and check. - if (!dir.mkdirs()) - throw new RuntimeException("Unable to create directories:" + dirPath); - - String currentKsName = Descriptor.extractKeyspaceName(dir); - assert expectedKsName.equals(currentKsName); - } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java b/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java index 86d9bb4..81cc016 100644 --- a/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/SSTableReaderTest.java @@ -221,20 +221,17 @@ public class SSTableReaderTest extends CleanupHelper File rootDir = new File(root + File.separator + "hb" + File.separator + "Keyspace1"); assert rootDir.isDirectory(); - String[] destDirs = DatabaseDescriptor.getAllDataFileLocationsForTable("Keyspace1"); - assert destDirs != null; - assert destDirs.length > 0; + File destDir = Directories.create("Keyspace1", "Indexed1").getDirectoryForNewSSTables(0); + assert destDir != null; - FileUtils.createDirectory(destDirs[0]); + FileUtils.createDirectory(destDir); for (File srcFile : rootDir.listFiles()) { if (!srcFile.getName().startsWith("Indexed1")) continue; - File destFile = new File(destDirs[0] + File.separator + srcFile.getName()); + File destFile = new File(destDir, srcFile.getName()); CLibrary.createHardLinkWithExec(srcFile, destFile); - destFile = new File(destDirs[0] + File.separator + srcFile.getName()); - assert destFile.exists() : destFile.getAbsoluteFile(); } ColumnFamilyStore store = Table.open("Keyspace1").getColumnFamilyStore("Indexed1"); http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/unit/org/apache/cassandra/io/sstable/SSTableSimpleWriterTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/io/sstable/SSTableSimpleWriterTest.java b/test/unit/org/apache/cassandra/io/sstable/SSTableSimpleWriterTest.java index b0b129a..613eed4 100644 --- a/test/unit/org/apache/cassandra/io/sstable/SSTableSimpleWriterTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/SSTableSimpleWriterTest.java @@ -37,12 +37,11 @@ public class SSTableSimpleWriterTest extends CleanupHelper final int INC = 5; final int NBCOL = 10; - String tablename = "Keyspace1"; String cfname = "StandardInteger1"; Table t = Table.open(tablename); // make sure we create the directory - File dir = new File(t.getDataFileLocation(0)); + File dir = Directories.create(tablename, cfname).getDirectoryForNewSSTables(0); assert dir.exists(); SSTableSimpleUnsortedWriter writer = new SSTableSimpleUnsortedWriter(dir, tablename, cfname, IntegerType.instance, null, 16); http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a76e646/test/unit/org/apache/cassandra/streaming/BootstrapTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/streaming/BootstrapTest.java b/test/unit/org/apache/cassandra/streaming/BootstrapTest.java index 7ae6504..b2d24f4 100644 --- a/test/unit/org/apache/cassandra/streaming/BootstrapTest.java +++ b/test/unit/org/apache/cassandra/streaming/BootstrapTest.java @@ -36,7 +36,7 @@ public class BootstrapTest extends SchemaLoader @Test public void testGetNewNames() throws IOException { - Descriptor desc = Descriptor.fromFilename(new File("Keyspace1", "Standard1-f-500-Data.db").toString()); + Descriptor desc = Descriptor.fromFilename(new File("Keyspace1", "Keyspace1-Standard1-f-500-Data.db").toString()); assert !desc.isLatestVersion; // deliberately test old version PendingFile inContext = new PendingFile(null, desc, "Data.db", Arrays.asList(new Pair<Long,Long>(0L, 1L)), OperationType.BOOTSTRAP);