You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pd...@apache.org on 2014/11/15 01:17:24 UTC

svn commit: r1639811 - in /felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark: ./ src/org/apache/felix/dm/benchmark/controller/impl/ src/org/apache/felix/dm/benchmark/scenario/

Author: pderop
Date: Sat Nov 15 00:17:23 2014
New Revision: 1639811

URL: http://svn.apache.org/r1639811
Log:
Use DM filter indices by default.
Make sure the threadpool is quiescent after a test bundle has been stopped.

Modified:
    felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/bnd.bnd
    felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/controller/impl/Activator.java
    felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/controller/impl/ScenarioControllerImpl.java
    felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/scenario/Artist.java
    felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/scenario/Helper.java

Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/bnd.bnd
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/bnd.bnd?rev=1639811&r1=1639810&r2=1639811&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/bnd.bnd (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/bnd.bnd Sat Nov 15 00:17:23 2014
@@ -19,7 +19,8 @@ Export-Package:  \
 	org.apache.felix.dm.benchmark.scenario.impl
 -runproperties:  \
 	ds.loglevel=warn,\
-	org.osgi.framework.bootdelegation='sun.*,com.sun.*,org.netbeans.*'
+	org.osgi.framework.bootdelegation='sun.*,com.sun.*,org.netbeans.*',\
+	org.apache.felix.dependencymanager.filterindex=objectClass,id
 -runvm: -server -Xmx1024m -Xms1024m
 -runee: JavaSE-1.8
 javac.source:          1.8

Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/controller/impl/Activator.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/controller/impl/Activator.java?rev=1639811&r1=1639810&r2=1639811&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/controller/impl/Activator.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/controller/impl/Activator.java Sat Nov 15 00:17:23 2014
@@ -1,18 +1,23 @@
 package org.apache.felix.dm.benchmark.controller.impl;
 
-import org.apache.felix.dm.DependencyActivatorBase;
-import org.apache.felix.dm.DependencyManager;
-import org.apache.felix.dm.benchmark.scenario.Helper;
+import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 
 /**
  * This activator triggers the scenario controller thread, which will do some microbenchmarks for a given
  * set of scenario bundles. The controller thread is fired only once the framework is started.
  */
-public class Activator extends DependencyActivatorBase {
-    @Override
-    public void init(BundleContext ctx, DependencyManager dm) throws Exception {
-        Helper.debug(() -> "Scenario controller: init");
-        dm.add(createComponent().setImplementation(ScenarioControllerImpl.class));
-    }
+public class Activator implements BundleActivator {
+	ScenarioControllerImpl m_controller;
+	
+	@Override
+	public void start(BundleContext context) throws Exception {
+        m_controller = new ScenarioControllerImpl(context);
+        m_controller.start();
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		m_controller.stop();
+	}
 }

Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/controller/impl/ScenarioControllerImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/controller/impl/ScenarioControllerImpl.java?rev=1639811&r1=1639810&r2=1639811&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/controller/impl/ScenarioControllerImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/controller/impl/ScenarioControllerImpl.java Sat Nov 15 00:17:23 2014
@@ -47,7 +47,7 @@ public class ScenarioControllerImpl impl
     /**
      * Our injected bundle context, used to lookup the bundles to benchmark.
      */
-    private volatile BundleContext m_bctx;
+    private final BundleContext m_bctx;
     
     /**
      * Latches used to detect when expected services are registered, or unregistered.
@@ -60,6 +60,10 @@ public class ScenarioControllerImpl impl
      */
     private volatile boolean m_doProcessingInStartStop;
     
+    public ScenarioControllerImpl(BundleContext context) {
+    	m_bctx = context;
+    }
+    
     /**
      * Our component is starting: we'll first stop all bundles participating in the benchmark, then we'll 
      * fire a thread, and from that thread we'll iterate on all bundles in order to do a benchmark on each.
@@ -89,7 +93,7 @@ public class ScenarioControllerImpl impl
         // Start/stop several times the tested bundles. (no processing done in components start/stop methods).
         m_doProcessingInStartStop = false;
         out.println("\n\t[Starting benchmarks with no processing done in components start/stop methods]");
-        startStopScenarioBundles(TESTS, 15);
+        startStopScenarioBundles(TESTS, 10);
        
         // Start/stop several times the tested bundles (processing is done in components start/stop methods).
         m_doProcessingInStartStop = true;
@@ -247,6 +251,9 @@ public class ScenarioControllerImpl impl
             }
             debug(() -> "all components unregistered, stopping bundle " + b.getSymbolicName());
             b.stop();
+            
+            // Make sure all pending tasks in the threadpool have been fully executed, before restarting a new test
+            Helper.getThreadPool().awaitQuiescence(60, TimeUnit.SECONDS);
         } catch (Throwable t) {
             t.printStackTrace();
         }

Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/scenario/Artist.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/scenario/Artist.java?rev=1639811&r1=1639810&r2=1639811&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/scenario/Artist.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/scenario/Artist.java Sat Nov 15 00:17:23 2014
@@ -10,19 +10,19 @@ public interface Artist {
      * When a scenario bundles starts, it creates the following number of Artists (service)
      * (you have to regenerate the SCR xml descriptor if you modify this, see README)
      */
-    public final int ARTISTS = 30;
+    public final int ARTISTS = 50;
     
     /**
      * Each Artist creates the following number of musical Albums.
      * (you have to regenerate the SCR xml descriptor if you modify this, see README)
      */
-    public final int ALBUMS = 2;
+    public final int ALBUMS = 4;
     
     /**
      * Each Album contains the following number of musical Tracks.
      * (you have to regenerate the SCR xml descriptor if you modify this, see README)
      */
-    public final int TRACKS = 2;
+    public final int TRACKS = 4;
     
     /**
      * Returns the Albums that this Artist has created

Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/scenario/Helper.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/scenario/Helper.java?rev=1639811&r1=1639810&r2=1639811&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/scenario/Helper.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.benchmark/src/org/apache/felix/dm/benchmark/scenario/Helper.java Sat Nov 15 00:17:23 2014
@@ -23,12 +23,12 @@ public class Helper {
      * Threadpool which can be optionally used by parallel scenarios.
      */
     private final static int CORES = Runtime.getRuntime().availableProcessors();
-    private final static ExecutorService TPOOL = new ForkJoinPool(CORES);
+    private final static ForkJoinPool TPOOL = new ForkJoinPool(CORES);
     
     /**
      * Get the threadpool, possibly needed by some scenario supporting parallel mode
      */
-    public static ExecutorService getThreadPool() {
+    public static ForkJoinPool getThreadPool() {
         return TPOOL;
     }