This is an automated email from the ASF dual-hosted git repository. tv pushed a commit to branch release-3.2.1 in repository https://gitbox.apache.org/repos/asf/commons-jcs.git
commit fe20ca994803b353c32fd0909621d822ee26263c Author: Thomas Vandahl <t...@apache.org> AuthorDate: Sat Apr 6 18:53:29 2024 +0200 Skip multicast tests when no multicast interface is available --- .../UDPDiscoverySenderEncryptedUnitTest.java | 33 +++++++-- .../discovery/UDPDiscoverySenderUnitTest.java | 83 ++++++++++++++++------ .../jcs3/utils/discovery/UDPDiscoveryUnitTest.java | 11 +++ 3 files changed, 100 insertions(+), 27 deletions(-) diff --git a/commons-jcs-core/src/test/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoverySenderEncryptedUnitTest.java b/commons-jcs-core/src/test/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoverySenderEncryptedUnitTest.java index bb462ef3..492f1ca3 100644 --- a/commons-jcs-core/src/test/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoverySenderEncryptedUnitTest.java +++ b/commons-jcs-core/src/test/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoverySenderEncryptedUnitTest.java @@ -30,6 +30,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.apache.commons.jcs3.utils.discovery.UDPDiscoveryMessage.BroadcastType; +import org.apache.commons.jcs3.utils.net.HostNameUtil; import org.apache.commons.jcs3.utils.serialization.EncryptingSerializer; import junit.framework.TestCase; @@ -57,7 +58,6 @@ public class UDPDiscoverySenderEncryptedUnitTest /** sender instance for tests */ private UDPDiscoverySender sender; - /** * Set up the receiver. Maybe better to just code sockets here? Set up the sender for sending @@ -73,7 +73,7 @@ public class UDPDiscoverySenderEncryptedUnitTest EncryptingSerializer serializer = new EncryptingSerializer(); serializer.setPreSharedKey("my_key"); - + receiver = new UDPDiscoveryReceiver( null, null, ADDRESS, PORT ); receiver.setSerializer(serializer); final Thread t = new Thread( receiver ); @@ -104,6 +104,12 @@ public class UDPDiscoverySenderEncryptedUnitTest public void testPassiveBroadcast() throws Exception { + if (HostNameUtil.getMulticastNetworkInterface() == null) + { + System.out.println("This machine does not support multicast"); + return; + } + // SETUP final ArrayList<String> cacheNames = new ArrayList<>(); @@ -126,6 +132,12 @@ public class UDPDiscoverySenderEncryptedUnitTest public void testRemoveBroadcast() throws Exception { + if (HostNameUtil.getMulticastNetworkInterface() == null) + { + System.out.println("This machine does not support multicast"); + return; + } + // SETUP final ArrayList<String> cacheNames = new ArrayList<>(); @@ -148,6 +160,12 @@ public class UDPDiscoverySenderEncryptedUnitTest public void testRequestBroadcast() throws Exception { + if (HostNameUtil.getMulticastNetworkInterface() == null) + { + System.out.println("This machine does not support multicast"); + return; + } + // DO WORK sender.requestBroadcast(); @@ -157,25 +175,26 @@ public class UDPDiscoverySenderEncryptedUnitTest assertNotNull("message not received", msg); assertEquals( "wrong message type", BroadcastType.REQUEST, msg.getMessageType() ); - + } - + /** * Wait for multicast message for 3 seconds - * + * * @return the object message or null if nothing received within 3 seconds */ private UDPDiscoveryMessage getMessage() { ExecutorService executor = Executors.newCachedThreadPool(); Callable<Object> task = new Callable<Object>() { - public Object call() throws IOException { + @Override + public Object call() throws IOException { return receiver.waitForMessage(); } }; Future<Object> future = executor.submit(task); try { Object obj = future.get(3, TimeUnit.SECONDS); - + assertTrue( "unexpected crap received", obj instanceof UDPDiscoveryMessage ); return (UDPDiscoveryMessage) obj; diff --git a/commons-jcs-core/src/test/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoverySenderUnitTest.java b/commons-jcs-core/src/test/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoverySenderUnitTest.java index 4e403f68..3cad2d7c 100644 --- a/commons-jcs-core/src/test/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoverySenderUnitTest.java +++ b/commons-jcs-core/src/test/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoverySenderUnitTest.java @@ -1,10 +1,5 @@ package org.apache.commons.jcs3.utils.discovery; -import java.util.ArrayList; - -import org.apache.commons.jcs3.utils.discovery.UDPDiscoveryMessage.BroadcastType; -import org.apache.commons.jcs3.utils.serialization.StandardSerializer; - /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -24,6 +19,20 @@ import org.apache.commons.jcs3.utils.serialization.StandardSerializer; * under the License. */ +import java.io.IOException; +import java.util.ArrayList; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import org.apache.commons.jcs3.utils.discovery.UDPDiscoveryMessage.BroadcastType; +import org.apache.commons.jcs3.utils.net.HostNameUtil; +import org.apache.commons.jcs3.utils.serialization.StandardSerializer; + import junit.framework.TestCase; /** @@ -92,6 +101,12 @@ public class UDPDiscoverySenderUnitTest public void testPassiveBroadcast() throws Exception { + if (HostNameUtil.getMulticastNetworkInterface() == null) + { + System.out.println("This machine does not support multicast"); + return; + } + // SETUP final ArrayList<String> cacheNames = new ArrayList<>(); @@ -100,11 +115,8 @@ public class UDPDiscoverySenderUnitTest // VERIFY // grab the sent message - final Object obj = receiver.waitForMessage() ; - - assertTrue( "unexpected crap received", obj instanceof UDPDiscoveryMessage ); - - final UDPDiscoveryMessage msg = (UDPDiscoveryMessage) obj; + final UDPDiscoveryMessage msg = getMessage(); + assertNotNull("message not received", msg); // disabled test because of JCS-89 // assertEquals( "wrong host", SENDING_HOST, msg.getHost() ); assertEquals( "wrong port", SENDING_PORT, msg.getPort() ); @@ -119,6 +131,12 @@ public class UDPDiscoverySenderUnitTest public void testRemoveBroadcast() throws Exception { + if (HostNameUtil.getMulticastNetworkInterface() == null) + { + System.out.println("This machine does not support multicast"); + return; + } + // SETUP final ArrayList<String> cacheNames = new ArrayList<>(); @@ -127,11 +145,8 @@ public class UDPDiscoverySenderUnitTest // VERIFY // grab the sent message - final Object obj = receiver.waitForMessage(); - - assertTrue( "unexpected crap received", obj instanceof UDPDiscoveryMessage ); - - final UDPDiscoveryMessage msg = (UDPDiscoveryMessage) obj; + final UDPDiscoveryMessage msg = getMessage(); + assertNotNull("message not received", msg); // disabled test because of JCS-89 // assertEquals( "wrong host", SENDING_HOST, msg.getHost() ); assertEquals( "wrong port", SENDING_PORT, msg.getPort() ); @@ -146,16 +161,44 @@ public class UDPDiscoverySenderUnitTest public void testRequestBroadcast() throws Exception { + if (HostNameUtil.getMulticastNetworkInterface() == null) + { + System.out.println("This machine does not support multicast"); + return; + } + // DO WORK sender.requestBroadcast(); // VERIFY // grab the sent message - final Object obj = receiver.waitForMessage(); - - assertTrue( "unexpected crap received", obj instanceof UDPDiscoveryMessage ); - - final UDPDiscoveryMessage msg = (UDPDiscoveryMessage) obj; + final UDPDiscoveryMessage msg = getMessage(); + assertNotNull("message not received", msg); assertEquals( "wrong message type", BroadcastType.REQUEST, msg.getMessageType() ); } + + /** + * Wait for multicast message for 3 seconds + * + * @return the object message or null if nothing received within 3 seconds + */ + private UDPDiscoveryMessage getMessage() { + ExecutorService executor = Executors.newCachedThreadPool(); + Callable<Object> task = new Callable<Object>() { + @Override + public Object call() throws IOException { + return receiver.waitForMessage(); + } + }; + Future<Object> future = executor.submit(task); + try { + Object obj = future.get(3, TimeUnit.SECONDS); + + assertTrue( "unexpected crap received", obj instanceof UDPDiscoveryMessage ); + + return (UDPDiscoveryMessage) obj; + } catch (InterruptedException | ExecutionException | TimeoutException ex) { + return null; + } + } } diff --git a/commons-jcs-core/src/test/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoveryUnitTest.java b/commons-jcs-core/src/test/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoveryUnitTest.java index 719aa7d6..02e707e4 100644 --- a/commons-jcs-core/src/test/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoveryUnitTest.java +++ b/commons-jcs-core/src/test/java/org/apache/commons/jcs3/utils/discovery/UDPDiscoveryUnitTest.java @@ -21,6 +21,7 @@ package org.apache.commons.jcs3.utils.discovery; import java.util.ArrayList; +import org.apache.commons.jcs3.utils.net.HostNameUtil; import org.apache.commons.jcs3.utils.serialization.StandardSerializer; import org.apache.commons.jcs3.utils.timing.SleepUtil; @@ -39,6 +40,11 @@ public class UDPDiscoveryUnitTest public void testSimpleUDPDiscoveryIPv4() throws Exception { + if (HostNameUtil.getMulticastNetworkInterface() == null) + { + System.out.println("This machine does not support multicast"); + return; + } simpleUDPDiscovery("228.5.6.7"); } @@ -49,6 +55,11 @@ public class UDPDiscoveryUnitTest public void testSimpleUDPDiscoveryIPv6() throws Exception { + if (HostNameUtil.getMulticastNetworkInterface() == null) + { + System.out.println("This machine does not support multicast"); + return; + } simpleUDPDiscovery("FF02::5678"); }