Merge branch 'cassandra-3.0' into trunk

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

Branch: refs/heads/trunk
Commit: 253801323c51ae94b7f00ef80da1528cd79bff8a
Parents: a333a2f e9ea5e0
Author: mck <m...@apache.org>
Authored: Sat Oct 8 23:49:25 2016 +1100
Committer: mck <m...@apache.org>
Committed: Sun Oct 9 00:04:28 2016 +1100

----------------------------------------------------------------------
 .../CompressedRandomAccessReaderTest.java       | 55 +++++++++-----------
 1 file changed, 24 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/25380132/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
----------------------------------------------------------------------
diff --cc 
test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
index 3380e30,0c96327..0d2a9fb
--- 
a/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
+++ 
b/test/unit/org/apache/cassandra/io/compress/CompressedRandomAccessReaderTest.java
@@@ -21,12 -21,10 +21,13 @@@ package org.apache.cassandra.io.compres
  import java.io.File;
  import java.io.IOException;
  import java.io.RandomAccessFile;
+ import java.util.Arrays;
  import java.util.Random;
  
 +import org.junit.BeforeClass;
  import org.junit.Test;
 +
 +import org.apache.cassandra.config.DatabaseDescriptor;
  import org.apache.cassandra.db.ClusteringComparator;
  import org.apache.cassandra.db.marshal.BytesType;
  import org.apache.cassandra.exceptions.ConfigurationException;
@@@ -192,69 -201,60 +196,58 @@@ public class CompressedRandomAccessRead
              writer.finish();
          }
  
 -        try(ChannelProxy channel = new ChannelProxy(file))
 -        {
 -            // open compression metadata and get chunk information
 -            CompressionMetadata meta = new 
CompressionMetadata(metadata.getPath(), file.length(), ChecksumType.CRC32);
 -            CompressionMetadata.Chunk chunk = meta.chunkFor(0);
 -
 -            try(RandomAccessReader reader = new 
CompressedRandomAccessReader.Builder(channel, meta).build())
 -            {// read and verify compressed data
 -                assertEquals(CONTENT, reader.readLine());
 -            }
 +        // open compression metadata and get chunk information
 +        CompressionMetadata meta = new 
CompressionMetadata(metadata.getPath(), file.length(), ChecksumType.CRC32);
 +        CompressionMetadata.Chunk chunk = meta.chunkFor(0);
  
 +        try (FileHandle.Builder builder = new 
FileHandle.Builder(file.getPath()).withCompressionMetadata(meta);
 +             FileHandle fh = builder.complete();
 +             RandomAccessReader reader = fh.createReader())
 +        {// read and verify compressed data
 +            assertEquals(CONTENT, reader.readLine());
- 
              Random random = new Random();
-             RandomAccessFile checksumModifier = null;
- 
-             try
+             try(RandomAccessFile checksumModifier = new 
RandomAccessFile(file, "rw"))
              {
-                 checksumModifier = new RandomAccessFile(file, "rw");
                  byte[] checksum = new byte[4];
  
                  // seek to the end of the compressed chunk
                  checksumModifier.seek(chunk.length);
                  // read checksum bytes
                  checksumModifier.read(checksum);
-                 // seek back to the chunk end
-                 checksumModifier.seek(chunk.length);
  
-                 // lets modify one byte of the checksum on each iteration
-                 for (int i = 0; i < checksum.length; i++)
+                 byte[] corruptChecksum = new byte[4];
+                 do
                  {
-                     checksumModifier.write(random.nextInt());
-                     SyncUtil.sync(checksumModifier); // making sure that 
change was synced with disk
+                     random.nextBytes(corruptChecksum);
+                 } while (Arrays.equals(corruptChecksum, checksum));
  
-                     try (final RandomAccessReader r = fh.createReader())
+                 updateChecksum(checksumModifier, chunk.length, 
corruptChecksum);
+ 
 -                try (final RandomAccessReader r = new 
CompressedRandomAccessReader.Builder(channel, meta).build())
++                try (final RandomAccessReader r = fh.createReader())
+                 {
+                     Throwable exception = null;
+                     try
                      {
-                         Throwable exception = null;
-                         try
-                         {
-                             r.readLine();
-                         }
-                         catch (Throwable t)
-                         {
-                             exception = t;
-                         }
-                         assertNotNull(exception);
-                         assertSame(exception.getClass(), 
CorruptSSTableException.class);
-                         assertSame(exception.getCause().getClass(), 
CorruptBlockException.class);
+                         r.readLine();
                      }
+                     catch (Throwable t)
+                     {
+                         exception = t;
+                     }
+                     assertNotNull(exception);
+                     assertSame(exception.getClass(), 
CorruptSSTableException.class);
+                     assertSame(exception.getCause().getClass(), 
CorruptBlockException.class);
                  }
  
                  // lets write original checksum and check if we can read data
                  updateChecksum(checksumModifier, chunk.length, checksum);
  
+                 // read and verify compressed data
 -                try (RandomAccessReader cr = new 
CompressedRandomAccessReader.Builder(channel, meta).build())
 +                try (RandomAccessReader cr = fh.createReader())
                  {
-                     // read and verify compressed data
                      assertEquals(CONTENT, cr.readLine());
-                     // close reader
                  }
              }
-             finally
-             {
-                 if (checksumModifier != null)
-                     checksumModifier.close();
-             }
          }
      }
  

Reply via email to