public virtual void CommonUsagePerfTest()
        {
            int          NumRuns  = 5;
            DataChecksum checksum = DataChecksum.NewDataChecksum(DataChecksum.Type.Crc32c, 512
                                                                 );
            int dataLength = 512 * 1024 * 1024;

            TestDataChecksum.Harness h = new TestDataChecksum.Harness(checksum, dataLength, true
                                                                      );
            for (int i = 0; i < NumRuns; i++)
            {
                StopWatch s = new StopWatch().Start();
                // calculate real checksum, make sure it passes
                checksum.CalculateChunkedSums(h.dataBuf, h.checksumBuf);
                s.Stop();
                System.Console.Error.WriteLine("Calculate run #" + i + ": " + s.Now(TimeUnit.Microseconds
                                                                                    ) + "us");
                s = new StopWatch().Start();
                // calculate real checksum, make sure it passes
                checksum.VerifyChunkedSums(h.dataBuf, h.checksumBuf, "fake file", 0);
                s.Stop();
                System.Console.Error.WriteLine("Verify run #" + i + ": " + s.Now(TimeUnit.Microseconds
                                                                                 ) + "us");
            }
        }
 public virtual void TestEquality()
 {
     Assert.Equal(DataChecksum.NewDataChecksum(DataChecksum.Type.Crc32
                                               , 512), DataChecksum.NewDataChecksum(DataChecksum.Type.Crc32, 512));
     NUnit.Framework.Assert.IsFalse(DataChecksum.NewDataChecksum(DataChecksum.Type.Crc32
                                                                 , 512).Equals(DataChecksum.NewDataChecksum(DataChecksum.Type.Crc32, 1024)));
     NUnit.Framework.Assert.IsFalse(DataChecksum.NewDataChecksum(DataChecksum.Type.Crc32
                                                                 , 512).Equals(DataChecksum.NewDataChecksum(DataChecksum.Type.Crc32c, 512)));
 }
Beispiel #3
0
        public override bool Equals(object other)
        {
            if (!(other is DataChecksum))
            {
                return(false);
            }
            DataChecksum o = (DataChecksum)other;

            return(o.bytesPerChecksum == this.bytesPerChecksum && o.type == this.type);
        }
Beispiel #4
0
        public virtual void Setup()
        {
            Assume.AssumeTrue(NativeCrc32.IsAvailable());
            Assert.Equal("These tests assume they can write a checksum value as a 4-byte int."
                         , 4, checksumType.size);
            Configuration conf = new Configuration();

            bytesPerChecksum = conf.GetInt(IoBytesPerChecksumKey, IoBytesPerChecksumDefault);
            fileName         = this.GetType().Name;
            checksum         = DataChecksum.NewDataChecksum(checksumType, bytesPerChecksum);
        }
Beispiel #5
0
        /// <summary>
        /// This constructs a DataChecksum by reading HEADER_LEN bytes from input
        /// stream <i>in</i>
        /// </summary>
        /// <exception cref="System.IO.IOException"/>
        public static DataChecksum NewDataChecksum(DataInputStream @in)
        {
            int          type   = @in.ReadByte();
            int          bpc    = @in.ReadInt();
            DataChecksum summer = NewDataChecksum(DataChecksum.Type.ValueOf(type), bpc);

            if (summer == null)
            {
                throw new IOException("Could not create DataChecksum of type " + type + " with bytesPerChecksum "
                                      + bpc);
            }
            return(summer);
        }
 public virtual void TestBulkOps()
 {
     foreach (DataChecksum.Type type in ChecksumTypes)
     {
         System.Console.Error.WriteLine("---- beginning tests with checksum type " + type
                                        + "----");
         DataChecksum checksum = DataChecksum.NewDataChecksum(type, BytesPerChunk);
         foreach (bool useDirect in new bool[] { false, true })
         {
             DoBulkTest(checksum, 1023, useDirect);
             DoBulkTest(checksum, 1024, useDirect);
             DoBulkTest(checksum, 1025, useDirect);
         }
     }
 }
 internal Harness(DataChecksum checksum, int dataLength, bool useDirect)
 {
     this.checksum   = checksum;
     this.dataLength = dataLength;
     numSums         = (dataLength - 1) / checksum.GetBytesPerChecksum() + 1;
     sumsLength      = numSums * checksum.GetChecksumSize();
     byte[] data = new byte[dataLength + DataOffsetInBuffer + DataTrailerInBuffer];
     new Random().NextBytes(data);
     dataBuf = ByteBuffer.Wrap(data, DataOffsetInBuffer, dataLength);
     byte[] checksums = new byte[SumsOffsetInBuffer + sumsLength];
     checksumBuf = ByteBuffer.Wrap(checksums, SumsOffsetInBuffer, sumsLength);
     // Swap out for direct buffers if requested.
     if (useDirect)
     {
         dataBuf     = Directify(dataBuf);
         checksumBuf = Directify(checksumBuf);
     }
 }
 public virtual void TestToString()
 {
     Assert.Equal("DataChecksum(type=CRC32, chunkSize=512)", DataChecksum
                  .NewDataChecksum(DataChecksum.Type.Crc32, 512).ToString());
 }
 /// <exception cref="System.Exception"/>
 private void DoBulkTest(DataChecksum checksum, int dataLength, bool useDirect)
 {
     System.Console.Error.WriteLine("Testing bulk checksums of length " + dataLength +
                                    " with " + (useDirect ? "direct" : "array-backed") + " buffers");
     new TestDataChecksum.Harness(checksum, dataLength, useDirect).TestCorrectness();
 }