Lin Yiqun created HDFS-9772: ------------------------------- Summary: TestBlockReplacement#testThrottler use falut variable to calculate bandwidth Key: HDFS-9772 URL: https://issues.apache.org/jira/browse/HDFS-9772 Project: Hadoop HDFS Issue Type: Bug Affects Versions: 2.7.1 Reporter: Lin Yiqun Assignee: Lin Yiqun
In {{TestBlockReplacement#testThrottler}}, it use a fault variable to calculate the ended bandwidth. It use variable {{totalBytes}} rathe than final variable {{TOTAL_BYTES}}. And the value of {{TOTAL_BYTES}} is set to {{bytesToSend}}. The {{totalBytes}} looks no meaning here and this will make {{totalBytes*1000/(end-start)}} always be 0 and the comparison always true. The method code is below: {code} @Test public void testThrottler() throws IOException { Configuration conf = new HdfsConfiguration(); FileSystem.setDefaultUri(conf, "hdfs://localhost:0"); long bandwidthPerSec = 1024*1024L; final long TOTAL_BYTES =6*bandwidthPerSec; long bytesToSend = TOTAL_BYTES; long start = Time.monotonicNow(); DataTransferThrottler throttler = new DataTransferThrottler(bandwidthPerSec); long totalBytes = 0L; long bytesSent = 1024*512L; // 0.5MB throttler.throttle(bytesSent); bytesToSend -= bytesSent; bytesSent = 1024*768L; // 0.75MB throttler.throttle(bytesSent); bytesToSend -= bytesSent; try { Thread.sleep(1000); } catch (InterruptedException ignored) {} throttler.throttle(bytesToSend); long end = Time.monotonicNow(); assertTrue(totalBytes*1000/(end-start)<=bandwidthPerSec); } {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)