You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by jb...@apache.org on 2021/05/11 17:47:41 UTC

[geode-benchmarks] branch feature/redis updated: Test for all RedisBenchmark subclasses.

This is an automated email from the ASF dual-hosted git repository.

jbarrett pushed a commit to branch feature/redis
in repository https://gitbox.apache.org/repos/asf/geode-benchmarks.git


The following commit(s) were added to refs/heads/feature/redis by this push:
     new e8b400b  Test for all RedisBenchmark subclasses.
e8b400b is described below

commit e8b400b206bf1bf061186cc16c325206fb943739
Author: Jacob Barrett <jb...@pivotal.io>
AuthorDate: Tue May 11 10:47:26 2021 -0700

    Test for all RedisBenchmark subclasses.
---
 .../apache/geode/benchmark/tasks/StartServer.java  |  2 +-
 .../benchmark/tests/redis/RedisBenchmark.java      | 19 ++++++++
 .../benchmark/tests/redis/RedisGetBenchmark.java   | 17 -------
 .../benchmark/tests/redis/RedisHgetBenchmark.java  | 17 -------
 .../tests/redis/RedisHsetAndHgetBenchmark.java     | 17 -------
 .../benchmark/tests/redis/RedisHsetBenchmark.java  | 25 ----------
 ...disPutBenchmark.java => RedisSetBenchmark.java} | 22 +--------
 .../redis/RedisWeightedHsetAndHgetBenchmark.java   | 17 -------
 .../benchmark/junit/CartesianSubclassSource.java   | 54 +++++++++++++++++++++
 .../benchmark/junit/SubclassSourceProvider.java    | 46 ++++++++++++++++++
 .../benchmark/tests/redis/RedisBenchmarkTest.java  | 56 ++++++++++++++++++++++
 11 files changed, 177 insertions(+), 115 deletions(-)

diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartServer.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartServer.java
index 27dbb04..693c234 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartServer.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tasks/StartServer.java
@@ -53,7 +53,7 @@ public class StartServer implements Task {
 
     final CacheFactory cacheFactory = new CacheFactory(properties);
     configureCacheFactory(cacheFactory, context);
-    InternalCache cache = (InternalCache) cacheFactory.create();
+    final InternalCache cache = (InternalCache) cacheFactory.create();
 
     final CacheServer cacheServer = configureCacheServer(cache.addCacheServer(), context);
     if (null != cacheServer) {
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisBenchmark.java
index d9775b6..7542769 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisBenchmark.java
@@ -16,13 +16,19 @@
 package org.apache.geode.benchmark.tests.redis;
 
 import static com.google.common.base.Strings.isNullOrEmpty;
+import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.after;
 import static org.apache.geode.benchmark.Config.before;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
+import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.tests.redis.RedisBenchmark.RedisClientImplementation.Jedis;
 import static org.apache.geode.benchmark.tests.redis.RedisBenchmark.RedisClusterImplementation.Geode;
 import static org.apache.geode.benchmark.tests.redis.RedisBenchmark.RedisClusterImplementation.Manual;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 
+import org.junit.jupiter.api.Test;
+
+import org.apache.geode.benchmark.LongRange;
 import org.apache.geode.benchmark.tasks.redis.FlushDbTask;
 import org.apache.geode.benchmark.tasks.redis.JedisClientManager;
 import org.apache.geode.benchmark.tasks.redis.LettuceClientManager;
@@ -35,6 +41,7 @@ import org.apache.geode.benchmark.topology.redis.GedisTopology;
 import org.apache.geode.benchmark.topology.redis.ManualRedisTopology;
 import org.apache.geode.benchmark.topology.redis.RedisTopology;
 import org.apache.geode.perftest.TestConfig;
+import org.apache.geode.perftest.TestRunners;
 
 public class RedisBenchmark extends AbstractPerformanceTest {
 
@@ -76,6 +83,18 @@ public class RedisBenchmark extends AbstractPerformanceTest {
 
   protected transient RedisClientManager redisClientManager;
 
+  protected LongRange keyRange =
+      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1000000));
+
+  public void setKeyRange(final LongRange keyRange) {
+    this.keyRange = keyRange;
+  }
+
+  @Test
+  public void run() throws Exception {
+    TestRunners.defaultRunner().runTest(this);
+  }
+
   @Override
   public TestConfig configure() {
     TestConfig config = GeodeBenchmark.createConfig();
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisGetBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisGetBenchmark.java
index 7fec686..8e1fda6 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisGetBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisGetBenchmark.java
@@ -23,32 +23,15 @@ import static org.apache.geode.benchmark.Config.workload;
 import static org.apache.geode.benchmark.tests.GeodeBenchmark.isValidationEnabled;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 
-import org.junit.jupiter.api.Test;
-
-import org.apache.geode.benchmark.LongRange;
 import org.apache.geode.benchmark.tasks.redis.GetRedisTask;
 import org.apache.geode.benchmark.tasks.redis.PrePopulateRedis;
 import org.apache.geode.perftest.TestConfig;
-import org.apache.geode.perftest.TestRunners;
 
 /**
  * Benchmark of gets on a partitioned region.
  */
 public class RedisGetBenchmark extends RedisBenchmark {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
-
-  @Test
-  public void run() throws Exception {
-    TestRunners.defaultRunner().runTest(this);
-  }
-
-  public RedisGetBenchmark() {}
-
-  public void setKeyRange(final LongRange keyRange) {
-    this.keyRange = keyRange;
-  }
-
   @Override
   public TestConfig configure() {
     final TestConfig config = super.configure();
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisHgetBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisHgetBenchmark.java
index 8edfc58..09b721b 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisHgetBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisHgetBenchmark.java
@@ -23,32 +23,15 @@ import static org.apache.geode.benchmark.Config.workload;
 import static org.apache.geode.benchmark.tests.GeodeBenchmark.isValidationEnabled;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 
-import org.junit.jupiter.api.Test;
-
-import org.apache.geode.benchmark.LongRange;
 import org.apache.geode.benchmark.tasks.redis.HgetRedisTask;
 import org.apache.geode.benchmark.tasks.redis.PrePopulateRedisHash;
 import org.apache.geode.perftest.TestConfig;
-import org.apache.geode.perftest.TestRunners;
 
 /**
  * Benchmark of gets on a partitioned region.
  */
 public class RedisHgetBenchmark extends RedisBenchmark {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
-
-  @Test
-  public void run() throws Exception {
-    TestRunners.defaultRunner().runTest(this);
-  }
-
-  public RedisHgetBenchmark() {}
-
-  public void setKeyRange(final LongRange keyRange) {
-    this.keyRange = keyRange;
-  }
-
   @Override
   public TestConfig configure() {
     final TestConfig config = super.configure();
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisHsetAndHgetBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisHsetAndHgetBenchmark.java
index 2679c28..10d3c46 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisHsetAndHgetBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisHsetAndHgetBenchmark.java
@@ -22,34 +22,17 @@ import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 
-import org.junit.jupiter.api.Test;
-
-import org.apache.geode.benchmark.LongRange;
 import org.apache.geode.benchmark.tasks.CompositeTask;
 import org.apache.geode.benchmark.tasks.redis.HgetRedisTask;
 import org.apache.geode.benchmark.tasks.redis.HsetRedisTask;
 import org.apache.geode.benchmark.tasks.redis.PrePopulateRedisHash;
 import org.apache.geode.perftest.TestConfig;
-import org.apache.geode.perftest.TestRunners;
 
 /**
  * Benchmark of gets on a partitioned region.
  */
 public class RedisHsetAndHgetBenchmark extends RedisBenchmark {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
-
-  @Test
-  public void run() throws Exception {
-    TestRunners.defaultRunner().runTest(this);
-  }
-
-  public RedisHsetAndHgetBenchmark() {}
-
-  public void setKeyRange(final LongRange keyRange) {
-    this.keyRange = keyRange;
-  }
-
   @Override
   public TestConfig configure() {
     final TestConfig config = super.configure();
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisHsetBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisHsetBenchmark.java
index 595c727..b41b38b 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisHsetBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisHsetBenchmark.java
@@ -17,41 +17,16 @@
 
 package org.apache.geode.benchmark.tests.redis;
 
-
-import static java.lang.Long.getLong;
 import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
-import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MAX_KEY;
-import static org.apache.geode.benchmark.tests.GeodeBenchmark.WITH_MIN_KEY;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 
-import org.junit.jupiter.api.Test;
-
-import org.apache.geode.benchmark.LongRange;
 import org.apache.geode.benchmark.tasks.redis.HsetRedisTask;
 import org.apache.geode.benchmark.tasks.redis.PrePopulateRedisHash;
 import org.apache.geode.perftest.TestConfig;
-import org.apache.geode.perftest.TestRunners;
 
-/**
- * Benchmark of gets on a partitioned region.
- */
 public class RedisHsetBenchmark extends RedisBenchmark {
 
-  private LongRange keyRange =
-      new LongRange(getLong(WITH_MIN_KEY, 0), getLong(WITH_MAX_KEY, 1000000));
-
-  @Test
-  public void run() throws Exception {
-    TestRunners.defaultRunner().runTest(this);
-  }
-
-  public RedisHsetBenchmark() {}
-
-  public void setKeyRange(final LongRange keyRange) {
-    this.keyRange = keyRange;
-  }
-
   @Override
   public TestConfig configure() {
     final TestConfig config = super.configure();
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisPutBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisSetBenchmark.java
similarity index 74%
rename from geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisPutBenchmark.java
rename to geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisSetBenchmark.java
index 4c39a3d..25c00d3 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisPutBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisSetBenchmark.java
@@ -22,31 +22,11 @@ import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 
-import org.junit.jupiter.api.Test;
-
-import org.apache.geode.benchmark.LongRange;
 import org.apache.geode.benchmark.tasks.redis.PrePopulateRedis;
 import org.apache.geode.benchmark.tasks.redis.SetRedisTask;
 import org.apache.geode.perftest.TestConfig;
-import org.apache.geode.perftest.TestRunners;
-
-/**
- * Benchmark of gets on a partitioned region.
- */
-public class RedisPutBenchmark extends RedisBenchmark {
-
-  private LongRange keyRange = new LongRange(0, 1000000);
 
-  @Test
-  public void run() throws Exception {
-    TestRunners.defaultRunner().runTest(this);
-  }
-
-  public RedisPutBenchmark() {}
-
-  public void setKeyRange(final LongRange keyRange) {
-    this.keyRange = keyRange;
-  }
+public class RedisSetBenchmark extends RedisBenchmark {
 
   @Override
   public TestConfig configure() {
diff --git a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisWeightedHsetAndHgetBenchmark.java b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisWeightedHsetAndHgetBenchmark.java
index d17821d..b588fb0 100644
--- a/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisWeightedHsetAndHgetBenchmark.java
+++ b/geode-benchmarks/src/main/java/org/apache/geode/benchmark/tests/redis/RedisWeightedHsetAndHgetBenchmark.java
@@ -22,35 +22,18 @@ import static org.apache.geode.benchmark.Config.before;
 import static org.apache.geode.benchmark.Config.workload;
 import static org.apache.geode.benchmark.topology.Roles.CLIENT;
 
-import org.junit.jupiter.api.Test;
-
-import org.apache.geode.benchmark.LongRange;
 import org.apache.geode.benchmark.tasks.WeightedTasks;
 import org.apache.geode.benchmark.tasks.WeightedTasks.WeightedTask;
 import org.apache.geode.benchmark.tasks.redis.HgetRedisTask;
 import org.apache.geode.benchmark.tasks.redis.HsetRedisTask;
 import org.apache.geode.benchmark.tasks.redis.PrePopulateRedisHash;
 import org.apache.geode.perftest.TestConfig;
-import org.apache.geode.perftest.TestRunners;
 
 /**
  * Benchmark of gets on a partitioned region.
  */
 public class RedisWeightedHsetAndHgetBenchmark extends RedisBenchmark {
 
-  private LongRange keyRange = new LongRange(0, 1000000);
-
-  @Test
-  public void run() throws Exception {
-    TestRunners.defaultRunner().runTest(this);
-  }
-
-  public RedisWeightedHsetAndHgetBenchmark() {}
-
-  public void setKeyRange(final LongRange keyRange) {
-    this.keyRange = keyRange;
-  }
-
   @Override
   public TestConfig configure() {
     final TestConfig config = super.configure();
diff --git a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/junit/CartesianSubclassSource.java b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/junit/CartesianSubclassSource.java
new file mode 100644
index 0000000..2e7212f
--- /dev/null
+++ b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/junit/CartesianSubclassSource.java
@@ -0,0 +1,54 @@
+/*
+ * 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.geode.benchmark.junit;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Repeatable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.junit.jupiter.params.provider.ArgumentsSource;
+
+/**
+ * {@code }@CartesianSubclassSource} is a argument source subclass of the specified {@linkplain
+ * #value Class} for tests annotated with {@code @CartesianProductTest}.
+ */
+@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Repeatable(CartesianSubclassSource.CartesianSubclassSources.class)
+@ArgumentsSource(SubclassSourceProvider.class)
+public @interface CartesianSubclassSource {
+
+  /**
+   * The Class to find subclasses for.
+   */
+  Class<?> value();
+
+  /**
+   * Class Packages to accept. All by default.
+   */
+  String[] acceptPackages() default {};
+
+  @Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD})
+  @Retention(RetentionPolicy.RUNTIME)
+  @Documented
+  @interface CartesianSubclassSources {
+    CartesianSubclassSource[] value();
+  }
+}
diff --git a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/junit/SubclassSourceProvider.java b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/junit/SubclassSourceProvider.java
new file mode 100644
index 0000000..e82b2e6
--- /dev/null
+++ b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/junit/SubclassSourceProvider.java
@@ -0,0 +1,46 @@
+/*
+ * 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.geode.benchmark.junit;
+
+import java.util.List;
+import java.util.stream.Stream;
+
+import io.github.classgraph.ClassGraph;
+import io.github.classgraph.ScanResult;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.ArgumentsProvider;
+import org.junitpioneer.jupiter.CartesianAnnotationConsumer;
+
+public class SubclassSourceProvider
+    implements CartesianAnnotationConsumer<CartesianSubclassSource>, ArgumentsProvider {
+
+  private List<Class<?>> subclasses;
+
+  @Override
+  public void accept(final CartesianSubclassSource subclassSource) {
+    try (final ScanResult scanResult = new ClassGraph().enableAllInfo()
+        .acceptPackages(subclassSource.acceptPackages())
+        .scan()) {
+      subclasses = scanResult.getSubclasses(subclassSource.value().getName()).loadClasses();
+    }
+  }
+
+  @Override
+  public Stream<? extends Arguments> provideArguments(final ExtensionContext context) {
+    return subclasses.stream().map(Arguments::of);
+  }
+}
diff --git a/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/redis/RedisBenchmarkTest.java b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/redis/RedisBenchmarkTest.java
new file mode 100644
index 0000000..34a514e
--- /dev/null
+++ b/geode-benchmarks/src/test/java/org/apache/geode/benchmark/tests/redis/RedisBenchmarkTest.java
@@ -0,0 +1,56 @@
+/*
+ * 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.geode.benchmark.tests.redis;
+
+import static java.lang.System.setProperty;
+import static org.apache.geode.benchmark.tests.redis.RedisBenchmark.WITH_REDIS_CLIENT_PROPERTY;
+import static org.apache.geode.benchmark.topology.Topology.WITH_SERVER_COUNT_PROPERTY;
+
+import java.io.File;
+
+import org.junit.jupiter.api.io.TempDir;
+import org.junitpioneer.jupiter.CartesianEnumSource;
+import org.junitpioneer.jupiter.CartesianProductTest;
+import org.junitpioneer.jupiter.ClearSystemProperty;
+import org.junitpioneer.jupiter.SetSystemProperty;
+
+import org.apache.geode.benchmark.LongRange;
+import org.apache.geode.benchmark.junit.CartesianSubclassSource;
+import org.apache.geode.benchmark.tests.redis.RedisBenchmark.RedisClientImplementation;
+import org.apache.geode.perftest.TestRunners;
+
+public class RedisBenchmarkTest {
+
+  @TempDir()
+  File folder;
+
+  @CartesianProductTest()
+  @CartesianEnumSource(RedisClientImplementation.class)
+  @CartesianSubclassSource(RedisBenchmark.class)
+  @ClearSystemProperty(key = WITH_REDIS_CLIENT_PROPERTY)
+  @SetSystemProperty(key = WITH_SERVER_COUNT_PROPERTY, value = "1")
+  public void benchmarkRunsSuccessfully(final RedisClientImplementation redisClientImplementation,
+      final Class<? extends RedisBenchmark> redisBenchmark)
+      throws Exception {
+    setProperty(WITH_REDIS_CLIENT_PROPERTY, redisClientImplementation.name());
+
+    final RedisBenchmark test = redisBenchmark.newInstance();
+    test.setKeyRange(new LongRange(0, 100));
+    test.setValidationEnabled(true);
+
+    TestRunners.minimalRunner(folder).runTest(test);
+  }
+}