You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by st...@apache.org on 2015/10/29 15:09:09 UTC
svn commit: r1711259 - in
/sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup:
FullJR2VirtualInstance.java FullJR2VirtualInstanceBuilder.java
VotingEventListener.java
Author: stefanegli
Date: Thu Oct 29 14:09:09 2015
New Revision: 1711259
URL: http://svn.apache.org/viewvc?rev=1711259&view=rev
Log:
SLING-5195 : test setup adjustments due to change in HeartbeatHandler
Modified:
sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/FullJR2VirtualInstance.java
sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/FullJR2VirtualInstanceBuilder.java
sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/VotingEventListener.java
Modified: sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/FullJR2VirtualInstance.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/FullJR2VirtualInstance.java?rev=1711259&r1=1711258&r2=1711259&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/FullJR2VirtualInstance.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/FullJR2VirtualInstance.java Thu Oct 29 14:09:09 2015
@@ -18,6 +18,7 @@
*/
package org.apache.sling.discovery.impl.setup;
+import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.discovery.base.its.setup.VirtualInstance;
import org.apache.sling.discovery.impl.Config;
import org.apache.sling.discovery.impl.common.heartbeat.HeartbeatHandler;
@@ -38,6 +39,12 @@ public class FullJR2VirtualInstance exte
public void stopVoting() {
fullBuilder.stopVoting();
}
+
+ public void analyzeVotings() throws Exception {
+ ResourceResolver resourceResolver = getResourceResolverFactory().getAdministrativeResourceResolver(null);
+ fullBuilder.getVotingHandler().analyzeVotings(resourceResolver);
+ resourceResolver.close();
+ }
public Config getFullConfig() {
return fullBuilder.getConfig();
Modified: sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/FullJR2VirtualInstanceBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/FullJR2VirtualInstanceBuilder.java?rev=1711259&r1=1711258&r2=1711259&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/FullJR2VirtualInstanceBuilder.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/FullJR2VirtualInstanceBuilder.java Thu Oct 29 14:09:09 2015
@@ -29,12 +29,12 @@ import org.apache.sling.api.resource.Res
import org.apache.sling.commons.testing.jcr.RepositoryProvider;
import org.apache.sling.discovery.base.commons.BaseDiscoveryService;
import org.apache.sling.discovery.base.commons.ClusterViewService;
-import org.apache.sling.discovery.base.commons.ViewChecker;
import org.apache.sling.discovery.base.commons.UndefinedClusterViewException;
+import org.apache.sling.discovery.base.commons.ViewChecker;
import org.apache.sling.discovery.base.its.setup.ModifiableTestBaseConfig;
import org.apache.sling.discovery.base.its.setup.VirtualInstance;
import org.apache.sling.discovery.base.its.setup.VirtualInstanceBuilder;
-import org.apache.sling.discovery.base.its.setup.mock.MockFactory;
+import org.apache.sling.discovery.base.its.setup.mock.DummyResourceResolverFactory;
import org.apache.sling.discovery.impl.DiscoveryServiceImpl;
import org.apache.sling.discovery.impl.cluster.ClusterViewServiceImpl;
import org.apache.sling.discovery.impl.cluster.voting.VotingHandler;
@@ -52,10 +52,27 @@ public class FullJR2VirtualInstanceBuild
private VotingEventListener observationListener;
private ObservationManager observationManager;
-
+
+ private VotingHandler votingHandler;
+
@Override
public VirtualInstanceBuilder createNewRepository() throws Exception {
- this.factory = MockFactory.mockResourceResolverFactory();
+ DummyResourceResolverFactory dummyFactory = new DummyResourceResolverFactory();
+ dummyFactory.setArtificialDelay(delay);
+ this.factory = dummyFactory;
+ return this;
+ }
+
+ @Override
+ public VirtualInstanceBuilder useRepositoryOf(VirtualInstanceBuilder other) throws Exception {
+ super.useRepositoryOf(other);
+ DummyResourceResolverFactory dummyFactory = new DummyResourceResolverFactory();
+ DummyResourceResolverFactory originalFactory = (DummyResourceResolverFactory) this.factory;
+ // force repository to be created now..
+ originalFactory.getAdministrativeResourceResolver(null);
+ dummyFactory.setSlingRepository(originalFactory.getSlingRepository());
+ dummyFactory.setArtificialDelay(getDelay());
+ this.factory = dummyFactory;
return this;
}
@@ -90,12 +107,12 @@ public class FullJR2VirtualInstanceBuild
@Override
protected ViewChecker createViewChecker() throws Exception {
- return HeartbeatHandler.testConstructor(getSlingSettingsService(), getResourceResolverFactory(), getAnnouncementRegistry(), getConnectorRegistry(), getConfig(), getScheduler());
+ return HeartbeatHandler.testConstructor(getSlingSettingsService(), getResourceResolverFactory(), getAnnouncementRegistry(), getConnectorRegistry(), getConfig(), getScheduler(), getVotingHandler());
}
@Override
protected BaseDiscoveryService createDiscoveryService() throws Exception {
- return DiscoveryServiceImpl.testConstructor(getResourceResolverFactory(), getAnnouncementRegistry(), getConnectorRegistry(), getClusterViewService(), getHeartbeatHandler(), getSlingSettingsService(), getScheduler(), getConfig());
+ return DiscoveryServiceImpl.testConstructor(getResourceResolverFactory(), getAnnouncementRegistry(), getConnectorRegistry(), (ClusterViewServiceImpl) getClusterViewService(), getHeartbeatHandler(), getSlingSettingsService(), getScheduler(), getConfig());
}
@Override
@@ -117,12 +134,22 @@ public class FullJR2VirtualInstanceBuild
}
return additionalServices;
}
+
+ VotingHandler getVotingHandler() throws Exception {
+ if (votingHandler == null) {
+ votingHandler = createVotingHandler();
+ }
+ return votingHandler;
+ }
+
+ private VotingHandler createVotingHandler() throws Exception {
+ return VotingHandler.testConstructor(getSlingSettingsService(), getResourceResolverFactory(), getConfig());
+ }
private Object[] createAdditionalServices(VirtualInstance instance) throws Exception {
Object[] additionals = new Object[1];
- VotingHandler votingHandler = VotingHandler.testConstructor(getSlingSettingsService(), getResourceResolverFactory(), getConfig());
- additionals[0] = votingHandler;
+ additionals[0] = getVotingHandler();
observationListener = new VotingEventListener(instance, votingHandler, getSlingId());
ResourceResolver resourceResolver = getResourceResolverFactory()
Modified: sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/VotingEventListener.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/VotingEventListener.java?rev=1711259&r1=1711258&r2=1711259&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/VotingEventListener.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/setup/VotingEventListener.java Thu Oct 29 14:09:09 2015
@@ -19,6 +19,7 @@
package org.apache.sling.discovery.impl.setup;
import java.util.Properties;
+import java.util.concurrent.ConcurrentLinkedQueue;
import javax.jcr.RepositoryException;
import javax.jcr.observation.Event;
@@ -42,11 +43,35 @@ class VotingEventListener implements Eve
private final VotingHandler votingHandler;
volatile boolean stopped = false;
private final String slingId;
+ private ConcurrentLinkedQueue<org.osgi.service.event.Event> q = new ConcurrentLinkedQueue<org.osgi.service.event.Event>();
- public VotingEventListener(VirtualInstance instance, VotingHandler votingHandler, String slingId) {
+ public VotingEventListener(VirtualInstance instance, final VotingHandler votingHandler, final String slingId) {
this.instance = instance;
this.votingHandler = votingHandler;
this.slingId = slingId;
+ Thread th = new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ while(!stopped) {
+ try{
+ org.osgi.service.event.Event ev = q.poll();
+ if (ev==null) {
+ Thread.sleep(10);
+ continue;
+ }
+ logger.debug("async.run: delivering event to listener: "+slingId+", stopped: "+stopped+", event: "+ev);
+ votingHandler.handleEvent(ev);
+ } catch(Exception e) {
+ logger.error("async.run: got Exception: "+e, e);
+ }
+ }
+ }
+
+ });
+ th.setName("VotingEventListener-"+instance.getDebugName());
+ th.setDaemon(true);
+ th.start();
}
public void stop() {
@@ -77,8 +102,8 @@ class VotingEventListener implements Eve
properties.put("path", event.getPath());
org.osgi.service.event.Event osgiEvent = new org.osgi.service.event.Event(
topic, properties);
- logger.debug("onEvent: delivering event to listener: "+slingId+", stopped: "+stopped+", event: "+osgiEvent);
- votingHandler.handleEvent(osgiEvent);
+ logger.debug("onEvent: enqueuing event to listener: "+slingId+", stopped: "+stopped+", event: "+osgiEvent);
+ q.add(osgiEvent);
} catch (RepositoryException e) {
logger.warn("RepositoryException: " + e, e);
}
@@ -90,7 +115,7 @@ class VotingEventListener implements Eve
try {
this.instance.dumpRepo();
} catch (Exception e) {
- e.printStackTrace();
+ logger.info("onEvent: could not dump as part of catching a throwable, e="+e+", th="+th);
}
logger.error(
"Throwable occurred in onEvent: " + th, th);