You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by ma...@apache.org on 2013/07/23 16:39:46 UTC

svn commit: r1506071 - /ace/trunk/org.apache.ace.test/src/org/apache/ace/it/IntegrationTestBase.java

Author: marrs
Date: Tue Jul 23 14:39:46 2013
New Revision: 1506071

URL: http://svn.apache.org/r1506071
Log:
Added a few convenience methods to enable (event) logging for debugging.

Modified:
    ace/trunk/org.apache.ace.test/src/org/apache/ace/it/IntegrationTestBase.java

Modified: ace/trunk/org.apache.ace.test/src/org/apache/ace/it/IntegrationTestBase.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.test/src/org/apache/ace/it/IntegrationTestBase.java?rev=1506071&r1=1506070&r2=1506071&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.test/src/org/apache/ace/it/IntegrationTestBase.java (original)
+++ ace/trunk/org.apache.ace.test/src/org/apache/ace/it/IntegrationTestBase.java Tue Jul 23 14:39:46 2013
@@ -42,8 +42,13 @@ import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventConstants;
+import org.osgi.service.event.EventHandler;
+import org.osgi.service.log.LogService;
 import org.osgi.util.tracker.ServiceTracker;
 
 /**
@@ -346,4 +351,87 @@ public class IntegrationTestBase extends
             fail("Interrupted while waiting for services to get started.");
         }
     }
+    
+    protected Component m_eventLoggingComponent;
+    protected Component m_loggingComponent;
+
+    /**
+     * Enables logging events to the console. Mainly useful when debugging tests.
+     */
+    protected synchronized void enableEventLogging() {
+        DependencyManager dm = m_dependencyManager;
+        m_eventLoggingComponent = dm.createComponent()
+            .setInterface(EventHandler.class.getName(), new Properties() {{ put(EventConstants.EVENT_TOPIC, "*"); }})
+            .setImplementation(new EventHandler() {
+                @Override
+                public void handleEvent(Event event) {
+                    System.out.print("[EVENT] " + event.getTopic());
+                    for (String key : event.getPropertyNames()) {
+                        System.out.print(" " + key + "=" + event.getProperty(key));
+                    }
+                    System.out.println();
+                }
+            });
+        dm.add(m_eventLoggingComponent);
+    }
+
+    /**
+     * Disables logging to the console.
+     */
+    protected synchronized void disableEventLogging() {
+        if (m_eventLoggingComponent != null) {
+            DependencyManager dm = m_dependencyManager;
+            dm.remove(m_eventLoggingComponent);
+            m_eventLoggingComponent = null;
+        }
+    }
+    
+    /**
+     * Enables logging to the console. Mainly useful when debugging tests.
+     */
+    protected synchronized void enableLogging() {
+        if (m_loggingComponent == null) {
+            DependencyManager dm = m_dependencyManager;
+            m_loggingComponent = dm.createComponent()
+                .setInterface(LogService.class.getName(), new Properties() {{ put(Constants.SERVICE_RANKING, Integer.valueOf(1000)); }})
+                .setImplementation(new LogService() {
+                    @Override
+                    public void log(ServiceReference sr, int level, String message, Throwable exception) {
+                        System.out.println("[LOG] " +
+                            (sr == null ? "" : sr + " ") + 
+                            level + " " + 
+                            message + " " + 
+                            (exception == null ? "" : exception));
+                    }
+                    
+                    @Override
+                    public void log(ServiceReference sr, int level, String message) {
+                        log(sr, level, message, null);
+                    }
+                    
+                    @Override
+                    public void log(int level, String message, Throwable exception) {
+                        log(null, level, message, exception);
+                    }
+                    
+                    @Override
+                    public void log(int level, String message) {
+                        log(null, level, message, null);
+                    }
+                });
+            dm.add(m_loggingComponent);
+        }
+    }
+    
+    /**
+     * Disables logging to the console.
+     */
+    protected synchronized void disableLogging() {
+        if (m_loggingComponent != null) {
+            DependencyManager dm = m_dependencyManager;
+            dm.remove(m_loggingComponent);
+            m_loggingComponent = null;
+        }
+    }
+
 }