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");
     }
 

Reply via email to