From d56edb4da22293ecc086a084f4fdbe62174986ee Mon Sep 17 00:00:00 2001 From: Ralph Steiner Date: Wed, 15 Apr 2020 17:11:41 +0200 Subject: [PATCH] Mark slow and resource intensive tests with a JUnit test category Mark JobManagerLoadTest as a resource intensive test as it requires up to 25k native threads. Mark tests which require more than five seconds to be executed as slow tests. Change-Id: I45773bd89763b98d195753b915768d57a217533e Reviewed-on: https://git.eclipse.org/r/161036 Tested-by: CI Bot Reviewed-by: Beat Schwarzentrub --- .../scout/rt/mom/jms/JmsMomImplementorTest.java | 3 +++ .../platform/testcategory/ITestCategory.java | 9 +++++++++ .../testcategory/ResourceIntensiveTest.java | 13 +++++++++++++ .../rt/testing/platform/testcategory/SlowTest.java | 12 ++++++++++++ .../scout/rt/platform/job/JobFutureTaskTest.java | 3 +++ .../scout/rt/platform/job/JobManagerLoadTest.java | 3 +++ .../rt/platform/job/ScheduleAtFixedRateTest.java | 3 +++ .../rt/platform/job/ScheduleWithFixedDelayTest.java | 3 +++ .../job/internal/ExecutionSemaphoreTest.java | 3 +++ .../job/internal/SerialFutureExecutionTest.java | 3 +++ 10 files changed, 55 insertions(+) create mode 100644 org.eclipse.scout.rt.platform.test/src/main/java/org/eclipse/scout/rt/testing/platform/testcategory/ITestCategory.java create mode 100644 org.eclipse.scout.rt.platform.test/src/main/java/org/eclipse/scout/rt/testing/platform/testcategory/ResourceIntensiveTest.java create mode 100644 org.eclipse.scout.rt.platform.test/src/main/java/org/eclipse/scout/rt/testing/platform/testcategory/SlowTest.java diff --git a/org.eclipse.scout.rt.mom.jms.test/src/test/java/org/eclipse/scout/rt/mom/jms/JmsMomImplementorTest.java b/org.eclipse.scout.rt.mom.jms.test/src/test/java/org/eclipse/scout/rt/mom/jms/JmsMomImplementorTest.java index 3b0789fd7c9..e154711af03 100644 --- a/org.eclipse.scout.rt.mom.jms.test/src/test/java/org/eclipse/scout/rt/mom/jms/JmsMomImplementorTest.java +++ b/org.eclipse.scout.rt.mom.jms.test/src/test/java/org/eclipse/scout/rt/mom/jms/JmsMomImplementorTest.java @@ -101,6 +101,7 @@ import org.eclipse.scout.rt.testing.platform.runner.parameterized.IScoutTestParameter; import org.eclipse.scout.rt.testing.platform.runner.parameterized.NonParameterized; import org.eclipse.scout.rt.testing.platform.runner.parameterized.ParameterizedPlatformTestRunner; +import org.eclipse.scout.rt.testing.platform.testcategory.SlowTest; import org.eclipse.scout.rt.testing.platform.util.BlockingCountDownLatch; import org.junit.After; import org.junit.Assume; @@ -108,12 +109,14 @@ import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; +import org.junit.experimental.categories.Category; import org.junit.rules.TestName; import org.junit.runner.RunWith; import org.junit.runners.Parameterized.Parameters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@Category(SlowTest.class) @RunWith(ParameterizedPlatformTestRunner.class) public class JmsMomImplementorTest { diff --git a/org.eclipse.scout.rt.platform.test/src/main/java/org/eclipse/scout/rt/testing/platform/testcategory/ITestCategory.java b/org.eclipse.scout.rt.platform.test/src/main/java/org/eclipse/scout/rt/testing/platform/testcategory/ITestCategory.java new file mode 100644 index 00000000000..a1a63fc1a72 --- /dev/null +++ b/org.eclipse.scout.rt.platform.test/src/main/java/org/eclipse/scout/rt/testing/platform/testcategory/ITestCategory.java @@ -0,0 +1,9 @@ +package org.eclipse.scout.rt.testing.platform.testcategory; + +import org.junit.experimental.categories.Category; + +/** + * Marker interface for test categories used with JUnit {@link Category} + */ +public interface ITestCategory { +} diff --git a/org.eclipse.scout.rt.platform.test/src/main/java/org/eclipse/scout/rt/testing/platform/testcategory/ResourceIntensiveTest.java b/org.eclipse.scout.rt.platform.test/src/main/java/org/eclipse/scout/rt/testing/platform/testcategory/ResourceIntensiveTest.java new file mode 100644 index 00000000000..474ba8d2d75 --- /dev/null +++ b/org.eclipse.scout.rt.platform.test/src/main/java/org/eclipse/scout/rt/testing/platform/testcategory/ResourceIntensiveTest.java @@ -0,0 +1,13 @@ +package org.eclipse.scout.rt.testing.platform.testcategory; + +import org.junit.experimental.categories.Category; + +/** + * A marker interface for tests which require a lot of system resource. Some test environments have strict resource + * limits and may not be able to provide e.g. 10k native threads. Test which require a lot of threads, cpu or memory + * should be tagged with this category. + *

