Author: andygumbrecht
Date: Mon Jul  9 07:45:56 2012
New Revision: 1358955

URL: http://svn.apache.org/viewvc?rev=1358955&view=rev
Log:
Make interface enumeration less picky.

Modified:
    
openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/MulticastPulseClient.java
    
openejb/trunk/openejb/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java
    
openejb/trunk/openejb/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastPulseAgentTest.java

Modified: 
openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/MulticastPulseClient.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/MulticastPulseClient.java?rev=1358955&r1=1358954&r2=1358955&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/MulticastPulseClient.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-client/src/main/java/org/apache/openejb/client/MulticastPulseClient.java
 Mon Jul  9 07:45:56 2012
@@ -10,6 +10,7 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.ReentrantLock;
 
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
@@ -173,6 +174,8 @@ public class MulticastPulseClient extend
             }
         });
 
+        final ReentrantLock setLock = new ReentrantLock();
+
         //Start threads that listen for multicast packets on our channel.
         //These need to start 'before' we pulse a request.
         final ArrayList<Future> futures = new ArrayList<Future>();
@@ -248,6 +251,8 @@ public class MulticastPulseClient extend
 
                                             svc = ("mp-" + serverHost + ":" + 
group + ":" + svc);
 
+                                            setLock.lock();
+
                                             try {
                                                 if (svc.contains("0.0.0.0")) {
                                                     for (final String h : 
hosts) {
@@ -263,6 +268,8 @@ public class MulticastPulseClient extend
                                                 }
                                             } catch (Throwable e) {
                                                 //Ignore
+                                            } finally {
+                                                setLock.unlock();
                                             }
                                         }
                                     }
@@ -334,7 +341,7 @@ public class MulticastPulseClient extend
             }
         }
 
-        return new HashSet<URI>(set);
+        return set;
     }
 
     /**
@@ -423,15 +430,7 @@ public class MulticastPulseClient extend
                 final NetworkInterface next = interfaces.nextElement();
 
                 if (next.supportsMulticast() && next.isUp()) {
-
-                    final Enumeration<InetAddress> addresses = 
next.getInetAddresses();
-                    while (addresses.hasMoreElements()) {
-                        final InetAddress address = addresses.nextElement();
-                        if (address.isSiteLocalAddress()) {
-                            list.add(next);
-                            break;
-                        }
-                    }
+                    list.add(next);
                 }
             }
         } catch (SocketException e) {

Modified: 
openejb/trunk/openejb/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java?rev=1358955&r1=1358954&r2=1358955&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java
 Mon Jul  9 07:45:56 2012
@@ -407,15 +407,7 @@ public class MulticastPulseAgent impleme
                 final NetworkInterface next = interfaces.nextElement();
 
                 if (next.supportsMulticast() && next.isUp()) {
-
-                    final Enumeration<InetAddress> addresses = 
next.getInetAddresses();
-                    while (addresses.hasMoreElements()) {
-                        final InetAddress address = addresses.nextElement();
-                        if (address.isSiteLocalAddress()) {
-                            list.add(next);
-                            break;
-                        }
-                    }
+                    list.add(next);
                 }
             }
         } catch (SocketException e) {

Modified: 
openejb/trunk/openejb/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastPulseAgentTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastPulseAgentTest.java?rev=1358955&r1=1358954&r2=1358955&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastPulseAgentTest.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastPulseAgentTest.java
 Mon Jul  9 07:45:56 2012
@@ -45,6 +45,7 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.ReentrantLock;
 
 /**
  * Copyright (c) ORPRO Vision GmbH.
@@ -103,14 +104,18 @@ public class MulticastPulseAgentTest {
             throw new Exception(host + " is not a valid multicast address");
         }
 
-        final byte[] bytes = (MulticastPulseAgent.CLIENT + 
forGroup).getBytes(utf8);
-        final DatagramPacket request = new DatagramPacket(bytes, bytes.length, 
new InetSocketAddress(ia, port));
-
-        final AtomicBoolean running = new AtomicBoolean(true);
-
         //Returns at least one socket per valid network interface
         final MulticastSocket[] clientSockets = 
MulticastPulseAgent.getSockets(host, port);
 
+        //No point going on if we don't have sockets...
+        if (clientSockets.length < 1) {
+            System.out.println("Cannnot perform multipulse test without a 
valid interface");
+            return;
+        }
+
+        final byte[] bytes = (MulticastPulseAgent.CLIENT + 
forGroup).getBytes(utf8);
+        final DatagramPacket request = new DatagramPacket(bytes, bytes.length, 
new InetSocketAddress(ia, port));
+        final AtomicBoolean running = new AtomicBoolean(true);
         final Timer timer = new Timer(true);
 
         final Set<URI> set = new TreeSet<URI>(new Comparator<URI>() {
@@ -143,6 +148,8 @@ public class MulticastPulseAgentTest {
             }
         });
 
+        final ReentrantLock setLock = new ReentrantLock();
+
         //Start threads that listen for multicast packets on our channel.
         //These need to start 'before' we pulse a request.
         final ArrayList<Future> futures = new ArrayList<Future>();
@@ -160,7 +167,7 @@ public class MulticastPulseAgentTest {
                     } catch (Throwable e) {
                         //Ignore
                     }
-                    System.out.println("Enter MulticastPulse client thread on: 
" + name);
+                    System.out.println("Entered MulticastPulse client thread 
on: " + name);
 
                     final DatagramPacket response = new DatagramPacket(new 
byte[2048], 2048);
 
@@ -198,7 +205,7 @@ public class MulticastPulseAgentTest {
                                     final String[] serviceList = 
services.split("\\|");
                                     final String[] hosts = s.split(",");
 
-                                    System.out.println(String.format("\nClient 
received Server pulse:\n\tGroup: %1$s\n\tServices: %2$s\n\tServer: %3$s\n", 
group, services, s));
+                                    System.out.println(String.format("\n" + 
name + " received Server pulse:\n\tGroup: %1$s\n\tServices: %2$s\n\tServer: 
%3$s\n", group, services, s));
 
                                     for (String svc : serviceList) {
 
@@ -229,6 +236,8 @@ public class MulticastPulseAgentTest {
 
                                             svc = ("mp-" + serverHost + ":" + 
group + ":" + svc);
 
+                                            setLock.lock();
+
                                             try {
                                                 if (svc.contains("0.0.0.0")) {
                                                     for (final String h : 
hosts) {
@@ -244,6 +253,8 @@ public class MulticastPulseAgentTest {
                                                 }
                                             } catch (Throwable e) {
                                                 //Ignore
+                                            } finally {
+                                                setLock.unlock();
                                             }
                                         } else {
                                             System.out.println("Reject 
service: " + serviceUri.toASCIIString() + " - Not looking for scheme: " + 
serviceUri.getScheme());


Reply via email to