コード例 #1
0
        public virtual void TestNotMatchedReplicaID()
        {
            if (Log.IsDebugEnabled())
            {
                Log.Debug("Running " + GenericTestUtils.GetMethodName());
            }
            ReplicaInPipelineInterface replicaInfo = dn.data.CreateRbw(StorageType.Default, block
                                                                       , false).GetReplica();
            ReplicaOutputStreams streams = null;

            try
            {
                streams = replicaInfo.CreateStreams(true, DataChecksum.NewDataChecksum(DataChecksum.Type
                                                                                       .Crc32, 512));
                streams.GetChecksumOut().Write('a');
                dn.data.InitReplicaRecovery(new BlockRecoveryCommand.RecoveringBlock(block, null,
                                                                                     RecoveryId + 1));
                try
                {
                    dn.SyncBlock(rBlock, InitBlockRecords(dn));
                    NUnit.Framework.Assert.Fail("Sync should fail");
                }
                catch (IOException e)
                {
                    e.Message.StartsWith("Cannot recover ");
                }
                DatanodeProtocol namenode = dn.GetActiveNamenodeForBP(PoolId);
                Org.Mockito.Mockito.Verify(namenode, Org.Mockito.Mockito.Never()).CommitBlockSynchronization
                    (Matchers.Any <ExtendedBlock>(), Matchers.AnyLong(), Matchers.AnyLong(), Matchers.AnyBoolean
                        (), Matchers.AnyBoolean(), Matchers.Any <DatanodeID[]>(), Matchers.Any <string[]>(
                        ));
            }
            finally
            {
                streams.Close();
            }
        }
コード例 #2
0
        /// <exception cref="System.IO.IOException"/>
        internal virtual int AddSomeBlocks(SimulatedFSDataset fsdataset, int startingBlockId
                                           )
        {
            int bytesAdded = 0;

            for (int i = startingBlockId; i < startingBlockId + Numblocks; ++i)
            {
                ExtendedBlock b = new ExtendedBlock(bpid, i, 0, 0);
                // we pass expected len as zero, - fsdataset should use the sizeof actual
                // data written
                ReplicaInPipelineInterface bInfo = fsdataset.CreateRbw(StorageType.Default, b, false
                                                                       ).GetReplica();
                ReplicaOutputStreams @out = bInfo.CreateStreams(true, DataChecksum.NewDataChecksum
                                                                    (DataChecksum.Type.Crc32, 512));
                try
                {
                    OutputStream dataOut = @out.GetDataOut();
                    NUnit.Framework.Assert.AreEqual(0, fsdataset.GetLength(b));
                    for (int j = 1; j <= BlockIdToLen(i); ++j)
                    {
                        dataOut.Write(j);
                        NUnit.Framework.Assert.AreEqual(j, bInfo.GetBytesOnDisk());
                        // correct length even as we write
                        bytesAdded++;
                    }
                }
                finally
                {
                    @out.Close();
                }
                b.SetNumBytes(BlockIdToLen(i));
                fsdataset.FinalizeBlock(b);
                NUnit.Framework.Assert.AreEqual(BlockIdToLen(i), fsdataset.GetLength(b));
            }
            return(bytesAdded);
        }