+ * Used together with {@link Category} annotation in unit-tests. + */ +public interface ResourceIntensiveTest extends ITestCategory { +} diff --git a/org.eclipse.scout.rt.platform.test/src/main/java/org/eclipse/scout/rt/testing/platform/testcategory/SlowTest.java b/org.eclipse.scout.rt.platform.test/src/main/java/org/eclipse/scout/rt/testing/platform/testcategory/SlowTest.java new file mode 100644 index 00000000000..58380f252fd --- /dev/null +++ b/org.eclipse.scout.rt.platform.test/src/main/java/org/eclipse/scout/rt/testing/platform/testcategory/SlowTest.java @@ -0,0 +1,12 @@ +package org.eclipse.scout.rt.testing.platform.testcategory; + +import org.junit.experimental.categories.Category; + +/** + * A marker interface for tests which require a lot of time to be executed. These tests can be excluded during + * continuous builds but are run on a daily basis. Try to avoid this category by rewriting tests. + *

+ * Used together with {@link Category} annotation in unit-tests. + */ +public interface SlowTest extends ITestCategory { +} diff --git a/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/JobFutureTaskTest.java b/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/JobFutureTaskTest.java index 3e9064a2fee..0738be6ed62 100644 --- a/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/JobFutureTaskTest.java +++ b/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/JobFutureTaskTest.java @@ -15,8 +15,11 @@ import org.eclipse.scout.rt.platform.util.concurrent.FutureCancelledError; import org.eclipse.scout.rt.platform.util.concurrent.IRunnable; import org.eclipse.scout.rt.platform.util.concurrent.ThreadInterruptedError; +import org.eclipse.scout.rt.testing.platform.testcategory.SlowTest; import org.junit.Test; +import org.junit.experimental.categories.Category; +@Category(SlowTest.class) public class JobFutureTaskTest { private static final int ROUNDS = 100000; private static final String TEST_HINT = "JobFutureTaskTest_testRaceConditionOnCancelWithJobManager"; diff --git a/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/JobManagerLoadTest.java b/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/JobManagerLoadTest.java index 1aa3889c0a7..e5737ec4e83 100644 --- a/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/JobManagerLoadTest.java +++ b/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/JobManagerLoadTest.java @@ -12,9 +12,12 @@ import org.eclipse.scout.rt.platform.util.concurrent.IRunnable; import org.eclipse.scout.rt.platform.util.concurrent.TimedOutError; import org.eclipse.scout.rt.testing.platform.runner.PlatformTestRunner; +import org.eclipse.scout.rt.testing.platform.testcategory.ResourceIntensiveTest; import org.junit.Test; +import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; +@Category(ResourceIntensiveTest.class) // uses up to 25k native threads @RunWith(PlatformTestRunner.class) public class JobManagerLoadTest { diff --git a/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/ScheduleAtFixedRateTest.java b/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/ScheduleAtFixedRateTest.java index 04059dfb9db..8b72aa1d245 100644 --- a/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/ScheduleAtFixedRateTest.java +++ b/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/ScheduleAtFixedRateTest.java @@ -26,10 +26,13 @@ import org.eclipse.scout.rt.platform.util.concurrent.IRunnable; import org.eclipse.scout.rt.testing.platform.runner.JUnitExceptionHandler; import org.eclipse.scout.rt.testing.platform.runner.PlatformTestRunner; +import org.eclipse.scout.rt.testing.platform.testcategory.SlowTest; import org.junit.Test; +import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.quartz.SimpleScheduleBuilder; +@Category(SlowTest.class) @RunWith(PlatformTestRunner.class) public class ScheduleAtFixedRateTest { diff --git a/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/ScheduleWithFixedDelayTest.java b/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/ScheduleWithFixedDelayTest.java index 36d8dd7f38d..5acd2101438 100644 --- a/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/ScheduleWithFixedDelayTest.java +++ b/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/ScheduleWithFixedDelayTest.java @@ -26,9 +26,12 @@ import org.eclipse.scout.rt.platform.util.concurrent.IRunnable; import org.eclipse.scout.rt.testing.platform.runner.JUnitExceptionHandler; import org.eclipse.scout.rt.testing.platform.runner.PlatformTestRunner; +import org.eclipse.scout.rt.testing.platform.testcategory.SlowTest; import org.junit.Test; +import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; +@Category(SlowTest.class) @RunWith(PlatformTestRunner.class) public class ScheduleWithFixedDelayTest { diff --git a/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/internal/ExecutionSemaphoreTest.java b/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/internal/ExecutionSemaphoreTest.java index 79a44a16f06..33ab4276cd1 100644 --- a/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/internal/ExecutionSemaphoreTest.java +++ b/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/internal/ExecutionSemaphoreTest.java @@ -27,10 +27,13 @@ import org.eclipse.scout.rt.testing.platform.job.JobTestUtil; import org.eclipse.scout.rt.testing.platform.runner.PlatformTestRunner; import org.eclipse.scout.rt.testing.platform.runner.Times; +import org.eclipse.scout.rt.testing.platform.testcategory.SlowTest; import org.eclipse.scout.rt.testing.platform.util.BlockingCountDownLatch; import org.junit.Test; +import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; +@Category(SlowTest.class) @RunWith(PlatformTestRunner.class) public class ExecutionSemaphoreTest { diff --git a/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/internal/SerialFutureExecutionTest.java b/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/internal/SerialFutureExecutionTest.java index 25d298e33ae..b16af8263a4 100644 --- a/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/internal/SerialFutureExecutionTest.java +++ b/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/job/internal/SerialFutureExecutionTest.java @@ -12,12 +12,15 @@ import org.eclipse.scout.rt.platform.job.Jobs; import org.eclipse.scout.rt.platform.util.concurrent.IRunnable; import org.eclipse.scout.rt.testing.platform.runner.PlatformTestRunner; +import org.eclipse.scout.rt.testing.platform.testcategory.SlowTest; import org.eclipse.scout.rt.testing.platform.util.BlockingCountDownLatch; import org.junit.Test; +import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.quartz.SimpleScheduleBuilder; import org.quartz.SimpleTrigger; +@Category(SlowTest.class) @RunWith(PlatformTestRunner.class) public class SerialFutureExecutionTest {