mirror of https://github.com/apache/cassandra
refactor LegacySSTableTest to inspect row contents (breaks tests). patch by stuhood, reviewed by gdusbabek. CASSANDRA-1822
git-svn-id: https://svn.apache.org/repos/asf/cassandra/trunk@1053393 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
37317eb5c9
commit
718b65e6ae
|
|
@ -22,15 +22,11 @@ package org.apache.cassandra.io.sstable;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.apache.cassandra.CleanupHelper;
|
import org.apache.cassandra.CleanupHelper;
|
||||||
import org.apache.cassandra.io.util.BufferedRandomAccessFile;
|
import org.apache.cassandra.db.DecoratedKey;
|
||||||
|
import org.apache.cassandra.db.columniterator.SSTableNamesIterator;
|
||||||
import org.apache.cassandra.utils.FBUtilities;
|
import org.apache.cassandra.utils.FBUtilities;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
@ -45,7 +41,7 @@ public class LegacySSTableTest extends CleanupHelper
|
||||||
public static final String KSNAME = "Keyspace1";
|
public static final String KSNAME = "Keyspace1";
|
||||||
public static final String CFNAME = "Standard1";
|
public static final String CFNAME = "Standard1";
|
||||||
|
|
||||||
public static Map<ByteBuffer, ByteBuffer> TEST_DATA;
|
public static Set<String> TEST_DATA;
|
||||||
public static File LEGACY_SSTABLE_ROOT;
|
public static File LEGACY_SSTABLE_ROOT;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
|
|
@ -56,11 +52,9 @@ public class LegacySSTableTest extends CleanupHelper
|
||||||
LEGACY_SSTABLE_ROOT = new File(scp).getAbsoluteFile();
|
LEGACY_SSTABLE_ROOT = new File(scp).getAbsoluteFile();
|
||||||
assert LEGACY_SSTABLE_ROOT.isDirectory();
|
assert LEGACY_SSTABLE_ROOT.isDirectory();
|
||||||
|
|
||||||
TEST_DATA = new HashMap<ByteBuffer,ByteBuffer>();
|
TEST_DATA = new HashSet<String>();
|
||||||
for (int i = 100; i < 1000; ++i)
|
for (int i = 100; i < 1000; ++i)
|
||||||
{
|
TEST_DATA.add(Integer.toString(i));
|
||||||
TEST_DATA.put(ByteBuffer.wrap(Integer.toString(i).getBytes()), ByteBuffer.wrap(("Avinash Lakshman is a good man: " + i).getBytes()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -83,44 +77,39 @@ public class LegacySSTableTest extends CleanupHelper
|
||||||
Descriptor dest = getDescriptor(Descriptor.CURRENT_VERSION);
|
Descriptor dest = getDescriptor(Descriptor.CURRENT_VERSION);
|
||||||
assert dest.directory.mkdirs() : "Could not create " + dest.directory + ". Might it already exist?";
|
assert dest.directory.mkdirs() : "Could not create " + dest.directory + ". Might it already exist?";
|
||||||
|
|
||||||
SSTableReader ssTable = SSTableUtils.writeRawSSTable(new File(dest.filenameFor(SSTable.COMPONENT_DATA)),
|
SSTableReader ssTable = SSTableUtils.prepare().ks(KSNAME).cf(CFNAME).dest(dest).write(TEST_DATA);
|
||||||
KSNAME,
|
assert ssTable.descriptor.generation == 0 :
|
||||||
CFNAME,
|
|
||||||
TEST_DATA);
|
|
||||||
assert ssTable.desc.generation == 0 :
|
|
||||||
"In order to create a generation 0 sstable, please run this test alone.";
|
"In order to create a generation 0 sstable, please run this test alone.";
|
||||||
System.out.println(">>> Wrote " + dest);
|
System.out.println(">>> Wrote " + dest);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testVersions() throws IOException
|
public void testVersions() throws Throwable
|
||||||
{
|
{
|
||||||
for (File version : LEGACY_SSTABLE_ROOT.listFiles())
|
for (File version : LEGACY_SSTABLE_ROOT.listFiles())
|
||||||
if (Descriptor.versionValidate(version.getName()))
|
if (Descriptor.versionValidate(version.getName()))
|
||||||
testVersion(version.getName());
|
testVersion(version.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testVersion(String version)
|
public void testVersion(String version) throws Throwable
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
SSTableReader reader = SSTableReader.open(getDescriptor(version));
|
SSTableReader reader = SSTableReader.open(getDescriptor(version));
|
||||||
|
for (String keystring : TEST_DATA)
|
||||||
List<ByteBuffer> keys = new ArrayList<ByteBuffer>(TEST_DATA.keySet());
|
|
||||||
Collections.shuffle(keys);
|
|
||||||
BufferedRandomAccessFile file = new BufferedRandomAccessFile(reader.getFilename(), "r");
|
|
||||||
for (ByteBuffer key : keys)
|
|
||||||
{
|
{
|
||||||
// confirm that the bloom filter does not reject any keys
|
ByteBuffer key = ByteBuffer.wrap(keystring.getBytes());
|
||||||
file.seek(reader.getPosition(reader.partitioner.decorateKey(key), SSTableReader.Operator.EQ));
|
// confirm that the bloom filter does not reject any keys/names
|
||||||
assert key.equals( FBUtilities.readShortByteArray(file));
|
DecoratedKey dk = reader.partitioner.decorateKey(key);
|
||||||
|
SSTableNamesIterator iter = new SSTableNamesIterator(reader, dk, FBUtilities.singleton(key));
|
||||||
|
assert iter.next().name().equals(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Throwable e)
|
catch (Throwable e)
|
||||||
{
|
{
|
||||||
System.err.println("Failed to read " + version);
|
System.err.println("Failed to read " + version);
|
||||||
e.printStackTrace(System.err);
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,12 +22,7 @@ package org.apache.cassandra.io.sstable;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.SortedMap;
|
|
||||||
import java.util.TreeMap;
|
|
||||||
|
|
||||||
import org.apache.cassandra.db.Column;
|
import org.apache.cassandra.db.Column;
|
||||||
import org.apache.cassandra.db.ColumnFamily;
|
import org.apache.cassandra.db.ColumnFamily;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue