package org.jolokia.discovery; import java.io.IOException; import java.net.UnknownHostException; import java.util.List; import java.util.UUID; import org.jolokia.restrictor.AllowAllRestrictor; import org.jolokia.util.*; import org.json.simple.JSONObject; import org.testng.SkipException; import org.testng.annotations.Test; import static org.testng.Assert.assertTrue; /** * @author roland * @since 04.02.14 */ public class DiscoveryMulticastResponderTest { @Test public void simple() throws IOException, InterruptedException { System.out.println("================================================="); if (!NetworkUtil.isMulticastSupported()) { throw new SkipException("No multicast interface found, skipping test "); } AgentDetailsHolder holder = new TestAgentsDetailsHolder(); DiscoveryMulticastResponder responder = new DiscoveryMulticastResponder(holder,new AllowAllRestrictor(),new LogHandler.StdoutLogHandler(true)); responder.start(); // Warming up Thread.sleep(1000); JolokiaDiscovery discovery = new JolokiaDiscovery("test",new LogHandler.StdoutLogHandler(true)); try { List<JSONObject> msgs = discovery.lookupAgents(); System.out.println("================================================="); if (msgs.size() == 0) { // We are retrying it with a longer timeout System.out.println("No answer received, trying now with 30s timeout"); msgs = discovery.lookupAgentsWithTimeout(30000); } assertTrue(msgs.size() > 0); } catch (UnknownHostException exp) { throw new SkipException("Skipping test because no single multicast request could be send on any interface"); } finally { responder.stop(); } } private class TestAgentsDetailsHolder implements AgentDetailsHolder { AgentDetails details = new AgentDetails(UUID.randomUUID().toString()); public AgentDetails getAgentDetails() { return details; } } }