Relocating zeroconf tests to companion module.



git-svn-id: https://svn.apache.org/repos/asf/logging/log4j/companions/zeroconf/trunk@546016 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/test/java/org/apache/log4j/net/ModifiableBoolean.java b/src/test/java/org/apache/log4j/net/ModifiableBoolean.java
new file mode 100644
index 0000000..fc5e0ad
--- /dev/null
+++ b/src/test/java/org/apache/log4j/net/ModifiableBoolean.java
@@ -0,0 +1,26 @@
+package org.apache.log4j.net;
+
+/**
+ * A wrapper class that allows modifiable values, totally <b>not</b> Thread-safe.
+ * 
+ * Useful if you want to hold a reference to a value in a final block for inner classes
+ * and flip the value for later testing.
+ * @author paulsmith
+ *
+ */
+public class ModifiableBoolean {
+
+    private boolean value = false;
+    
+    public void setValue(boolean value) {
+        this.value = value;
+    }
+    
+    public boolean isSet() {
+        return value;
+    }
+    
+    public void flip() {
+        this.value = !this.value;
+    }
+}
diff --git a/src/test/java/org/apache/log4j/net/ZeroConfSocketHubAppenderTest.java b/src/test/java/org/apache/log4j/net/ZeroConfSocketHubAppenderTest.java
new file mode 100644
index 0000000..acb761b
--- /dev/null
+++ b/src/test/java/org/apache/log4j/net/ZeroConfSocketHubAppenderTest.java
@@ -0,0 +1,68 @@
+package org.apache.log4j.net;
+
+import javax.jmdns.JmDNS;
+import javax.jmdns.ServiceEvent;
+import javax.jmdns.ServiceListener;
+
+import junit.framework.TestCase;
+
+/**
+ * Some test methods to validate that the ZeroConf stuff works as expected/advertised
+ * 
+ * @author psmith
+ *
+ */
+public class ZeroConfSocketHubAppenderTest extends TestCase {
+
+    private static final int DEFAULT_TIMEOUT_FOR_ZEROCONF_EVENTS_TO_APPEAR = 2000;
+
+    /**
+     * This does a simple test, as a test harness, to make sure the Appender can be created
+     * and that it can shutdown appropriately.  in older versions of JmDNS a non-daemon thread
+     * could hold the JVM open preventing it from shutting down.
+     * 
+     * @see com.strangeberry.jmdns.tools.Main for a ZeroConf Network browser in Swing allowing you to see the broadcasts
+     * 
+     * @throws Exception
+     */
+    public void testSimpleTest() throws Exception {
+        JmDNS jmdns = Zeroconf4log4j.getInstance();
+        
+        final ModifiableBoolean addedFlag = new ModifiableBoolean();
+        final ModifiableBoolean removedFlag = new ModifiableBoolean();
+        
+        /**
+         * This is just a test to make sure I'm not stupid.
+         */
+        assertTrue(!addedFlag.isSet());
+        assertTrue(!removedFlag.isSet());
+        
+        jmdns.addServiceListener(ZeroConfSocketHubAppender.DEFAULT_ZEROCONF_ZONE, new ServiceListener() {
+
+            public void serviceAdded(ServiceEvent event) {
+                addedFlag.setValue(true);
+               
+            }
+
+            public void serviceRemoved(ServiceEvent event) {
+                removedFlag.setValue(true);
+            }
+
+            public void serviceResolved(ServiceEvent event) {
+                
+            }});
+        ZeroConfSocketHubAppender appender = new ZeroConfSocketHubAppender();
+        appender.setName("SimpleTest");
+        appender.activateOptions();
+        
+        Thread.sleep(DEFAULT_TIMEOUT_FOR_ZEROCONF_EVENTS_TO_APPEAR);
+        
+        assertTrue("Should have detected the addition", addedFlag.isSet());
+        
+        appender.close();
+        Zeroconf4log4j.shutdown();
+        
+        Thread.sleep(DEFAULT_TIMEOUT_FOR_ZEROCONF_EVENTS_TO_APPEAR);
+        
+    }
+}
diff --git a/src/test/java/org/apache/log4j/net/ZeroConfSocketHubAppenderTestBed.java b/src/test/java/org/apache/log4j/net/ZeroConfSocketHubAppenderTestBed.java
new file mode 100644
index 0000000..b45ddd7
--- /dev/null
+++ b/src/test/java/org/apache/log4j/net/ZeroConfSocketHubAppenderTestBed.java
@@ -0,0 +1,30 @@
+package org.apache.log4j.net;
+
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+
+/**
+ * 
+ * A test bed class to configure and launch a ZeroConfSocketHubAppender and stream
+ * some LoggingEvents to it so that one can test Chainsaw
+ * 
+ * @author psmith
+ *
+ */
+public class ZeroConfSocketHubAppenderTestBed {
+
+    public static void main(String[] args) throws Exception {
+        ZeroConfSocketHubAppender appender = new ZeroConfSocketHubAppender();
+        appender.setName("foo");
+        appender.activateOptions();
+        Logger LOG = LogManager.getRootLogger();
+        LOG.addAppender(appender);
+        
+        while(true) {
+            LOG.info("TestBedEvent: " + System.currentTimeMillis());
+            Thread.sleep(250);
+        }
+        
+        
+    }
+}