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)

Reply via email to