package io.airlift.node.testing; import com.google.inject.Guice; import com.google.inject.Injector; import io.airlift.node.NodeInfo; import org.testng.annotations.Test; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Optional; import static io.airlift.testing.Assertions.assertGreaterThanOrEqual; import static io.airlift.testing.Assertions.assertNotEquals; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; public class TestTestingNodeModule { @Test public void testTestingNode() throws UnknownHostException { long testStartTime = System.currentTimeMillis(); Injector injector = Guice.createInjector(new TestingNodeModule()); NodeInfo nodeInfo = injector.getInstance(NodeInfo.class); assertNotNull(nodeInfo); assertTrue(nodeInfo.getEnvironment().matches("test\\d+")); assertEquals(nodeInfo.getPool(), "general"); assertNotNull(nodeInfo.getNodeId()); assertNotNull(nodeInfo.getLocation()); assertNull(nodeInfo.getBinarySpec()); assertNull(nodeInfo.getConfigSpec()); assertNotNull(nodeInfo.getInstanceId()); assertNotEquals(nodeInfo.getNodeId(), nodeInfo.getInstanceId()); assertEquals(nodeInfo.getInternalAddress(), "127.0.0.1"); assertEquals(nodeInfo.getBindIp(), InetAddress.getByName(nodeInfo.getInternalAddress())); assertEquals(nodeInfo.getExternalAddress(), "127.0.0.1"); assertGreaterThanOrEqual(nodeInfo.getStartTime(), testStartTime); // make sure toString doesn't throw an exception assertNotNull(nodeInfo.toString()); } @Test public void testTestingNodeExplicitEnvironment() { Injector injector = Guice.createInjector(new TestingNodeModule("foo")); NodeInfo nodeInfo = injector.getInstance(NodeInfo.class); assertNotNull(nodeInfo); assertEquals(nodeInfo.getEnvironment(), "foo"); } @Test public void testTestingNodePresentEnvironment() { Injector injector = Guice.createInjector(new TestingNodeModule(Optional.of("foo"))); NodeInfo nodeInfo = injector.getInstance(NodeInfo.class); assertNotNull(nodeInfo); assertEquals(nodeInfo.getEnvironment(), "foo"); } @Test public void testTestingNodeAbsentEnvironment() { Injector injector = Guice.createInjector(new TestingNodeModule(Optional.empty())); NodeInfo nodeInfo = injector.getInstance(NodeInfo.class); assertNotNull(nodeInfo); assertTrue(nodeInfo.getEnvironment().matches("test\\d+")); } }