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))); }
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); }
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); }
/// <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(); }