/// <exception cref="System.Exception"/> public virtual void TestBadLength() { int Dlen = 100; DataOutputBuffer dob = new DataOutputBuffer(Dlen + 4); IFileOutputStream ifos = new IFileOutputStream(dob); for (int i = 0; i < Dlen; ++i) { ifos.Write(i); } ifos.Close(); DataInputBuffer dib = new DataInputBuffer(); dib.Reset(dob.GetData(), Dlen + 4); IFileInputStream ifis = new IFileInputStream(dib, 100, new Configuration()); int i_1 = 0; try { while (i_1 < Dlen - 8) { NUnit.Framework.Assert.AreEqual(i_1++, ifis.Read()); } ifis.Close(); } catch (ChecksumException) { NUnit.Framework.Assert.AreEqual("Checksum before close", i_1, Dlen - 8); return; } Fail("Did not detect bad data in checksum"); }
/// <summary>Construct an IFile Reader.</summary> /// <param name="conf">Configuration File</param> /// <param name="in">The input stream</param> /// <param name="length"> /// Length of the data in the stream, including the checksum /// bytes. /// </param> /// <param name="codec">codec</param> /// <param name="readsCounter">Counter for records read from disk</param> /// <exception cref="System.IO.IOException"/> public Reader(Configuration conf, FSDataInputStream @in, long length, CompressionCodec codec, Counters.Counter readsCounter) { // Count records read from disk // Possibly decompressed stream that we read readRecordsCounter = readsCounter; checksumIn = new IFileInputStream(@in, length, conf); if (codec != null) { decompressor = CodecPool.GetDecompressor(codec); if (decompressor != null) { this.@in = codec.CreateInputStream(checksumIn, decompressor); } else { Log.Warn("Could not obtain decompressor from CodecPool"); this.@in = checksumIn; } } else { this.@in = checksumIn; } this.dataIn = new DataInputStream(this.@in); this.fileLength = length; if (conf != null) { bufferSize = conf.GetInt("io.file.buffer.size", DefaultBufferSize); } }
/// <exception cref="System.Exception"/> public virtual void TestBadIFileStream() { int Dlen = 100; DataOutputBuffer dob = new DataOutputBuffer(Dlen + 4); IFileOutputStream ifos = new IFileOutputStream(dob); for (int i = 0; i < Dlen; ++i) { ifos.Write(i); } ifos.Close(); DataInputBuffer dib = new DataInputBuffer(); byte[] b = dob.GetData(); ++b[17]; dib.Reset(b, Dlen + 4); IFileInputStream ifis = new IFileInputStream(dib, 104, new Configuration()); int i_1 = 0; try { while (i_1 < Dlen) { if (17 == i_1) { NUnit.Framework.Assert.AreEqual(18, ifis.Read()); } else { NUnit.Framework.Assert.AreEqual(i_1, ifis.Read()); } ++i_1; } ifis.Close(); } catch (ChecksumException) { NUnit.Framework.Assert.AreEqual("Unexpected bad checksum", Dlen - 1, i_1); return; } Fail("Did not detect bad data in checksum"); }
/// <exception cref="System.Exception"/> public virtual void TestIFileStream() { int Dlen = 100; DataOutputBuffer dob = new DataOutputBuffer(Dlen + 4); IFileOutputStream ifos = new IFileOutputStream(dob); for (int i = 0; i < Dlen; ++i) { ifos.Write(i); } ifos.Close(); DataInputBuffer dib = new DataInputBuffer(); dib.Reset(dob.GetData(), Dlen + 4); IFileInputStream ifis = new IFileInputStream(dib, 104, new Configuration()); for (int i_1 = 0; i_1 < Dlen; ++i_1) { NUnit.Framework.Assert.AreEqual(i_1, ifis.Read()); } ifis.Close(); }