The existing replication tests (TestBlocksWithNotEnoughRacks, TestPendingReplication, TestOverReplicatedBlocks, TestReplicationPolicy, TestUnderReplicatedBlocks, and TestReplication) are missing tests for rack policy violations. This jira adds the following tests which I created when generating a new patch for
- Test that blocks that have a sufficient number of total replicas, but are not replicated cross rack, get replicated cross rack when a rack becomes available.
- Test that new blocks for an underreplicated file will get replicated cross rack.
- Mark a block as corrupt, test that when it is re-replicated that it is still replicated across racks.
- Reduce the replication factor of a file, making sure that the only block that is across racks is not removed when deleting replicas.
- Test that when a block is replicated because a replica is lost due to host failure the the rack policy is preserved.
- Test that when the execss replicas of a block are reduced due to a node re-joining the cluster the rack policy is not violated.
- Test that rack policy is still respected when blocks are replicated due to node decommissioning.
- Test that rack policy is still respected when blocks are replicated due to node decommissioning, even when the blocks are over-replicated.