[ https://issues.apache.org/jira/browse/HDFS-9772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Walter Su updated HDFS-9772: ---------------------------- Summary: TestBlockReplacement#testThrottler doesn't work as expected (was: TestBlockReplacement#testThrottler use falut variable to calculate bandwidth) > TestBlockReplacement#testThrottler doesn't work as expected > ----------------------------------------------------------- > > 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 > Attachments: HDFS.001.patch > > > 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)