|
@@ -18,19 +18,28 @@
|
|
|
|
|
|
package org.apache.hadoop.metrics2.sink.flume;
|
|
|
|
|
|
+import static org.easymock.EasyMock.anyString;
|
|
|
+import static org.easymock.EasyMock.createNiceMock;
|
|
|
+import static org.easymock.EasyMock.expect;
|
|
|
import static org.powermock.api.easymock.PowerMock.mockStatic;
|
|
|
import static org.powermock.api.easymock.PowerMock.replay;
|
|
|
+import static org.powermock.api.easymock.PowerMock.replayAll;
|
|
|
+import static org.powermock.api.easymock.PowerMock.resetAll;
|
|
|
import static org.powermock.api.easymock.PowerMock.verifyAll;
|
|
|
|
|
|
+import java.net.InetAddress;
|
|
|
import java.util.Collections;
|
|
|
|
|
|
import org.apache.commons.httpclient.HttpClient;
|
|
|
+import org.apache.flume.Context;
|
|
|
import org.apache.flume.instrumentation.util.JMXPollUtil;
|
|
|
import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric;
|
|
|
import org.apache.hadoop.metrics2.sink.timeline.cache.TimelineMetricsCache;
|
|
|
+import org.apache.hadoop.metrics2.sink.timeline.configuration.Configuration;
|
|
|
import org.easymock.EasyMock;
|
|
|
import org.junit.Test;
|
|
|
import org.junit.runner.RunWith;
|
|
|
+import org.powermock.api.easymock.PowerMock;
|
|
|
import org.powermock.core.classloader.annotations.PrepareForTest;
|
|
|
import org.powermock.modules.junit4.PowerMockRunner;
|
|
|
|
|
@@ -104,4 +113,56 @@ public class FlumeTimelineMetricsSinkTest {
|
|
|
collector.run();
|
|
|
verifyAll();
|
|
|
}
|
|
|
+
|
|
|
+ @Test
|
|
|
+ @PrepareForTest({Configuration.class, FlumeTimelineMetricsSink.class})
|
|
|
+ public void testGettingFqdn() throws Exception {
|
|
|
+ FlumeTimelineMetricsSink flumeTimelineMetricsSink = new FlumeTimelineMetricsSink();
|
|
|
+ Configuration config = createNiceMock(Configuration.class);
|
|
|
+
|
|
|
+ expect(config.getProperty(anyString(), anyString()))
|
|
|
+ .andReturn("60")
|
|
|
+ .anyTimes();
|
|
|
+ expect(config.getProperty(anyString()))
|
|
|
+ .andReturn("60")
|
|
|
+ .anyTimes();
|
|
|
+ replay(config);
|
|
|
+
|
|
|
+ PowerMock.expectNew(Configuration.class, anyString())
|
|
|
+ .andReturn(config);
|
|
|
+ replay(Configuration.class);
|
|
|
+
|
|
|
+ // getHostName() returned FQDN
|
|
|
+ InetAddress address = createNiceMock(InetAddress.class);
|
|
|
+ expect(address.getHostName()).andReturn("hostname.domain").once();
|
|
|
+ replay(address);
|
|
|
+
|
|
|
+ mockStatic(InetAddress.class);
|
|
|
+ expect(InetAddress.getLocalHost()).andReturn(address).once();
|
|
|
+ replay(InetAddress.class);
|
|
|
+
|
|
|
+ flumeTimelineMetricsSink.configure(new Context());
|
|
|
+ verifyAll();
|
|
|
+
|
|
|
+ resetAll();
|
|
|
+
|
|
|
+ PowerMock.expectNew(Configuration.class, anyString())
|
|
|
+ .andReturn(config);
|
|
|
+ replay(Configuration.class);
|
|
|
+
|
|
|
+ // getHostName() returned short hostname, getCanonicalHostName() called
|
|
|
+ address = createNiceMock(InetAddress.class);
|
|
|
+ expect(address.getHostName()).andReturn("hostname").once();
|
|
|
+ expect(address.getCanonicalHostName()).andReturn("hostname.domain").once();
|
|
|
+ replay(address);
|
|
|
+
|
|
|
+ mockStatic(InetAddress.class);
|
|
|
+ expect(InetAddress.getLocalHost()).andReturn(address).times(2);
|
|
|
+ replay(InetAddress.class);
|
|
|
+
|
|
|
+ flumeTimelineMetricsSink.configure(new Context());
|
|
|
+ verifyAll();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|