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;
}