You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "Lin Yiqun (JIRA)" <ji...@apache.org> on 2016/02/06 08:21:39 UTC
[jira] [Created] (HDFS-9772) TestBlockReplacement#testThrottler use
falut variable to calculate bandwidth
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)