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 2016/04/27 11:25:50 UTC
svn commit: r1741177 - in /sling/trunk/bundles/extensions/discovery: base/
base/src/test/java/org/apache/sling/discovery/base/connectors/announcement/
base/src/test/java/org/apache/sling/discovery/base/its/ commons/
commons/src/test/java/org/apache/sli...
Author: stefanegli
Date: Wed Apr 27 09:25:49 2016
New Revision: 1741177
URL: http://svn.apache.org/viewvc?rev=1741177&view=rev
Log:
SLING-5598 : exclude slow running test by newly introduced Slow junit category - to run them nevertheless use -PincludeSlowTests
Added:
sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestSlowViewStateManager.java (with props)
Modified:
sling/trunk/bundles/extensions/discovery/base/pom.xml
sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImplTest.java
sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractClusterLoadTest.java
sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractClusterTest.java
sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractDiscoveryServiceTest.java
sling/trunk/bundles/extensions/discovery/commons/pom.xml
sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestMinEventDelayHandler.java
sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestViewStateManager.java
sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/spi/base/RepositoryTestHelper.java
sling/trunk/bundles/extensions/discovery/impl/pom.xml
sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/RepositoryDelaysTest.java
sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java
sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/common/heartbeat/HeartbeatTest.java
sling/trunk/bundles/extensions/discovery/oak/pom.xml
Modified: sling/trunk/bundles/extensions/discovery/base/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/base/pom.xml?rev=1741177&r1=1741176&r2=1741177&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/base/pom.xml (original)
+++ sling/trunk/bundles/extensions/discovery/base/pom.xml Wed Apr 27 09:25:49 2016
@@ -40,15 +40,21 @@
<url>http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/base</url>
</scm>
+ <properties>
+ <!-- by default Slow tests are excluded - use -PincludeSlowTests to include them -->
+ <sling.excluded.surefire.groups>org.apache.sling.commons.testing.junit.categories.Slow</sling.excluded.surefire.groups>
+ </properties>
+
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <redirectTestOutputToFile>false</redirectTestOutputToFile>
- <argLine>-Xmx2048m</argLine>
- </configuration>
+ <configuration>
+ <redirectTestOutputToFile>true</redirectTestOutputToFile>
+ <argLine>-Xmx2048m</argLine>
+ <excludedGroups>${sling.excluded.surefire.groups}</excludedGroups>
+ </configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
@@ -90,6 +96,17 @@
</plugin>
</plugins>
</build>
+ <profiles>
+ <profile>
+ <!-- when -PincludeSlowTests is set, the Slow tests should also be executed,
+ hence unsetting the category excludes 'sling.excluded.surefire.groups' to
+ achieve that. -->
+ <id>includeSlowTests</id>
+ <properties>
+ <sling.excluded.surefire.groups></sling.excluded.surefire.groups>
+ </properties>
+ </profile>
+ </profiles>
<dependencies>
<dependency>
<groupId>org.apache.felix</groupId>
@@ -127,7 +144,7 @@
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-api</artifactId>
- <version>2.2.4</version>
+ <version>2.10.2</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -151,7 +168,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.discovery.commons</artifactId>
- <version>1.0.7-SNAPSHOT</version>
+ <version>1.0.13-SNAPSHOT</version>
</dependency>
<!-- besides including discovery.commons' normal jar above,
for testing a few test helper classes are also reused.
@@ -159,7 +176,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.discovery.commons</artifactId>
- <version>1.0.7-SNAPSHOT</version>
+ <version>1.0.13-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
@@ -229,6 +246,10 @@
<dependency>
<groupId>org.jmock</groupId>
<artifactId>jmock-junit4</artifactId>
+ <!-- with 2.5.1 jmock-junit4, which has a dependency on junit 4.4
+ you get the following: NoSuchMethodError: org.junit.runner.Request.classes(Lorg/junit/runner/Computer;[Ljava/lang/Class;)Lorg/junit/runner/Request;
+ hence this explicit newer dependency. -->
+ <!-- <version>2.8.2</version> -->
</dependency>
<dependency>
<groupId>org.mockito</groupId>
@@ -239,13 +260,13 @@
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-jcr-commons</artifactId>
- <version>2.10.1</version>
+ <version>2.12.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.commons.testing</artifactId>
- <version>2.0.22</version>
+ <version>2.0.25-SNAPSHOT</version>
<scope>test</scope>
<exclusions>
<!-- slf4j simple implementation logs INFO + higher to stdout (we don't want that behaviour) -->
@@ -296,6 +317,7 @@
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.testing.sling-mock</artifactId>
<version>1.2.0</version>
+ <scope>test</scope>
</dependency>
</dependencies>
</project>
Modified: sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImplTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImplTest.java?rev=1741177&r1=1741176&r2=1741177&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImplTest.java (original)
+++ sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImplTest.java Wed Apr 27 09:25:49 2016
@@ -31,6 +31,7 @@ import javax.jcr.Session;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.commons.testing.jcr.RepositoryProvider;
+import org.apache.sling.commons.testing.junit.categories.Slow;
import org.apache.sling.discovery.ClusterView;
import org.apache.sling.discovery.InstanceDescription;
import org.apache.sling.discovery.base.connectors.BaseConfig;
@@ -43,6 +44,7 @@ import org.apache.sling.discovery.common
import org.apache.sling.discovery.commons.providers.spi.base.DummySlingSettingsService;
import org.junit.Before;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
public class AnnouncementRegistryImplTest {
@@ -78,6 +80,16 @@ public class AnnouncementRegistryImplTes
@Test
public void testRegisterUnregister() throws Exception {
+ doTestRegisterUnregister(false);
+ }
+
+ @Category(Slow.class)
+ @Test
+ public void testRegisterUnregister_Slow() throws Exception {
+ doTestRegisterUnregister(true);
+ }
+
+ private void doTestRegisterUnregister(boolean includeFinalExpiryCheck) throws Exception {
try{
registry.registerAnnouncement(null);
fail("should complain");
@@ -142,9 +154,10 @@ public class AnnouncementRegistryImplTes
assertTrue(registry.registerAnnouncement(ann)!=-1);
assertEquals(1, registry.listInstances(localCluster).size());
- Thread.sleep(10500);
- assertEquals(0, registry.listInstances(localCluster).size());
-
+ if (includeFinalExpiryCheck) {
+ Thread.sleep(10500);
+ assertEquals(0, registry.listInstances(localCluster).size());
+ }
}
@Test
@@ -315,6 +328,16 @@ public class AnnouncementRegistryImplTes
@Test
public void testCluster() throws Exception {
+ doTestCluster(false);
+ }
+
+ @Category(Slow.class)
+ @Test
+ public void testCluster_Slow() throws Exception {
+ doTestCluster(true);
+ }
+
+ private void doTestCluster(boolean includeFinalExpiryCheck) throws Exception {
ClusterView cluster1 = createCluster(2);
ClusterView cluster2 = createCluster(4);
ClusterView cluster3 = createCluster(7);
@@ -372,15 +395,17 @@ public class AnnouncementRegistryImplTes
assertEquals(0, registry2.listLocalIncomingAnnouncements().size());
assertAnnouncements(registry2, myCluster, 3, 8);
- Thread.sleep(10500);
- assertAnnouncements(registry1, myCluster, 3, 8);
- assertAnnouncements(registry2, myCluster, 3, 8);
- registry1.checkExpiredAnnouncements();
- registry2.checkExpiredAnnouncements();
- assertAnnouncements(registry1, myCluster, 1, 2);
- assertAnnouncements(registry2, myCluster, 1, 2);
+ if (includeFinalExpiryCheck) {
+ Thread.sleep(10500);
+ assertAnnouncements(registry1, myCluster, 3, 8);
+ assertAnnouncements(registry2, myCluster, 3, 8);
+ registry1.checkExpiredAnnouncements();
+ registry2.checkExpiredAnnouncements();
+ assertAnnouncements(registry1, myCluster, 1, 2);
+ assertAnnouncements(registry2, myCluster, 1, 2);
+ }
}
-
+
private void assertAnnouncements(AnnouncementRegistryImpl registry,
ClusterView myCluster, int expectedNumAnnouncements, int expectedNumInstances) {
Announcement ann = createAnnouncement(myCluster, 0, false);
Modified: sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractClusterLoadTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractClusterLoadTest.java?rev=1741177&r1=1741176&r2=1741177&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractClusterLoadTest.java (original)
+++ sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractClusterLoadTest.java Wed Apr 27 09:25:49 2016
@@ -25,6 +25,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Random;
+import org.apache.sling.commons.testing.junit.categories.Slow;
import org.apache.sling.discovery.base.commons.UndefinedClusterViewException;
import org.apache.sling.discovery.base.its.setup.VirtualInstance;
import org.apache.sling.discovery.base.its.setup.VirtualInstanceBuilder;
@@ -32,6 +33,7 @@ import org.apache.sling.discovery.base.i
import org.apache.sling.testing.tools.retry.RetryLoop;
import org.junit.After;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -110,35 +112,52 @@ public abstract class AbstractClusterLoa
}
@Test
+ public void testTwoInstancesFast() throws Throwable {
+ doTest(2, 3);
+ }
+
+ @Test
+ public void testThreeInstancesFast() throws Throwable {
+ doTest(3, 3);
+ }
+
+ @Category(Slow.class)
+ @Test
public void testTwoInstances() throws Throwable {
doTest(2, 5);
}
+ @Category(Slow.class)
@Test
public void testThreeInstances() throws Throwable {
doTest(3, 6);
}
+ @Category(Slow.class)
@Test
public void testFourInstances() throws Throwable {
doTest(4, 7);
}
+ @Category(Slow.class)
@Test
public void testFiveInstances() throws Throwable {
doTest(5, 8);
}
+ @Category(Slow.class)
@Test
public void testSixInstances() throws Throwable {
doTest(6, 9);
}
+ @Category(Slow.class)
@Test
public void testSevenInstances() throws Throwable {
doTest(7, 10);
}
+ @Category(Slow.class)
@Test
public void testEightInstances() throws Throwable {
doTest(8, 50);
Modified: sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractClusterTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractClusterTest.java?rev=1741177&r1=1741176&r2=1741177&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractClusterTest.java (original)
+++ sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractClusterTest.java Wed Apr 27 09:25:49 2016
@@ -36,6 +36,7 @@ import java.util.concurrent.Semaphore;
import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
+import org.apache.sling.commons.testing.junit.categories.Slow;
import org.apache.sling.discovery.ClusterView;
import org.apache.sling.discovery.InstanceDescription;
import org.apache.sling.discovery.TopologyEvent;
@@ -56,6 +57,7 @@ import org.apache.sling.discovery.base.i
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -325,6 +327,7 @@ public abstract class AbstractClusterTes
* then simulate load balancer switching from instance1 to instance2 - hence pings go to instance2
*
*/
+ @Category(Slow.class) //TODO: this takes env 45sec
@Test
public void testConnectorSwitching4139() throws Throwable {
final int MIN_EVENT_DELAY = 1;
@@ -504,6 +507,7 @@ public abstract class AbstractClusterTes
}
+ @Category(Slow.class) //TODO: this takes env 25sec
@Test
public void testDuplicateInstance3726() throws Throwable {
logger.info("testDuplicateInstance3726: start");
@@ -1240,6 +1244,7 @@ public abstract class AbstractClusterTes
logger.info("testClusterView: end");
}
+ @Category(Slow.class) //TODO: this takes env 15sec
@Test
public void testAdditionalInstance() throws Throwable {
logger.info("testAdditionalInstance: start");
@@ -1454,6 +1459,7 @@ public abstract class AbstractClusterTes
* the second listener still gets the event
* @throws Throwable
*/
+ @Category(Slow.class) //TODO: this takes env 15sec
@Test
public void testLongRunningListener() throws Throwable {
// let the instance1 become alone, instance2 is idle
Modified: sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractDiscoveryServiceTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractDiscoveryServiceTest.java?rev=1741177&r1=1741176&r2=1741177&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractDiscoveryServiceTest.java (original)
+++ sling/trunk/bundles/extensions/discovery/base/src/test/java/org/apache/sling/discovery/base/its/AbstractDiscoveryServiceTest.java Wed Apr 27 09:25:49 2016
@@ -27,6 +27,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Random;
+import org.apache.sling.commons.testing.junit.categories.Slow;
import org.apache.sling.discovery.InstanceDescription;
import org.apache.sling.discovery.TopologyEvent;
import org.apache.sling.discovery.TopologyEvent.Type;
@@ -39,6 +40,7 @@ import org.apache.sling.testing.tools.re
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -277,6 +279,22 @@ public abstract class AbstractDiscoveryS
}
@Test
+ public void testFiveInstances() throws Throwable {
+ logger.info("testFiveInstances: start");
+ Tester i1 = newInstance("i1", 1, 30, 250, null);
+ for(int i=2; i<=5; i++) {
+ Tester in = newInstance("i"+i, 1, 30, 250, i1.instance);
+ }
+ logger.info("testFiveInstances: starting retry loop (40sec max)");
+ startRetryLoop(testers, 40);
+ i1.instance.dumpRepo();
+ i1.assertNoFailures();
+ assertStableTopology(testers.toArray(new Tester[0]));
+ logger.info("testFiveInstances: end");
+ }
+
+ @Category(Slow.class) //TODO: this takes env 10sec
+ @Test
public void testTenInstances() throws Throwable {
logger.info("testTenInstances: start");
Tester i1 = newInstance("i1", 1, 30, 250, null);
@@ -291,6 +309,7 @@ public abstract class AbstractDiscoveryS
logger.info("testTenInstances: end");
}
+ @Category(Slow.class) //TODO: this takes env 15sec
@Test
public void testTwentyInstances() throws Throwable {
logger.info("testTwentyInstances: start");
@@ -306,6 +325,7 @@ public abstract class AbstractDiscoveryS
logger.info("testTwentyInstances: end");
}
+ @Category(Slow.class) //TODO: this takes env 40sec
@Test
public void testTwentyFourInstances() throws Throwable {
logger.info("testTwentyFourInstances: start");
@@ -350,6 +370,7 @@ public abstract class AbstractDiscoveryS
}, retryTimeoutSeconds /*seconds*/, 1000/*millis*/);
}
+ @Category(Slow.class) //TODO: this takes env 120sec
@Test
public void testStartStopFiesta() throws Throwable {
final Tester[] instances = new Tester[8];
Modified: sling/trunk/bundles/extensions/discovery/commons/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/commons/pom.xml?rev=1741177&r1=1741176&r2=1741177&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/commons/pom.xml (original)
+++ sling/trunk/bundles/extensions/discovery/commons/pom.xml Wed Apr 27 09:25:49 2016
@@ -33,13 +33,18 @@
<name>Apache Sling Discovery Commons</name>
<description>Common services related to Sling Discovery</description>
-
+
<scm>
<connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/discovery/commons</connection>
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/discovery/commons</developerConnection>
<url>http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/commons</url>
</scm>
+ <properties>
+ <!-- by default Slow tests are excluded - use -PincludeSlowTests to include them -->
+ <sling.excluded.surefire.groups>org.apache.sling.commons.testing.junit.categories.Slow</sling.excluded.surefire.groups>
+ </properties>
+
<build>
<plugins>
<plugin>
@@ -66,8 +71,28 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <redirectTestOutputToFile>true</redirectTestOutputToFile>
+ <argLine>-Xmx2048m</argLine>
+ <excludedGroups>${sling.excluded.surefire.groups}</excludedGroups>
+ </configuration>
+ </plugin>
</plugins>
</build>
+ <profiles>
+ <profile>
+ <!-- when -PincludeSlowTests is set, the Slow tests should also be executed,
+ hence unsetting the category excludes 'sling.excluded.surefire.groups' to
+ achieve that. -->
+ <id>includeSlowTests</id>
+ <properties>
+ <sling.excluded.surefire.groups></sling.excluded.surefire.groups>
+ </properties>
+ </profile>
+ </profiles>
<dependencies>
<dependency>
<groupId>org.apache.felix</groupId>
@@ -110,7 +135,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.commons.testing</artifactId>
- <version>2.0.16</version>
+ <version>2.0.25-SNAPSHOT</version>
<scope>test</scope>
<exclusions>
<!-- slf4j simple implementation logs INFO + higher to stdout (we don't want that behaviour) -->
@@ -208,5 +233,13 @@
<version>1.2.2</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.jmock</groupId>
+ <artifactId>jmock-junit4</artifactId>
+ <!-- with 2.5.1 jmock-junit4, which has a dependency on junit 4.4
+ you get the following: NoSuchMethodError: org.junit.runner.Request.classes(Lorg/junit/runner/Computer;[Ljava/lang/Class;)Lorg/junit/runner/Request;
+ hence this explicit newer dependency. -->
+ <version>2.8.2</version>
+ </dependency>
</dependencies>
</project>
Modified: sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestMinEventDelayHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestMinEventDelayHandler.java?rev=1741177&r1=1741176&r2=1741177&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestMinEventDelayHandler.java (original)
+++ sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestMinEventDelayHandler.java Wed Apr 27 09:25:49 2016
@@ -29,6 +29,7 @@ import java.util.concurrent.locks.Reentr
import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
+import org.apache.sling.commons.testing.junit.categories.Slow;
import org.apache.sling.discovery.commons.providers.BaseTopologyView;
import org.apache.sling.discovery.commons.providers.DefaultClusterView;
import org.apache.sling.discovery.commons.providers.DummyTopologyView;
@@ -39,6 +40,7 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -77,7 +79,7 @@ public class TestMinEventDelayHandler {
final org.apache.log4j.Logger discoveryLogger = LogManager.getRootLogger().getLogger("org.apache.sling.discovery");
logLevel = discoveryLogger.getLevel();
- discoveryLogger.setLevel(Level.DEBUG);
+ discoveryLogger.setLevel(Level.INFO); // changed from Level.DEBUG
}
@After
@@ -165,6 +167,7 @@ public class TestMinEventDelayHandler {
assertEquals(0, listener.countEvents());
}
+ @Category(Slow.class) //TODO test takes env 50sec
@Test
public void testNormalDelaying() throws Exception {
final DummyListener listener = new DummyListener();
@@ -190,6 +193,7 @@ public class TestMinEventDelayHandler {
}
}
+ @Category(Slow.class) //TODO test takes env 45sec
@Test
public void testFailedDelaying() throws Exception {
scheduler.failMode();
Added: sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestSlowViewStateManager.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestSlowViewStateManager.java?rev=1741177&view=auto
==============================================================================
--- sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestSlowViewStateManager.java (added)
+++ sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestSlowViewStateManager.java Wed Apr 27 09:25:49 2016
@@ -0,0 +1,153 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.discovery.commons.providers.base;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+import java.util.Random;
+import java.util.UUID;
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.locks.ReentrantLock;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
+import org.apache.sling.commons.testing.junit.categories.Slow;
+import org.apache.sling.discovery.TopologyEvent;
+import org.apache.sling.discovery.commons.providers.DefaultClusterView;
+import org.apache.sling.discovery.commons.providers.DummyTopologyView;
+import org.apache.sling.discovery.commons.providers.EventHelper;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+@Category(Slow.class)
+public class TestSlowViewStateManager extends TestViewStateManager {
+
+ /** does couple loops randomly calling handleChanging() (or not) and then handleNewView().
+ * Note: random is passed to allow customizing and not hardcoding this method to a particular random
+ * @throws InterruptedException **/
+ protected void randomEventLoop(final Random random, DummyListener... listeners) throws InterruptedException {
+ TestHelper.randomEventLoop(mgr, null, 100, -1, random, listeners);
+ }
+
+ @Category(Slow.class) //TODO test takes env 10sec
+ @Test
+ public void testClusterSyncService_withConcurrency() throws Exception {
+ final org.apache.log4j.Logger commonsLogger = LogManager.getRootLogger().getLogger("org.apache.sling.discovery.commons.providers");
+ final org.apache.log4j.Level logLevel = commonsLogger.getLevel();
+ commonsLogger.setLevel(Level.INFO); // change here to DEBUG in case of issues with this test
+ final Semaphore serviceSemaphore = new Semaphore(0);
+ final Semaphore testSemaphore = new Semaphore(0);
+ final ReentrantLock lock = new ReentrantLock();
+ final ClusterSyncServiceWithSemaphore cs = new ClusterSyncServiceWithSemaphore(lock, serviceSemaphore );
+ mgr = new ViewStateManagerImpl(lock, cs);
+ final DummyListener listener = new DummyListener();
+ mgr.bind(listener);
+ TestHelper.assertNoEvents(listener);
+ mgr.handleActivated();
+ TestHelper.assertNoEvents(listener);
+ final String slingId1 = UUID.randomUUID().toString();
+ final String slingId2 = UUID.randomUUID().toString();
+ final String slingId3 = UUID.randomUUID().toString();
+ final String clusterId = UUID.randomUUID().toString();
+ final DefaultClusterView cluster = new DefaultClusterView(clusterId);
+ final DummyTopologyView view1 = new DummyTopologyView()
+ .addInstance(slingId1, cluster, true, true)
+ .addInstance(slingId2, cluster, false, false)
+ .addInstance(slingId3, cluster, false, false);
+ final DummyTopologyView view2 = DummyTopologyView.clone(view1).removeInstance(slingId2);
+ final DummyTopologyView view3 = DummyTopologyView.clone(view1).removeInstance(slingId2).removeInstance(slingId3);
+ async(new Runnable() {
+
+ public void run() {
+ mgr.handleNewView(view1);
+ }
+
+ });
+ Thread.sleep(1000);
+ TestHelper.assertNoEvents(listener);
+ assertEquals("should have one thread now waiting", 1, serviceSemaphore.getQueueLength());
+ serviceSemaphore.release(1); // release the first one only
+ Thread.sleep(1000);
+ assertEvents(listener, EventHelper.newInitEvent(view1));
+ mgr.handleChanging();
+ assertEquals(0, mgr.waitForAsyncEvents(500));
+ assertEvents(listener, EventHelper.newChangingEvent(view1));
+ async(new Runnable() {
+
+ public void run() {
+ mgr.handleNewView(view2);
+ }
+
+ });
+ logger.debug("run: waiting 1sec");
+ Thread.sleep(1000);
+ logger.debug("run: asserting no events");
+ TestHelper.assertNoEvents(listener);
+ assertEquals("should have one thread now waiting", 1, serviceSemaphore.getQueueLength());
+ assertFalse("should not be locked", lock.isLocked());
+
+ logger.debug("run: issuing a second event");
+ // before releasing, issue another event, lets do a combination of changing/changed
+ async(new Runnable() {
+
+ public void run() {
+ logger.debug("run2: calling handleChanging...");
+ mgr.handleChanging();
+ try {
+ logger.debug("run2: done with handleChanging, acquiring testSemaphore...");
+ testSemaphore.acquire();
+ logger.debug("run2: calling handleNewView...");
+ mgr.handleNewView(view3);
+ logger.debug("run2: done with handleNewView...");
+ } catch (InterruptedException e) {
+ // fail
+ logger.error("interrupted: "+e, e);
+ }
+ }
+
+ });
+ logger.debug("run: waiting 1sec");
+ Thread.sleep(1000);
+ int remainingAsyncEvents = mgr.waitForAsyncEvents(2000);
+ logger.info("run: result of waitForAsyncEvent is: "+remainingAsyncEvents);
+ assertEquals("should have one thread now waiting", 1, serviceSemaphore.getQueueLength());
+ assertEquals("should be acquiring (by thread2)", 1, testSemaphore.getQueueLength());
+ // releasing the testSemaphore
+ testSemaphore.release();
+ logger.debug("run: waiting 1sec");
+ Thread.sleep(1000);
+ assertEquals("should have two async events now in the queue or being sent", 2, mgr.waitForAsyncEvents(500));
+ assertEquals("but should only have 1 thread actually sitting on the semaphore waiting", 1, serviceSemaphore.getQueueLength());
+ logger.debug("run: releasing consistencyService");
+ serviceSemaphore.release(1); // release the first one only
+ logger.debug("run: waiting 1sec");
+ Thread.sleep(1000);
+ assertFalse("should not be locked", lock.isLocked());
+ TestHelper.assertNoEvents(listener); // this should not have triggered any event
+ serviceSemaphore.release(1); // then release the 2nd one
+ logger.debug("run: waiting 1sec");
+ Thread.sleep(1000);
+ logger.debug("run: asserting 1 event");
+ final TopologyEvent changedEvent = EventHelper.newChangedEvent(view1, view3);
+ assertEvents(listener, changedEvent);
+ commonsLogger.setLevel(Level.INFO); // back to default
+ }
+
+}
Propchange: sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestSlowViewStateManager.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestViewStateManager.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestViewStateManager.java?rev=1741177&r1=1741176&r2=1741177&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestViewStateManager.java (original)
+++ sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/base/TestViewStateManager.java Wed Apr 27 09:25:49 2016
@@ -32,6 +32,7 @@ import java.util.concurrent.locks.Reentr
import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
+import org.apache.sling.commons.testing.junit.categories.Slow;
import org.apache.sling.discovery.ClusterView;
import org.apache.sling.discovery.DiscoveryService;
import org.apache.sling.discovery.InstanceDescription;
@@ -46,14 +47,15 @@ import org.apache.sling.discovery.common
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestViewStateManager {
- private static final Logger logger = LoggerFactory.getLogger(TestViewStateManager.class);
+ protected static final Logger logger = LoggerFactory.getLogger(TestViewStateManager.class);
- private class ClusterSyncServiceWithSemaphore implements ClusterSyncService {
+ class ClusterSyncServiceWithSemaphore implements ClusterSyncService {
private final Semaphore semaphore;
private final Lock lock;
@@ -86,7 +88,7 @@ public class TestViewStateManager {
}
- private ViewStateManagerImpl mgr;
+ protected ViewStateManagerImpl mgr;
private Random defaultRandom;
@@ -130,8 +132,8 @@ public class TestViewStateManager {
/** does couple loops randomly calling handleChanging() (or not) and then handleNewView().
* Note: random is passed to allow customizing and not hardcoding this method to a particular random
* @throws InterruptedException **/
- private void randomEventLoop(final Random random, DummyListener... listeners) throws InterruptedException {
- TestHelper.randomEventLoop(mgr, null, 100, -1, random, listeners);
+ protected void randomEventLoop(final Random random, DummyListener... listeners) throws InterruptedException {
+ TestHelper.randomEventLoop(mgr, null, 5, -1, random, listeners);
}
@Test
@@ -616,117 +618,14 @@ public class TestViewStateManager {
commonsLogger.setLevel(Level.INFO); // back to default
}
- private void async(Runnable runnable) {
+ protected void async(Runnable runnable) {
new Thread(runnable).start();
}
@Test
- public void testClusterSyncService_withConcurrency() throws Exception {
- final org.apache.log4j.Logger commonsLogger = LogManager.getRootLogger().getLogger("org.apache.sling.discovery.commons.providers");
- final org.apache.log4j.Level logLevel = commonsLogger.getLevel();
- commonsLogger.setLevel(Level.INFO); // change here to DEBUG in case of issues with this test
- final Semaphore serviceSemaphore = new Semaphore(0);
- final Semaphore testSemaphore = new Semaphore(0);
- final ReentrantLock lock = new ReentrantLock();
- final ClusterSyncServiceWithSemaphore cs = new ClusterSyncServiceWithSemaphore(lock, serviceSemaphore );
- mgr = new ViewStateManagerImpl(lock, cs);
- final DummyListener listener = new DummyListener();
- mgr.bind(listener);
- TestHelper.assertNoEvents(listener);
- mgr.handleActivated();
- TestHelper.assertNoEvents(listener);
- final String slingId1 = UUID.randomUUID().toString();
- final String slingId2 = UUID.randomUUID().toString();
- final String slingId3 = UUID.randomUUID().toString();
- final String clusterId = UUID.randomUUID().toString();
- final DefaultClusterView cluster = new DefaultClusterView(clusterId);
- final DummyTopologyView view1 = new DummyTopologyView()
- .addInstance(slingId1, cluster, true, true)
- .addInstance(slingId2, cluster, false, false)
- .addInstance(slingId3, cluster, false, false);
- final DummyTopologyView view2 = DummyTopologyView.clone(view1).removeInstance(slingId2);
- final DummyTopologyView view3 = DummyTopologyView.clone(view1).removeInstance(slingId2).removeInstance(slingId3);
- async(new Runnable() {
-
- public void run() {
- mgr.handleNewView(view1);
- }
-
- });
- Thread.sleep(1000);
- TestHelper.assertNoEvents(listener);
- assertEquals("should have one thread now waiting", 1, serviceSemaphore.getQueueLength());
- serviceSemaphore.release(1); // release the first one only
- Thread.sleep(1000);
- assertEvents(listener, EventHelper.newInitEvent(view1));
- mgr.handleChanging();
- assertEquals(0, mgr.waitForAsyncEvents(500));
- assertEvents(listener, EventHelper.newChangingEvent(view1));
- async(new Runnable() {
-
- public void run() {
- mgr.handleNewView(view2);
- }
-
- });
- logger.debug("run: waiting 1sec");
- Thread.sleep(1000);
- logger.debug("run: asserting no events");
- TestHelper.assertNoEvents(listener);
- assertEquals("should have one thread now waiting", 1, serviceSemaphore.getQueueLength());
- assertFalse("should not be locked", lock.isLocked());
-
- logger.debug("run: issuing a second event");
- // before releasing, issue another event, lets do a combination of changing/changed
- async(new Runnable() {
-
- public void run() {
- logger.debug("run2: calling handleChanging...");
- mgr.handleChanging();
- try {
- logger.debug("run2: done with handleChanging, acquiring testSemaphore...");
- testSemaphore.acquire();
- logger.debug("run2: calling handleNewView...");
- mgr.handleNewView(view3);
- logger.debug("run2: done with handleNewView...");
- } catch (InterruptedException e) {
- // fail
- logger.error("interrupted: "+e, e);
- }
- }
-
- });
- logger.debug("run: waiting 1sec");
- Thread.sleep(1000);
- int remainingAsyncEvents = mgr.waitForAsyncEvents(2000);
- logger.info("run: result of waitForAsyncEvent is: "+remainingAsyncEvents);
- assertEquals("should have one thread now waiting", 1, serviceSemaphore.getQueueLength());
- assertEquals("should be acquiring (by thread2)", 1, testSemaphore.getQueueLength());
- // releasing the testSemaphore
- testSemaphore.release();
- logger.debug("run: waiting 1sec");
- Thread.sleep(1000);
- assertEquals("should have two async events now in the queue or being sent", 2, mgr.waitForAsyncEvents(500));
- assertEquals("but should only have 1 thread actually sitting on the semaphore waiting", 1, serviceSemaphore.getQueueLength());
- logger.debug("run: releasing consistencyService");
- serviceSemaphore.release(1); // release the first one only
- logger.debug("run: waiting 1sec");
- Thread.sleep(1000);
- assertFalse("should not be locked", lock.isLocked());
- TestHelper.assertNoEvents(listener); // this should not have triggered any event
- serviceSemaphore.release(1); // then release the 2nd one
- logger.debug("run: waiting 1sec");
- Thread.sleep(1000);
- logger.debug("run: asserting 1 event");
- final TopologyEvent changedEvent = EventHelper.newChangedEvent(view1, view3);
- assertEvents(listener, changedEvent);
- commonsLogger.setLevel(Level.INFO); // back to default
- }
-
- @Test
public void testOnlyDiffersInProperties() throws Exception {
final org.apache.log4j.Logger discoveryLogger = LogManager.getRootLogger().getLogger("org.apache.sling.discovery");
- discoveryLogger.setLevel(Level.DEBUG);
+ discoveryLogger.setLevel(Level.INFO); // changed from Level.DEBUG
logger.info("testOnlyDiffersInProperties: start");
final String slingId1 = UUID.randomUUID().toString();
final String slingId2 = UUID.randomUUID().toString();
Modified: sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/spi/base/RepositoryTestHelper.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/spi/base/RepositoryTestHelper.java?rev=1741177&r1=1741176&r2=1741177&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/spi/base/RepositoryTestHelper.java (original)
+++ sling/trunk/bundles/extensions/discovery/commons/src/test/java/org/apache/sling/discovery/commons/providers/spi/base/RepositoryTestHelper.java Wed Apr 27 09:25:49 2016
@@ -57,6 +57,7 @@ import org.jmock.Mockery;
import org.jmock.api.Action;
import org.jmock.api.Invocation;
import org.jmock.integration.junit4.JUnit4Mockery;
+import org.jmock.lib.concurrent.Synchroniser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -214,7 +215,10 @@ public class RepositoryTestHelper {
public static ResourceResolverFactory mockResourceResolverFactory(final SlingRepository repositoryOrNull)
throws Exception {
- Mockery context = new JUnit4Mockery();
+ Mockery context = new JUnit4Mockery(){{
+ // @see http://www.jmock.org/threading-synchroniser.html
+ setThreadingPolicy(new Synchroniser());
+ }};
final ResourceResolverFactory resourceResolverFactory = context
.mock(ResourceResolverFactory.class);
Modified: sling/trunk/bundles/extensions/discovery/impl/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/pom.xml?rev=1741177&r1=1741176&r2=1741177&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/pom.xml (original)
+++ sling/trunk/bundles/extensions/discovery/impl/pom.xml Wed Apr 27 09:25:49 2016
@@ -40,15 +40,21 @@
<url>http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl</url>
</scm>
+ <properties>
+ <!-- by default Slow tests are excluded - use -PincludeSlowTests to include them -->
+ <sling.excluded.surefire.groups>org.apache.sling.commons.testing.junit.categories.Slow</sling.excluded.surefire.groups>
+ </properties>
+
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <redirectTestOutputToFile>false</redirectTestOutputToFile>
- <argLine>-Xmx2048m</argLine>
- </configuration>
+ <configuration>
+ <redirectTestOutputToFile>false</redirectTestOutputToFile>
+ <argLine>-Xmx2048m</argLine>
+ <excludedGroups>${sling.excluded.surefire.groups}</excludedGroups>
+ </configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
@@ -74,6 +80,17 @@
</plugin>
</plugins>
</build>
+ <profiles>
+ <profile>
+ <!-- when -PincludeSlowTests is set, the Slow tests should also be executed,
+ hence unsetting the category excludes 'sling.excluded.surefire.groups' to
+ achieve that. -->
+ <id>includeSlowTests</id>
+ <properties>
+ <sling.excluded.surefire.groups></sling.excluded.surefire.groups>
+ </properties>
+ </profile>
+ </profiles>
<dependencies>
<dependency>
<groupId>org.apache.felix</groupId>
@@ -240,7 +257,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.commons.testing</artifactId>
- <version>2.0.24</version>
+ <version>2.0.25-SNAPSHOT</version>
<scope>test</scope>
<exclusions>
<!-- slf4j simple implementation logs INFO + higher to stdout (we don't want that behaviour) -->
Modified: sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/RepositoryDelaysTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/RepositoryDelaysTest.java?rev=1741177&r1=1741176&r2=1741177&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/RepositoryDelaysTest.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/RepositoryDelaysTest.java Wed Apr 27 09:25:49 2016
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertTru
import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
import org.apache.sling.discovery.TopologyView;
+import org.apache.sling.commons.testing.junit.categories.Slow;
import org.apache.sling.discovery.TopologyEvent.Type;
import org.apache.sling.discovery.base.its.setup.VirtualInstanceBuilder;
import org.apache.sling.discovery.base.its.setup.mock.AssertingTopologyEventListener;
@@ -33,6 +34,7 @@ import org.apache.sling.discovery.impl.s
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -81,6 +83,7 @@ public class RepositoryDelaysTest {
* typically for longer than the configured heartbeat
* timeout
*/
+ @Category(Slow.class) //TODO: test takes couple minutes!
@Test
public void testSlowSessionSaves() throws Exception {
VirtualInstanceBuilder builder1 = newBuilder();
Modified: sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java?rev=1741177&r1=1741176&r2=1741177&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/cluster/voting/VotingHandlerTest.java Wed Apr 27 09:25:49 2016
@@ -41,6 +41,7 @@ import javax.jcr.Session;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.commons.testing.jcr.RepositoryProvider;
+import org.apache.sling.commons.testing.junit.categories.Slow;
import org.apache.sling.commons.threads.ModifiableThreadPoolConfig;
import org.apache.sling.commons.threads.impl.DefaultThreadPool;
import org.apache.sling.discovery.base.its.setup.OSGiMock;
@@ -55,6 +56,7 @@ import org.eclipse.jetty.util.Concurrent
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -361,26 +363,40 @@ public class VotingHandlerTest {
doTestConcurrentVotes(123, 12, votingHandler1);
}
+ @Category(Slow.class) //TODO: takes env 15sec
@Test
public void testConcurrentVotesTwoNodes() throws Exception {
doTestConcurrentVotes(456, 12, votingHandler1, votingHandler2);
}
@Test
+ public void testFastConcurrentVotesTwoNodes() throws Exception {
+ doTestConcurrentVotes(42, 12, votingHandler1, votingHandler2);
+ }
+
+ @Category(Slow.class) //TODO: takes env 10sec
+ @Test
public void testConcurrentVotesThreeNodes() throws Exception {
doTestConcurrentVotes(234, 12, votingHandler1, votingHandler2, votingHandler3);
}
+ @Category(Slow.class) //TODO: takes env 30sec
@Test
public void testConcurrentVotesFourNodes() throws Exception {
doTestConcurrentVotes(247, 12, votingHandler1, votingHandler2, votingHandler3, votingHandler4);
}
+ @Category(Slow.class) //TODO: takes env 25sec
@Test
public void testConcurrentVotesFiveNodes() throws Exception {
doTestConcurrentVotes(285, 12, votingHandler1, votingHandler2, votingHandler3, votingHandler4, votingHandler5);
}
+ @Test
+ public void testFastConcurrentVotesFiveNodes() throws Exception {
+ doTestConcurrentVotes(12, 12, votingHandler1, votingHandler2, votingHandler3, votingHandler4, votingHandler5);
+ }
+
private void add(List<VotingDetail> votingDetails, Map<VotingDetail, Integer> totals) {
for (VotingDetail d : votingDetails) {
Integer i = totals.get(d);
Modified: sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/common/heartbeat/HeartbeatTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/common/heartbeat/HeartbeatTest.java?rev=1741177&r1=1741176&r2=1741177&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/common/heartbeat/HeartbeatTest.java (original)
+++ sling/trunk/bundles/extensions/discovery/impl/src/test/java/org/apache/sling/discovery/impl/common/heartbeat/HeartbeatTest.java Wed Apr 27 09:25:49 2016
@@ -40,6 +40,7 @@ import org.apache.sling.api.resource.Mod
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
+import org.apache.sling.commons.testing.junit.categories.Slow;
import org.apache.sling.discovery.TopologyEvent;
import org.apache.sling.discovery.TopologyEventListener;
import org.apache.sling.discovery.TopologyView;
@@ -52,6 +53,7 @@ import org.apache.sling.discovery.impl.s
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.junit.experimental.categories.Category;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -138,11 +140,13 @@ public class HeartbeatTest {
}
}
+ @Category(Slow.class) //TODO: takes env 40sec
@Test
public void testPartitioning() throws Throwable {
doTestPartitioning(true);
}
+ @Category(Slow.class) //TODO: takes env 35sec
@Test
public void testPartitioningWithFailingScheduler() throws Throwable {
doTestPartitioning(false);
@@ -437,11 +441,13 @@ public class HeartbeatTest {
* TOPOLOGY_CHANGED until it finally sends heartbeats again and the voting can
* happen again.
*/
+ @Category(Slow.class) //TODO: takes env 25sec
@Test
public void testSlowAndFastMachine() throws Throwable {
doTestSlowAndFastMachine(false);
}
+ @Category(Slow.class) //TODO: takes env 25sec
@Test
public void testSlowAndFastMachineWithFailingScheduler() throws Throwable {
doTestSlowAndFastMachine(true);
Modified: sling/trunk/bundles/extensions/discovery/oak/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/discovery/oak/pom.xml?rev=1741177&r1=1741176&r2=1741177&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/discovery/oak/pom.xml (original)
+++ sling/trunk/bundles/extensions/discovery/oak/pom.xml Wed Apr 27 09:25:49 2016
@@ -36,6 +36,9 @@
<properties>
<jackrabbit.version>2.12.1</jackrabbit.version>
+
+ <!-- by default Slow tests are excluded - use -PincludeSlowTests to include them -->
+ <sling.excluded.surefire.groups>org.apache.sling.commons.testing.junit.categories.Slow</sling.excluded.surefire.groups>
</properties>
<scm>
@@ -49,10 +52,11 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <redirectTestOutputToFile>false</redirectTestOutputToFile>
- <argLine>-Xmx2048m</argLine>
- </configuration>
+ <configuration>
+ <redirectTestOutputToFile>true</redirectTestOutputToFile>
+ <argLine>-Xmx2048m</argLine>
+ <excludedGroups>${sling.excluded.surefire.groups}</excludedGroups>
+ </configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
@@ -75,6 +79,17 @@
</plugin>
</plugins>
</build>
+ <profiles>
+ <profile>
+ <!-- when -PincludeSlowTests is set, the Slow tests should also be executed,
+ hence unsetting the category excludes 'sling.excluded.surefire.groups' to
+ achieve that. -->
+ <id>includeSlowTests</id>
+ <properties>
+ <sling.excluded.surefire.groups></sling.excluded.surefire.groups>
+ </properties>
+ </profile>
+ </profiles>
<dependencies>
<dependency>
<groupId>org.apache.felix</groupId>
@@ -241,7 +256,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.commons.testing</artifactId>
- <version>2.0.16</version>
+ <version>2.0.25-SNAPSHOT</version>
<scope>test</scope>
<exclusions>
<!-- slf4j simple implementation logs INFO + higher to stdout (we don't want that behaviour) -->