jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Philipp Suter (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (OAK-3884) Enable BROADCAST for UDPBroadcaster
Date Thu, 14 Jan 2016 17:25:39 GMT

     [ https://issues.apache.org/jira/browse/OAK-3884?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Philipp Suter updated OAK-3884:
-------------------------------
    Description: 
It seems that broadcastEncryptedUDP and broadcastUDP test are not working on OS X and most
likely other *IX based systems due to the fact that the loopback network interface (e.g. lo0)
is not having a BROADCAST option [1].

A possible workaround patch for the unit tests is attached.

[1] See answer to: http://serverfault.com/questions/554503/how-do-i-add-a-broadcast-ip-to-the-loopback-interface-under-os-x-using-ifconfig

  was:
It seems that broadcastEncryptedUDP and broadcastUDP test are not working on OS X and most
likely other *IX based systems due to the fact that the loopback network interface (e.g. lo0)
is not having a BROADCAST option [1].

A workaround patch for the unit tests is listed below.

[1] See answer to: http://serverfault.com/questions/554503/how-do-i-add-a-broadcast-ip-to-the-loopback-interface-under-os-x-using-ifconfig

===BEGIN PATCH===
@@ -22,9 +22,14 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InterfaceAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
 import java.nio.ByteBuffer;
 import java.sql.Timestamp;
 import java.util.ArrayList;
+import java.util.Enumeration;
 import java.util.Random;
 import java.util.concurrent.Callable;
 
@@ -37,7 +42,6 @@
 import org.apache.jackrabbit.oak.plugins.document.persistentCache.broadcast.TCPBroadcaster;
 import org.apache.jackrabbit.oak.plugins.document.util.StringValue;
 import org.junit.Assert;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.slf4j.LoggerFactory;
 
@@ -150,16 +154,17 @@
     public void broadcastInMemory() throws Exception {
         broadcast("inMemory", 100);
     }
-    
+
     @Test
-    @Ignore("OAK-2843")
     public void broadcastUDP() throws Exception {
         try {
-            broadcast("udp:sendTo localhost", 50);
+            String localBroadcastIp = getLocalBroadcastAddress();
+            System.out.println("BROADCASTING TO: " + localBroadcastIp);
+            broadcast("udp:sendTo "+localBroadcastIp, 50);
         } catch (AssertionError e) {
             // IPv6 didn't work, so try with IPv4
-            try {
-                broadcast("udp:group 228.6.7.9", 50);                
+            broadcast("udp:group 228.6.7.9", 50);
+            try {
             } catch (AssertionError e2) {
                 throwBoth(e, e2);
             }                
@@ -167,10 +172,11 @@
     }
     
     @Test
-    @Ignore("OAK-2843")
     public void broadcastEncryptedUDP() throws Exception {
         try {
-            broadcast("udp:group FF78:230::1234;key test;port 9876;sendTo localhost;aes",
50);
+            String localBroadcastIp = getLocalBroadcastAddress();
+            System.out.println("BROADCASTING TO: " + localBroadcastIp);
+            broadcast("udp:group FF78:230::1234;key test;port 9876;sendTo "+localBroadcastIp+";aes",
50);
         } catch (AssertionError e) {
             try {
                 broadcast("udp:group 228.6.7.9;key test;port 9876;aes", 50);            
   
@@ -178,6 +184,26 @@
                 throwBoth(e, e2);
             }                
         }
+    }
+
+    private static String getLocalBroadcastAddress(){
+        try {
+            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
+            while (interfaces.hasMoreElements()) {
+                NetworkInterface networkInterface = interfaces.nextElement();
+                if (networkInterface.isLoopback())
+                    continue;
+                for (InterfaceAddress interfaceAddress :
+                        networkInterface.getInterfaceAddresses()) {
+                    InetAddress broadcast = interfaceAddress.getBroadcast();
+                    if (broadcast != null)
+                        return broadcast.getHostAddress();
+                }
+            }
+        } catch (SocketException e) {
+            e.printStackTrace();
+        }
+        return null;
     }
     
     private static void throwBoth(AssertionError e, AssertionError e2) throws AssertionError
{
===END PATCH===


> Enable BROADCAST for UDPBroadcaster
> -----------------------------------
>
>                 Key: OAK-3884
>                 URL: https://issues.apache.org/jira/browse/OAK-3884
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: cache
>    Affects Versions: 1.3.14
>         Environment: OS X
>            Reporter: Philipp Suter
>         Attachments: broadcasttest.patch
>
>
> It seems that broadcastEncryptedUDP and broadcastUDP test are not working on OS X and
most likely other *IX based systems due to the fact that the loopback network interface (e.g.
lo0) is not having a BROADCAST option [1].
> A possible workaround patch for the unit tests is attached.
> [1] See answer to: http://serverfault.com/questions/554503/how-do-i-add-a-broadcast-ip-to-the-loopback-interface-under-os-x-using-ifconfig



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message