This is where you want to use JUnit assumptions so you get visibility for
skipped tests.

Gary

On Sat, Apr 6, 2024, 12:54 PM <t...@apache.org> wrote:

> 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