Port Java modules from RunnableOnService to ValidatesRunner

Python is already using ValidatesRunner, as per dev list consensus.

A deprecated RunnableOnService is left in place as a superclass so anything
remaining that scrapes for it can be ported gradually.


Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/a58a7412
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/a58a7412
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/a58a7412

Branch: refs/heads/master
Commit: a58a74124893c602e311aef0a9afb51f95b89828
Parents: 026aec8
Author: Kenneth Knowles <[email protected]>
Authored: Fri Mar 3 15:21:51 2017 -0800
Committer: Kenneth Knowles <[email protected]>
Committed: Mon Mar 27 09:38:55 2017 -0700

----------------------------------------------------------------------
 examples/java/pom.xml                           |  2 +-
 .../org/apache/beam/examples/WordCountTest.java |  4 +-
 .../beam/examples/complete/TfIdfTest.java       |  4 +-
 .../complete/TopWikipediaSessionsTest.java      |  4 +-
 .../examples/cookbook/DistinctExampleTest.java  |  6 +-
 .../examples/cookbook/JoinExamplesTest.java     |  4 +-
 .../examples/cookbook/TriggerExampleTest.java   |  4 +-
 examples/java8/pom.xml                          |  2 +-
 .../examples/complete/game/GameStatsTest.java   |  4 +-
 .../complete/game/HourlyTeamScoreTest.java      |  4 +-
 .../examples/complete/game/UserScoreTest.java   |  8 +--
 runners/apex/pom.xml                            |  4 +-
 runners/flink/runner/pom.xml                    |  6 +-
 .../runners/dataflow/testing/package-info.java  |  2 +-
 runners/pom.xml                                 |  2 +-
 runners/spark/pom.xml                           |  6 +-
 .../beam/sdk/testing/RunnableOnService.java     | 18 +----
 .../apache/beam/sdk/testing/TestPipeline.java   |  6 +-
 .../beam/sdk/testing/ValidatesRunner.java       | 23 +++++++
 .../java/org/apache/beam/sdk/PipelineTest.java  | 10 +--
 .../java/org/apache/beam/sdk/io/AvroIOTest.java |  8 +--
 .../io/BoundedReadFromUnboundedSourceTest.java  |  8 +--
 .../apache/beam/sdk/io/CountingInputTest.java   | 14 ++--
 .../apache/beam/sdk/io/CountingSourceTest.java  | 14 ++--
 .../org/apache/beam/sdk/io/PubsubIOTest.java    |  6 +-
 .../java/org/apache/beam/sdk/io/ReadTest.java   |  6 +-
 .../java/org/apache/beam/sdk/io/TextIOTest.java | 10 +--
 .../apache/beam/sdk/metrics/MetricsTest.java    |  6 +-
 .../apache/beam/sdk/testing/PAssertTest.java    | 34 +++++-----
 .../beam/sdk/testing/TestPipelineTest.java      | 24 +++----
 .../sdk/transforms/ApproximateUniqueTest.java   |  4 +-
 .../beam/sdk/transforms/CombineFnsTest.java     |  8 +--
 .../apache/beam/sdk/transforms/CombineTest.java | 44 ++++++------
 .../apache/beam/sdk/transforms/CountTest.java   | 10 +--
 .../apache/beam/sdk/transforms/CreateTest.java  | 18 ++---
 .../beam/sdk/transforms/DistinctTest.java       |  8 +--
 .../apache/beam/sdk/transforms/FilterTest.java  | 16 ++---
 .../apache/beam/sdk/transforms/FlattenTest.java | 30 ++++-----
 .../beam/sdk/transforms/GroupByKeyTest.java     | 14 ++--
 .../apache/beam/sdk/transforms/KeysTest.java    |  6 +-
 .../apache/beam/sdk/transforms/KvSwapTest.java  |  6 +-
 .../beam/sdk/transforms/MapElementsTest.java    |  4 +-
 .../beam/sdk/transforms/ParDoLifecycleTest.java | 10 +--
 .../apache/beam/sdk/transforms/ParDoTest.java   | 68 +++++++++----------
 .../beam/sdk/transforms/PartitionTest.java      |  4 +-
 .../apache/beam/sdk/transforms/SampleTest.java  | 14 ++--
 .../beam/sdk/transforms/SplittableDoFnTest.java | 14 ++--
 .../beam/sdk/transforms/ToStringTest.java       | 13 ++--
 .../apache/beam/sdk/transforms/ValuesTest.java  |  6 +-
 .../apache/beam/sdk/transforms/ViewTest.java    | 70 ++++++++++----------
 .../beam/sdk/transforms/WithTimestampsTest.java |  8 +--
 .../sdk/transforms/join/CoGroupByKeyTest.java   | 10 +--
 .../sdk/transforms/windowing/WindowTest.java    | 10 +--
 .../sdk/transforms/windowing/WindowingTest.java | 10 +--
 .../beam/sdk/util/ReifyTimestampsTest.java      |  6 +-
 .../org/apache/beam/sdk/util/ReshuffleTest.java | 16 ++---
 .../beam/sdk/values/PCollectionTupleTest.java   |  4 +-
 .../org/apache/beam/sdk/values/PDoneTest.java   |  4 +-
 .../io/elasticsearch/ElasticsearchIOTest.java   |  8 +--
 .../sdk/io/gcp/bigquery/BigQueryIOTest.java     | 18 ++---
 .../sdk/io/gcp/datastore/DatastoreV1Test.java   |  8 +--
 .../org/apache/beam/sdk/io/mqtt/MqttIOTest.java |  9 ++-
 .../beam/sdk/transforms/FilterJava8Test.java    |  8 +--
 .../beam/sdk/transforms/WithKeysJava8Test.java  |  4 +-
 .../sdk/transforms/WithTimestampsJava8Test.java |  4 +-
 65 files changed, 377 insertions(+), 370 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/examples/java/pom.xml
----------------------------------------------------------------------
diff --git a/examples/java/pom.xml b/examples/java/pom.xml
index 1618f60..2b18130 100644
--- a/examples/java/pom.xml
+++ b/examples/java/pom.xml
@@ -539,7 +539,7 @@
 
     <!--
       For testing the example itself, use the direct runner. This is separate 
from
-      the use of RunnableOnService tests for testing a particular runner.
+      the use of ValidatesRunner tests for testing a particular runner.
     -->
     <dependency>
       <groupId>org.apache.beam</groupId>

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/examples/java/src/test/java/org/apache/beam/examples/WordCountTest.java
----------------------------------------------------------------------
diff --git 
a/examples/java/src/test/java/org/apache/beam/examples/WordCountTest.java 
b/examples/java/src/test/java/org/apache/beam/examples/WordCountTest.java
index 0f8e4dc..54ce1e3 100644
--- a/examples/java/src/test/java/org/apache/beam/examples/WordCountTest.java
+++ b/examples/java/src/test/java/org/apache/beam/examples/WordCountTest.java
@@ -24,8 +24,8 @@ import org.apache.beam.examples.WordCount.ExtractWordsFn;
 import org.apache.beam.examples.WordCount.FormatAsTextFn;
 import org.apache.beam.sdk.coders.StringUtf8Coder;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Create;
 import org.apache.beam.sdk.transforms.DoFn;
 import org.apache.beam.sdk.transforms.DoFnTester;
@@ -73,7 +73,7 @@ public class WordCountTest {
 
   /** Example test that tests a PTransform by using an in-memory input and 
inspecting the output. */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testCountWords() throws Exception {
     PCollection<String> input = 
p.apply(Create.of(WORDS).withCoder(StringUtf8Coder.of()));
 

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/examples/java/src/test/java/org/apache/beam/examples/complete/TfIdfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/java/src/test/java/org/apache/beam/examples/complete/TfIdfTest.java 
b/examples/java/src/test/java/org/apache/beam/examples/complete/TfIdfTest.java
index 0382532..d263643 100644
--- 
a/examples/java/src/test/java/org/apache/beam/examples/complete/TfIdfTest.java
+++ 
b/examples/java/src/test/java/org/apache/beam/examples/complete/TfIdfTest.java
@@ -21,8 +21,8 @@ import java.net.URI;
 import java.util.Arrays;
 import org.apache.beam.sdk.coders.StringDelegateCoder;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Create;
 import org.apache.beam.sdk.transforms.Distinct;
 import org.apache.beam.sdk.transforms.Keys;
@@ -45,7 +45,7 @@ public class TfIdfTest {
 
   /** Test that the example runs. */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testTfIdf() throws Exception {
 
     pipeline.getCoderRegistry().registerCoder(URI.class, 
StringDelegateCoder.of(URI.class));

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/examples/java/src/test/java/org/apache/beam/examples/complete/TopWikipediaSessionsTest.java
----------------------------------------------------------------------
diff --git 
a/examples/java/src/test/java/org/apache/beam/examples/complete/TopWikipediaSessionsTest.java
 
b/examples/java/src/test/java/org/apache/beam/examples/complete/TopWikipediaSessionsTest.java
index 2c50cf2..5415281 100644
--- 
a/examples/java/src/test/java/org/apache/beam/examples/complete/TopWikipediaSessionsTest.java
+++ 
b/examples/java/src/test/java/org/apache/beam/examples/complete/TopWikipediaSessionsTest.java
@@ -20,8 +20,8 @@ package org.apache.beam.examples.complete;
 import com.google.api.services.bigquery.model.TableRow;
 import java.util.Arrays;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Create;
 import org.apache.beam.sdk.values.PCollection;
 import org.junit.Rule;
@@ -38,7 +38,7 @@ public class TopWikipediaSessionsTest {
   public TestPipeline p = TestPipeline.create();
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testComputeTopUsers() {
 
     PCollection<String> output =

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/examples/java/src/test/java/org/apache/beam/examples/cookbook/DistinctExampleTest.java
----------------------------------------------------------------------
diff --git 
a/examples/java/src/test/java/org/apache/beam/examples/cookbook/DistinctExampleTest.java
 
b/examples/java/src/test/java/org/apache/beam/examples/cookbook/DistinctExampleTest.java
index 6fadbe5..c9dab80 100644
--- 
a/examples/java/src/test/java/org/apache/beam/examples/cookbook/DistinctExampleTest.java
+++ 
b/examples/java/src/test/java/org/apache/beam/examples/cookbook/DistinctExampleTest.java
@@ -21,8 +21,8 @@ import java.util.Arrays;
 import java.util.List;
 import org.apache.beam.sdk.coders.StringUtf8Coder;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Create;
 import org.apache.beam.sdk.transforms.Distinct;
 import org.apache.beam.sdk.values.PCollection;
@@ -40,7 +40,7 @@ public class DistinctExampleTest {
   public TestPipeline p = TestPipeline.create();
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testDistinct() {
     List<String> strings = Arrays.asList(
         "k1",
@@ -64,7 +64,7 @@ public class DistinctExampleTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testDistinctEmpty() {
     List<String> strings = Arrays.asList();
 

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/examples/java/src/test/java/org/apache/beam/examples/cookbook/JoinExamplesTest.java
----------------------------------------------------------------------
diff --git 
a/examples/java/src/test/java/org/apache/beam/examples/cookbook/JoinExamplesTest.java
 
b/examples/java/src/test/java/org/apache/beam/examples/cookbook/JoinExamplesTest.java
index 43e6d01..b2fcd73 100644
--- 
a/examples/java/src/test/java/org/apache/beam/examples/cookbook/JoinExamplesTest.java
+++ 
b/examples/java/src/test/java/org/apache/beam/examples/cookbook/JoinExamplesTest.java
@@ -23,8 +23,8 @@ import java.util.List;
 import org.apache.beam.examples.cookbook.JoinExamples.ExtractCountryInfoFn;
 import org.apache.beam.examples.cookbook.JoinExamples.ExtractEventDataFn;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Create;
 import org.apache.beam.sdk.transforms.DoFnTester;
 import org.apache.beam.sdk.values.KV;
@@ -103,7 +103,7 @@ public class JoinExamplesTest {
 
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testJoin() throws java.lang.Exception {
     PCollection<TableRow> input1 = p.apply("CreateEvent", 
Create.of(EVENT_ARRAY));
     PCollection<TableRow> input2 = p.apply("CreateCC", Create.of(CC_ARRAY));

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/examples/java/src/test/java/org/apache/beam/examples/cookbook/TriggerExampleTest.java
----------------------------------------------------------------------
diff --git 
a/examples/java/src/test/java/org/apache/beam/examples/cookbook/TriggerExampleTest.java
 
b/examples/java/src/test/java/org/apache/beam/examples/cookbook/TriggerExampleTest.java
index ec0b9d4..706cfb9 100644
--- 
a/examples/java/src/test/java/org/apache/beam/examples/cookbook/TriggerExampleTest.java
+++ 
b/examples/java/src/test/java/org/apache/beam/examples/cookbook/TriggerExampleTest.java
@@ -27,8 +27,8 @@ import java.util.Map;
 import org.apache.beam.examples.cookbook.TriggerExample.ExtractFlowInfo;
 import org.apache.beam.examples.cookbook.TriggerExample.TotalFlow;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Create;
 import org.apache.beam.sdk.transforms.DoFn;
 import org.apache.beam.sdk.transforms.DoFnTester;
@@ -111,7 +111,7 @@ public class TriggerExampleTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testTotalFlow () {
     PCollection<KV<String, Integer>> flow = pipeline
         .apply(Create.timestamped(TIME_STAMPED_INPUT))

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/examples/java8/pom.xml
----------------------------------------------------------------------
diff --git a/examples/java8/pom.xml b/examples/java8/pom.xml
index f5a0db7..5ea6ca5 100644
--- a/examples/java8/pom.xml
+++ b/examples/java8/pom.xml
@@ -257,7 +257,7 @@
 
     <!--
       For testing the example itself, use the direct runner. This is separate 
from
-      the use of RunnableOnService tests for testing a particular runner.
+      the use of ValidatesRunner tests for testing a particular runner.
     -->
     <dependency>
       <groupId>org.apache.beam</groupId>

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/examples/java8/src/test/java/org/apache/beam/examples/complete/game/GameStatsTest.java
----------------------------------------------------------------------
diff --git 
a/examples/java8/src/test/java/org/apache/beam/examples/complete/game/GameStatsTest.java
 
b/examples/java8/src/test/java/org/apache/beam/examples/complete/game/GameStatsTest.java
index 36cf9bc..44481c5 100644
--- 
a/examples/java8/src/test/java/org/apache/beam/examples/complete/game/GameStatsTest.java
+++ 
b/examples/java8/src/test/java/org/apache/beam/examples/complete/game/GameStatsTest.java
@@ -23,8 +23,8 @@ import java.util.List;
 import org.apache.beam.examples.complete.game.GameStats.CalculateSpammyUsers;
 import org.apache.beam.sdk.options.PipelineOptionsFactory;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Create;
 import org.apache.beam.sdk.values.KV;
 import org.apache.beam.sdk.values.PCollection;
@@ -63,7 +63,7 @@ public class GameStatsTest implements Serializable {
 
   /** Test the calculation of 'spammy users'. */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testCalculateSpammyUsers() throws Exception {
     PCollection<KV<String, Integer>> input = p.apply(Create.of(USER_SCORES));
     PCollection<KV<String, Integer>> output = input.apply(new 
CalculateSpammyUsers());

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/examples/java8/src/test/java/org/apache/beam/examples/complete/game/HourlyTeamScoreTest.java
----------------------------------------------------------------------
diff --git 
a/examples/java8/src/test/java/org/apache/beam/examples/complete/game/HourlyTeamScoreTest.java
 
b/examples/java8/src/test/java/org/apache/beam/examples/complete/game/HourlyTeamScoreTest.java
index 5fc94a5..40bbfdb 100644
--- 
a/examples/java8/src/test/java/org/apache/beam/examples/complete/game/HourlyTeamScoreTest.java
+++ 
b/examples/java8/src/test/java/org/apache/beam/examples/complete/game/HourlyTeamScoreTest.java
@@ -25,8 +25,8 @@ import 
org.apache.beam.examples.complete.game.UserScore.ParseEventFn;
 import org.apache.beam.sdk.coders.StringUtf8Coder;
 import org.apache.beam.sdk.options.PipelineOptionsFactory;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Create;
 import org.apache.beam.sdk.transforms.Filter;
 import org.apache.beam.sdk.transforms.MapElements;
@@ -86,7 +86,7 @@ public class HourlyTeamScoreTest implements Serializable {
 
   /** Test the filtering. */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testUserScoresFilter() throws Exception {
 
     final Instant startMinTimestamp = new Instant(1447965680000L);

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/examples/java8/src/test/java/org/apache/beam/examples/complete/game/UserScoreTest.java
----------------------------------------------------------------------
diff --git 
a/examples/java8/src/test/java/org/apache/beam/examples/complete/game/UserScoreTest.java
 
b/examples/java8/src/test/java/org/apache/beam/examples/complete/game/UserScoreTest.java
index 3b77b26..f0c28ab 100644
--- 
a/examples/java8/src/test/java/org/apache/beam/examples/complete/game/UserScoreTest.java
+++ 
b/examples/java8/src/test/java/org/apache/beam/examples/complete/game/UserScoreTest.java
@@ -25,8 +25,8 @@ import 
org.apache.beam.examples.complete.game.UserScore.GameActionInfo;
 import org.apache.beam.examples.complete.game.UserScore.ParseEventFn;
 import org.apache.beam.sdk.coders.StringUtf8Coder;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Create;
 import org.apache.beam.sdk.transforms.DoFnTester;
 import org.apache.beam.sdk.transforms.MapElements;
@@ -99,7 +99,7 @@ public class UserScoreTest implements Serializable {
 
   /** Tests ExtractAndSumScore("user"). */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testUserScoreSums() throws Exception {
 
     PCollection<String> input = 
p.apply(Create.of(GAME_EVENTS).withCoder(StringUtf8Coder.of()));
@@ -117,7 +117,7 @@ public class UserScoreTest implements Serializable {
 
   /** Tests ExtractAndSumScore("team"). */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testTeamScoreSums() throws Exception {
 
     PCollection<String> input = 
p.apply(Create.of(GAME_EVENTS).withCoder(StringUtf8Coder.of()));
@@ -135,7 +135,7 @@ public class UserScoreTest implements Serializable {
 
   /** Test that bad input data is dropped appropriately. */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testUserScoresBadInput() throws Exception {
 
     PCollection<String> input = 
p.apply(Create.of(GAME_EVENTS2).withCoder(StringUtf8Coder.of()));

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/runners/apex/pom.xml
----------------------------------------------------------------------
diff --git a/runners/apex/pom.xml b/runners/apex/pom.xml
index 01dea22..3f01698 100644
--- a/runners/apex/pom.xml
+++ b/runners/apex/pom.xml
@@ -130,7 +130,7 @@
       <scope>test</scope>
     </dependency>
 
-    <!-- Depend on test jar to scan for RunnableOnService tests -->
+    <!-- Depend on test jar to scan for ValidatesRunner tests -->
     <dependency>
       <groupId>org.apache.beam</groupId>
       <artifactId>beam-sdks-java-core</artifactId>
@@ -206,7 +206,7 @@
               <goal>test</goal>
             </goals>
             <configuration>
-              <groups>org.apache.beam.sdk.testing.RunnableOnService</groups>
+              <groups>org.apache.beam.sdk.testing.ValidatesRunner</groups>
               <excludedGroups>
                 org.apache.beam.sdk.testing.FlattenWithHeterogeneousCoders,
                 org.apache.beam.sdk.testing.UsesStatefulParDo,

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/runners/flink/runner/pom.xml
----------------------------------------------------------------------
diff --git a/runners/flink/runner/pom.xml b/runners/flink/runner/pom.xml
index f2c2d01..e013adb 100644
--- a/runners/flink/runner/pom.xml
+++ b/runners/flink/runner/pom.xml
@@ -52,7 +52,7 @@
                   <goal>test</goal>
                 </goals>
                 <configuration>
-                  
<groups>org.apache.beam.sdk.testing.RunnableOnService</groups>
+                  <groups>org.apache.beam.sdk.testing.ValidatesRunner</groups>
                   <excludedGroups>
                     org.apache.beam.sdk.testing.FlattenWithHeterogeneousCoders,
                     org.apache.beam.sdk.testing.UsesSplittableParDo,
@@ -83,7 +83,7 @@
                   <goal>test</goal>
                 </goals>
                 <configuration>
-                  
<groups>org.apache.beam.sdk.testing.RunnableOnService</groups>
+                  <groups>org.apache.beam.sdk.testing.ValidatesRunner</groups>
                   <excludedGroups>
                     org.apache.beam.sdk.testing.FlattenWithHeterogeneousCoders,
                     org.apache.beam.sdk.testing.UsesSetState,
@@ -211,7 +211,7 @@
       <scope>test</scope>
     </dependency>
 
-    <!-- Depend on test jar to scan for RunnableOnService tests -->
+    <!-- Depend on test jar to scan for ValidatesRunner tests -->
     <dependency>
       <groupId>org.apache.beam</groupId>
       <artifactId>beam-sdks-java-core</artifactId>

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/runners/google-cloud-dataflow-java/src/main/java/org/apache/beam/runners/dataflow/testing/package-info.java
----------------------------------------------------------------------
diff --git 
a/runners/google-cloud-dataflow-java/src/main/java/org/apache/beam/runners/dataflow/testing/package-info.java
 
b/runners/google-cloud-dataflow-java/src/main/java/org/apache/beam/runners/dataflow/testing/package-info.java
index 98c963a..9683df0 100644
--- 
a/runners/google-cloud-dataflow-java/src/main/java/org/apache/beam/runners/dataflow/testing/package-info.java
+++ 
b/runners/google-cloud-dataflow-java/src/main/java/org/apache/beam/runners/dataflow/testing/package-info.java
@@ -18,7 +18,7 @@
 
 /**
  * Provides utilities for integration testing and {@link
- * org.apache.beam.sdk.testing.RunnableOnService} tests of the Google Cloud 
Dataflow
+ * org.apache.beam.sdk.testing.ValidatesRunner} tests of the Google Cloud 
Dataflow
  * runner.
  */
 package org.apache.beam.runners.dataflow.testing;

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/runners/pom.xml
----------------------------------------------------------------------
diff --git a/runners/pom.xml b/runners/pom.xml
index fb090ad..9bf170d 100644
--- a/runners/pom.xml
+++ b/runners/pom.xml
@@ -77,7 +77,7 @@
                     <goal>test</goal>
                   </goals>
                   <configuration>
-                    
<groups>org.apache.beam.sdk.testing.RunnableOnService</groups>
+                    
<groups>org.apache.beam.sdk.testing.ValidatesRunner</groups>
                     <parallel>all</parallel>
                     <threadCount>4</threadCount>
                     <dependenciesToScan>

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/runners/spark/pom.xml
----------------------------------------------------------------------
diff --git a/runners/spark/pom.xml b/runners/spark/pom.xml
index 6958b28..a470fb5 100644
--- a/runners/spark/pom.xml
+++ b/runners/spark/pom.xml
@@ -55,7 +55,7 @@
     </profile>
 
     <profile>
-      <!-- This profile adds execution of RunnableOnService integration tests
+      <!-- This profile adds execution of ValidatesRunner integration tests
            against a local Spark endpoint. -->
       <id>local-runnable-on-service-tests</id>
       <activation><activeByDefault>false</activeByDefault></activation>
@@ -73,7 +73,7 @@
                 </goals>
                 <configuration>
                   <groups>
-                    org.apache.beam.sdk.testing.RunnableOnService,
+                    org.apache.beam.sdk.testing.ValidatesRunner,
                     org.apache.beam.runners.spark.UsesCheckpointRecovery
                   </groups>
                   <excludedGroups>
@@ -303,7 +303,7 @@
       <scope>test</scope>
     </dependency>
 
-    <!-- Depend on test jar to scan for RunnableOnService tests -->
+    <!-- Depend on test jar to scan for ValidatesRunner tests -->
     <dependency>
       <groupId>org.apache.beam</groupId>
       <artifactId>beam-sdks-java-core</artifactId>

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/RunnableOnService.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/RunnableOnService.java
 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/RunnableOnService.java
index 2794d1a..dd8fd13 100644
--- 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/RunnableOnService.java
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/RunnableOnService.java
@@ -18,21 +18,7 @@
 package org.apache.beam.sdk.testing;
 
 /**
- * Category tag for validation tests which utilize {@link TestPipeline} for 
execution and
- * {@link PAssert} for validation. Example usage:
- * <pre><code>
- *     {@literal @}Test
- *     {@literal @}Category(RunnableOnService.class)
- *     public class ParDoTest {
- *       {@literal @}Rule
- *       public final transient TestPipeline p = TestPipeline.create();
- *
- *       public void testParDo() {
- *         p.apply(...);
- *         PAssert.that(p);
- *         p.run();
- *       }
- *     }
- * </code></pre>
+ * @deprecated use {@link ValidatesRunner}
  */
+@Deprecated
 public interface RunnableOnService extends NeedsRunner {}

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/TestPipeline.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/TestPipeline.java 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/TestPipeline.java
index 6c5244d..485dd39 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/TestPipeline.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/TestPipeline.java
@@ -59,7 +59,7 @@ import org.junit.runners.model.Statement;
  * locally or against a remote pipeline runner.
  *
  * <p>It is recommended to tag hand-selected tests for this purpose using the 
{@link
- * RunnableOnService} {@link Category} annotation, as each test run against a 
pipeline runner will
+ * ValidatesRunner} {@link Category} annotation, as each test run against a 
pipeline runner will
  * utilize resources of that pipeline runner.
  *
  * <p>In order to run tests on a pipeline runner, the following conditions 
must be met:
@@ -274,7 +274,7 @@ public class TestPipeline extends Pipeline implements 
TestRule {
               "The test was annotated with a [@%s] / [@%s] while the runner "
                   + "was set to [%s]. Please re-check your configuration.",
               NeedsRunner.class.getSimpleName(),
-              RunnableOnService.class.getSimpleName(),
+              ValidatesRunner.class.getSimpleName(),
               CrashingRunner.class.getSimpleName());
 
           enableAbandonedNodeEnforcement(annotatedWithNeedsRunner || 
!crashingRunner);
@@ -324,7 +324,7 @@ public class TestPipeline extends Pipeline implements 
TestRule {
    * <li>Addition of PTransforms after the pipeline has already run.
    * </ul>
    * Abandoned node detection is automatically enabled when a real pipeline 
runner (i.e. not a
-   * {@link CrashingRunner}) and/or a {@link NeedsRunner} or a {@link 
RunnableOnService} annotation
+   * {@link CrashingRunner}) and/or a {@link NeedsRunner} or a {@link 
ValidatesRunner} annotation
    * are detected.
    */
   public TestPipeline enableAbandonedNodeEnforcement(final boolean enable) {

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/ValidatesRunner.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/ValidatesRunner.java 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/ValidatesRunner.java
new file mode 100644
index 0000000..d33b3a6
--- /dev/null
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/testing/ValidatesRunner.java
@@ -0,0 +1,23 @@
+/*
+ * 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.beam.sdk.testing;
+
+/**
+ * Category tag for tests which validate that a Beam runner is correctly 
implemented.
+ */
+public interface ValidatesRunner extends RunnableOnService {}

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/PipelineTest.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/PipelineTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/PipelineTest.java
index 7e5cc35..efe8db4 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/PipelineTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/PipelineTest.java
@@ -48,8 +48,8 @@ import org.apache.beam.sdk.testing.CrashingRunner;
 import org.apache.beam.sdk.testing.ExpectedLogs;
 import org.apache.beam.sdk.testing.NeedsRunner;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.AppliedPTransform;
 import org.apache.beam.sdk.transforms.Create;
 import org.apache.beam.sdk.transforms.Flatten;
@@ -143,7 +143,7 @@ public class PipelineTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testMultipleApply() {
     PTransform<PCollection<? extends String>, PCollection<String>> myTransform 
=
         addSuffix("+");
@@ -217,7 +217,7 @@ public class PipelineTest {
    * Tests that Pipeline supports a pass-through identity function.
    */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testIdentityTransform() throws Exception {
 
     PCollection<Integer> output = pipeline
@@ -240,7 +240,7 @@ public class PipelineTest {
    * Tests that Pipeline supports pulling an element out of a tuple as a 
transform.
    */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testTupleProjectionTransform() throws Exception {
     PCollection<Integer> input = pipeline
         .apply(Create.<Integer>of(1, 2, 3, 4));
@@ -273,7 +273,7 @@ public class PipelineTest {
    * Tests that Pipeline supports putting an element into a tuple as a 
transform.
    */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testTupleInjectionTransform() throws Exception {
     PCollection<Integer> input = pipeline
         .apply(Create.<Integer>of(1, 2, 3, 4));

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/io/AvroIOTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/AvroIOTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/AvroIOTest.java
index c4b5526..19f5ffa 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/AvroIOTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/AvroIOTest.java
@@ -51,9 +51,9 @@ import org.apache.beam.sdk.io.AvroIO.Write.Bound;
 import org.apache.beam.sdk.options.PipelineOptions;
 import org.apache.beam.sdk.testing.NeedsRunner;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
 import org.apache.beam.sdk.testing.TestPipelineOptions;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Create;
 import org.apache.beam.sdk.transforms.display.DisplayData;
 import org.apache.beam.sdk.transforms.display.DisplayDataEvaluator;
@@ -411,7 +411,7 @@ public class AvroIOTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testPrimitiveReadDisplayData() {
     DisplayDataEvaluator evaluator = DisplayDataEvaluator.create();
 
@@ -447,8 +447,8 @@ public class AvroIOTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
-  @Ignore("[BEAM-436] DirectRunner RunnableOnService tempLocation 
configuration insufficient")
+  @Category(ValidatesRunner.class)
+  @Ignore("[BEAM-436] DirectRunner ValidatesRunner tempLocation configuration 
insufficient")
   public void testPrimitiveWriteDisplayData() throws IOException {
     PipelineOptions options = DisplayDataEvaluator.getDefaultOptions();
     String tempRoot = options.as(TestPipelineOptions.class).getTempRoot();

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/io/BoundedReadFromUnboundedSourceTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/BoundedReadFromUnboundedSourceTest.java
 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/BoundedReadFromUnboundedSourceTest.java
index d49873e..4f6af12 100644
--- 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/BoundedReadFromUnboundedSourceTest.java
+++ 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/BoundedReadFromUnboundedSourceTest.java
@@ -28,8 +28,8 @@ import java.util.Collections;
 import java.util.List;
 import org.apache.beam.sdk.runners.dataflow.TestCountingSource;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.SerializableFunction;
 import org.apache.beam.sdk.transforms.display.DisplayData;
 import org.apache.beam.sdk.values.KV;
@@ -50,19 +50,19 @@ public class BoundedReadFromUnboundedSourceTest implements 
Serializable{
   public transient TestPipeline p = TestPipeline.create();
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testNoDedup() throws Exception {
     test(false, false);
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testDedup() throws Exception {
     test(true, false);
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testTimeBound() throws Exception {
     test(false, true);
   }

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/io/CountingInputTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/CountingInputTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/CountingInputTest.java
index f23ee76..e7a6cfd 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/CountingInputTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/CountingInputTest.java
@@ -24,8 +24,8 @@ import static org.junit.Assert.assertThat;
 import org.apache.beam.sdk.io.CountingInput.UnboundedCountingInput;
 import org.apache.beam.sdk.testing.NeedsRunner;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Count;
 import org.apache.beam.sdk.transforms.Distinct;
 import org.apache.beam.sdk.transforms.DoFn;
@@ -70,7 +70,7 @@ public class CountingInputTest {
   public TestPipeline p = TestPipeline.create();
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testBoundedInput() {
     long numElements = 1000;
     PCollection<Long> input = p.apply(CountingInput.upTo(numElements));
@@ -80,7 +80,7 @@ public class CountingInputTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testEmptyBoundedInput() {
     PCollection<Long> input = p.apply(CountingInput.upTo(0));
 
@@ -89,7 +89,7 @@ public class CountingInputTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testEmptyBoundedInputSubrange() {
     PCollection<Long> input = p.apply(CountingInput.forSubrange(42, 42));
 
@@ -99,7 +99,7 @@ public class CountingInputTest {
 
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testBoundedInputSubrange() {
     long start = 10;
     long end = 1000;
@@ -125,7 +125,7 @@ public class CountingInputTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testUnboundedInput() {
     long numElements = 1000;
 
@@ -164,7 +164,7 @@ public class CountingInputTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testUnboundedInputTimestamps() {
     long numElements = 1000;
 

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/io/CountingSourceTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/CountingSourceTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/CountingSourceTest.java
index dfd0949..0e3b07e 100644
--- 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/CountingSourceTest.java
+++ 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/CountingSourceTest.java
@@ -32,8 +32,8 @@ import org.apache.beam.sdk.io.UnboundedSource.UnboundedReader;
 import org.apache.beam.sdk.options.PipelineOptionsFactory;
 import org.apache.beam.sdk.testing.NeedsRunner;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Count;
 import org.apache.beam.sdk.transforms.Distinct;
 import org.apache.beam.sdk.transforms.DoFn;
@@ -83,7 +83,7 @@ public class CountingSourceTest {
   public TestPipeline p = TestPipeline.create();
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testBoundedSource() {
     long numElements = 1000;
     PCollection<Long> input = 
p.apply(Read.from(CountingSource.upTo(numElements)));
@@ -93,7 +93,7 @@ public class CountingSourceTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testEmptyBoundedSource() {
     PCollection<Long> input = p.apply(Read.from(CountingSource.upTo(0)));
 
@@ -102,7 +102,7 @@ public class CountingSourceTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testBoundedSourceSplits() throws Exception {
     long numElements = 1000;
     long numSplits = 10;
@@ -155,7 +155,7 @@ public class CountingSourceTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testUnboundedSource() {
     long numElements = 1000;
 
@@ -174,7 +174,7 @@ public class CountingSourceTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testUnboundedSourceTimestamps() {
     long numElements = 1000;
 
@@ -227,7 +227,7 @@ public class CountingSourceTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testUnboundedSourceSplits() throws Exception {
     long numElements = 1000;
     int numSplits = 10;

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/io/PubsubIOTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/PubsubIOTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/PubsubIOTest.java
index 5ec08b4..1538db2 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/PubsubIOTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/PubsubIOTest.java
@@ -27,8 +27,8 @@ import static org.junit.Assert.assertThat;
 import java.util.Set;
 import org.apache.beam.sdk.coders.StringUtf8Coder;
 import org.apache.beam.sdk.options.ValueProvider.StaticValueProvider;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.UsesUnboundedPCollections;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.display.DisplayData;
 import org.apache.beam.sdk.transforms.display.DisplayDataEvaluator;
 import org.joda.time.Duration;
@@ -150,7 +150,7 @@ public class PubsubIOTest {
   }
 
   @Test
-  @Category({RunnableOnService.class, UsesUnboundedPCollections.class})
+  @Category({ValidatesRunner.class, UsesUnboundedPCollections.class})
   public void testPrimitiveReadDisplayData() {
     DisplayDataEvaluator evaluator = DisplayDataEvaluator.create();
     Set<DisplayData> displayData;
@@ -185,7 +185,7 @@ public class PubsubIOTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testPrimitiveWriteDisplayData() {
     DisplayDataEvaluator evaluator = DisplayDataEvaluator.create();
     PubsubIO.Write<?> write = 
PubsubIO.<String>write().topic("projects/project/topics/topic");

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/io/ReadTest.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/ReadTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/ReadTest.java
index 362139b..416a086 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/ReadTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/ReadTest.java
@@ -32,7 +32,7 @@ import org.apache.beam.sdk.coders.StringUtf8Coder;
 import org.apache.beam.sdk.io.UnboundedSource.CheckpointMark;
 import org.apache.beam.sdk.options.PipelineOptions;
 import org.apache.beam.sdk.options.StreamingOptions;
-import org.apache.beam.sdk.testing.RunnableOnService;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.display.DisplayData;
 import org.apache.beam.sdk.transforms.display.DisplayDataEvaluator;
 import org.joda.time.Duration;
@@ -106,13 +106,13 @@ public class ReadTest implements Serializable{
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testBoundedPrimitiveDisplayData() {
     testPrimitiveDisplayData(/* isStreaming: */ false);
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testStreamingPrimitiveDisplayData() {
     testPrimitiveDisplayData(/* isStreaming: */ true);
   }

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/io/TextIOTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/TextIOTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/TextIOTest.java
index 713cb71..2e36273 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/TextIOTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/TextIOTest.java
@@ -88,10 +88,10 @@ import org.apache.beam.sdk.options.PipelineOptionsFactory;
 import org.apache.beam.sdk.options.ValueProvider;
 import org.apache.beam.sdk.testing.NeedsRunner;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.SourceTestUtils;
 import org.apache.beam.sdk.testing.TestPipeline;
 import org.apache.beam.sdk.testing.TestPipelineOptions;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Create;
 import org.apache.beam.sdk.transforms.display.DisplayData;
 import org.apache.beam.sdk.transforms.display.DisplayDataEvaluator;
@@ -118,7 +118,7 @@ import org.mockito.stubbing.Answer;
 /**
  * Tests for TextIO Read and Write transforms.
  */
-// TODO: Change the tests to use RunnableOnService instead of NeedsRunner
+// TODO: Change the tests to use ValidatesRunner instead of NeedsRunner
 @RunWith(JUnit4.class)
 @SuppressWarnings("unchecked")
 public class TextIOTest {
@@ -281,7 +281,7 @@ public class TextIOTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testPrimitiveReadDisplayData() {
     DisplayDataEvaluator evaluator = DisplayDataEvaluator.create();
 
@@ -546,8 +546,8 @@ public class TextIOTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
-  @Ignore("[BEAM-436] DirectRunner RunnableOnService tempLocation 
configuration insufficient")
+  @Category(ValidatesRunner.class)
+  @Ignore("[BEAM-436] DirectRunner ValidatesRunner tempLocation configuration 
insufficient")
   public void testPrimitiveWriteDisplayData() throws IOException {
     PipelineOptions options = DisplayDataEvaluator.getDefaultOptions();
     String tempRoot = options.as(TestPipelineOptions.class).getTempRoot();

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/metrics/MetricsTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/metrics/MetricsTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/metrics/MetricsTest.java
index fc9e18b..f5506d7 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/metrics/MetricsTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/metrics/MetricsTest.java
@@ -29,10 +29,10 @@ import static org.junit.Assert.assertThat;
 
 import java.io.Serializable;
 import org.apache.beam.sdk.PipelineResult;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
 import org.apache.beam.sdk.testing.UsesAttemptedMetrics;
 import org.apache.beam.sdk.testing.UsesCommittedMetrics;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Create;
 import org.apache.beam.sdk.transforms.DoFn;
 import org.apache.beam.sdk.transforms.ParDo;
@@ -117,7 +117,7 @@ public class MetricsTest implements Serializable {
     assertThat(cell.getCumulative(), CoreMatchers.equalTo(42L));
   }
 
-  @Category({RunnableOnService.class, UsesCommittedMetrics.class})
+  @Category({ValidatesRunner.class, UsesCommittedMetrics.class})
   @Test
   public void committedMetricsReportToQuery() {
     PipelineResult result = runPipelineWithMetrics();
@@ -143,7 +143,7 @@ public class MetricsTest implements Serializable {
   }
 
 
-  @Category({RunnableOnService.class, UsesAttemptedMetrics.class})
+  @Category({ValidatesRunner.class, UsesAttemptedMetrics.class})
   @Test
   public void attemptedMetricsReportToQuery() {
     PipelineResult result = runPipelineWithMetrics();

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/testing/PAssertTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/testing/PAssertTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/testing/PAssertTest.java
index dab457a..3528797 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/testing/PAssertTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/testing/PAssertTest.java
@@ -123,7 +123,7 @@ public class PAssertTest implements Serializable {
    * serializable.
    */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testContainsInAnyOrderNotSerializable() throws Exception {
     PCollection<NotSerializableObject> pcollection = pipeline
         .apply(Create.of(
@@ -144,7 +144,7 @@ public class PAssertTest implements Serializable {
    * though.
    */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testSerializablePredicate() throws Exception {
     PCollection<NotSerializableObject> pcollection = pipeline
         .apply(Create.of(
@@ -169,7 +169,7 @@ public class PAssertTest implements Serializable {
    * though.
    */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testWindowedSerializablePredicate() throws Exception {
     PCollection<NotSerializableObject> pcollection = pipeline
         .apply(Create.timestamped(
@@ -260,7 +260,7 @@ public class PAssertTest implements Serializable {
    * Basic test for {@code isEqualTo}.
    */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testIsEqualTo() throws Exception {
     PCollection<Integer> pcollection = pipeline.apply(Create.of(43));
     PAssert.thatSingleton(pcollection).isEqualTo(43);
@@ -271,7 +271,7 @@ public class PAssertTest implements Serializable {
    * Basic test for {@code isEqualTo}.
    */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testWindowedIsEqualTo() throws Exception {
     PCollection<Integer> pcollection =
         pipeline.apply(Create.timestamped(TimestampedValue.of(43, new 
Instant(250L)),
@@ -290,7 +290,7 @@ public class PAssertTest implements Serializable {
    * Basic test for {@code notEqualTo}.
    */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testNotEqualTo() throws Exception {
     PCollection<Integer> pcollection = pipeline.apply(Create.of(43));
     PAssert.thatSingleton(pcollection).notEqualTo(42);
@@ -301,7 +301,7 @@ public class PAssertTest implements Serializable {
    * Test that we throw an error for false assertion on singleton.
    */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testPAssertEqualsSingletonFalse() throws Exception {
     PCollection<Integer> pcollection = pipeline.apply(Create.of(42));
     PAssert.thatSingleton("The value was not equal to 44", 
pcollection).isEqualTo(44);
@@ -319,7 +319,7 @@ public class PAssertTest implements Serializable {
    * Test that we throw an error for false assertion on singleton.
    */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testPAssertEqualsSingletonFalseDefaultReasonString() throws 
Exception {
     PCollection<Integer> pcollection = pipeline.apply(Create.of(42));
     PAssert.thatSingleton(pcollection).isEqualTo(44);
@@ -337,7 +337,7 @@ public class PAssertTest implements Serializable {
    * Tests that {@code containsInAnyOrder} is actually order-independent.
    */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testContainsInAnyOrder() throws Exception {
     PCollection<Integer> pcollection = pipeline.apply(Create.of(1, 2, 3, 4));
     PAssert.that(pcollection).containsInAnyOrder(2, 1, 4, 3);
@@ -348,7 +348,7 @@ public class PAssertTest implements Serializable {
    * Tests that {@code containsInAnyOrder} is actually order-independent.
    */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testGlobalWindowContainsInAnyOrder() throws Exception {
     PCollection<Integer> pcollection = pipeline.apply(Create.of(1, 2, 3, 4));
     
PAssert.that(pcollection).inWindow(GlobalWindow.INSTANCE).containsInAnyOrder(2, 
1, 4, 3);
@@ -359,7 +359,7 @@ public class PAssertTest implements Serializable {
    * Tests that windowed {@code containsInAnyOrder} is actually 
order-independent.
    */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testWindowedContainsInAnyOrder() throws Exception {
     PCollection<Integer> pcollection =
         pipeline.apply(Create.timestamped(TimestampedValue.of(1, new 
Instant(100L)),
@@ -388,7 +388,7 @@ public class PAssertTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testEmpty() {
     PCollection<Long> vals =
         pipeline.apply(Create.empty(VarLongCoder.of()));
@@ -402,7 +402,7 @@ public class PAssertTest implements Serializable {
    * Tests that {@code containsInAnyOrder} fails when and how it should.
    */
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testContainsInAnyOrderFalse() throws Exception {
     PCollection<Integer> pcollection = pipeline
         .apply(Create.of(1, 2, 3, 4));
@@ -423,7 +423,7 @@ public class PAssertTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testEmptyFalse() throws Exception {
     PCollection<Long> vals = pipeline.apply(CountingInput.upTo(5L));
     PAssert.that("Vals should have been empty", vals).empty();
@@ -437,7 +437,7 @@ public class PAssertTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testEmptyFalseDefaultReasonString() throws Exception {
     PCollection<Long> vals = pipeline.apply(CountingInput.upTo(5L));
     PAssert.that(vals).empty();
@@ -452,7 +452,7 @@ public class PAssertTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testAssertionSiteIsCapturedWithMessage() throws Exception {
     PCollection<Long> vals = pipeline.apply(CountingInput.upTo(5L));
     assertThatCollectionIsEmptyWithMessage(vals);
@@ -471,7 +471,7 @@ public class PAssertTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testAssertionSiteIsCapturedWithoutMessage() throws Exception {
     PCollection<Long> vals = pipeline.apply(CountingInput.upTo(5L));
     assertThatCollectionIsEmptyWithoutMessage(vals);

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/testing/TestPipelineTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/testing/TestPipelineTest.java
 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/testing/TestPipelineTest.java
index 1a7d375..084d303 100644
--- 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/testing/TestPipelineTest.java
+++ 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/testing/TestPipelineTest.java
@@ -271,21 +271,21 @@ public class TestPipelineTest implements Serializable {
       @Rule
       public final transient RuleChain chain = 
RuleChain.outerRule(exception).around(pipeline);
 
-      @Category(RunnableOnService.class)
+      @Category(ValidatesRunner.class)
       @Test
       public void testNormalFlow() throws Exception {
         addTransform(pCollection(pipeline));
         pipeline.run();
       }
 
-      @Category(RunnableOnService.class)
+      @Category(ValidatesRunner.class)
       @Test
       public void testMissingRun() throws Exception {
         exception.expect(TestPipeline.PipelineRunMissingException.class);
         addTransform(pCollection(pipeline));
       }
 
-      @Category(RunnableOnService.class)
+      @Category(ValidatesRunner.class)
       @Test
       public void testMissingRunWithDisabledEnforcement() throws Exception {
         pipeline.enableAbandonedNodeEnforcement(false);
@@ -294,7 +294,7 @@ public class TestPipelineTest implements Serializable {
         // disable abandoned node detection
       }
 
-      @Category(RunnableOnService.class)
+      @Category(ValidatesRunner.class)
       @Test
       public void testMissingRunAutoAdd() throws Exception {
         pipeline.enableAutoRunIfMissing(true);
@@ -303,9 +303,9 @@ public class TestPipelineTest implements Serializable {
         // have the pipeline.run() auto-added
       }
 
-      @Category(RunnableOnService.class)
+      @Category(ValidatesRunner.class)
       @Test
-      public void testDanglingPTransformRunnableOnService() throws Exception {
+      public void testDanglingPTransformValidatesRunner() throws Exception {
         final PCollection<String> pCollection = pCollection(pipeline);
         PAssert.that(pCollection).containsInAnyOrder(WHATEVER);
         pipeline.run().waitUntilFinish();
@@ -329,9 +329,9 @@ public class TestPipelineTest implements Serializable {
         addTransform(pCollection);
       }
 
-      @Category(RunnableOnService.class)
+      @Category(ValidatesRunner.class)
       @Test
-      public void testDanglingPAssertRunnableOnService() throws Exception {
+      public void testDanglingPAssertValidatesRunner() throws Exception {
         final PCollection<String> pCollection = pCollection(pipeline);
         PAssert.that(pCollection).containsInAnyOrder(WHATEVER);
         pipeline.run().waitUntilFinish();
@@ -344,11 +344,11 @@ public class TestPipelineTest implements Serializable {
 
       /**
        * Tests that a {@link TestPipeline} rule behaves as expected when there 
is no pipeline usage
-       * within a test that has a {@link RunnableOnService} annotation.
+       * within a test that has a {@link ValidatesRunner} annotation.
        */
-      @Category(RunnableOnService.class)
+      @Category(ValidatesRunner.class)
       @Test
-      public void testNoTestPipelineUsedRunnableOnService() {}
+      public void testNoTestPipelineUsedValidatesRunner() {}
 
       /**
        * Tests that a {@link TestPipeline} rule behaves as expected when there 
is no pipeline usage
@@ -381,7 +381,7 @@ public class TestPipelineTest implements Serializable {
         addTransform(pCollection(pipeline));
 
         // pipeline.run() is missing, BUT:
-        // 1. Neither @RunnableOnService nor @NeedsRunner are present, AND
+        // 1. Neither @ValidatesRunner nor @NeedsRunner are present, AND
         // 2. The runner class is CrashingRunner.class
         // (1) + (2) => we assume this pipeline was never meant to be run, so 
no exception is
         // thrown on account of the missing run / dangling nodes.

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/ApproximateUniqueTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/ApproximateUniqueTest.java
 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/ApproximateUniqueTest.java
index 72c33fb..51880e1 100644
--- 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/ApproximateUniqueTest.java
+++ 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/ApproximateUniqueTest.java
@@ -34,8 +34,8 @@ import java.util.List;
 import org.apache.beam.sdk.TestUtils;
 import org.apache.beam.sdk.testing.NeedsRunner;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.display.DisplayData;
 import org.apache.beam.sdk.values.KV;
 import org.apache.beam.sdk.values.PCollection;
@@ -300,7 +300,7 @@ public class ApproximateUniqueTest implements Serializable {
     }
 
     @Test
-    @Category(RunnableOnService.class)
+    @Category(ValidatesRunner.class)
     public void testApproximateUniqueWithSmallInput() {
       final PCollection<Integer> input = p.apply(
           Create.of(Arrays.asList(1, 2, 3, 3)));

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CombineFnsTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CombineFnsTest.java
 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CombineFnsTest.java
index 4d35e53..b107f3d 100644
--- 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CombineFnsTest.java
+++ 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CombineFnsTest.java
@@ -36,8 +36,8 @@ import org.apache.beam.sdk.coders.NullableCoder;
 import org.apache.beam.sdk.coders.StandardCoder;
 import org.apache.beam.sdk.coders.StringUtf8Coder;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Combine.BinaryCombineFn;
 import org.apache.beam.sdk.transforms.CombineFns.CoCombineResult;
 import 
org.apache.beam.sdk.transforms.CombineWithContext.KeyedCombineFnWithContext;
@@ -119,7 +119,7 @@ public class  CombineFnsTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testComposedCombine() {
     p.getCoderRegistry().registerCoder(UserString.class, UserStringCoder.of());
 
@@ -173,7 +173,7 @@ public class  CombineFnsTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testComposedCombineWithContext() {
     p.getCoderRegistry().registerCoder(UserString.class, UserStringCoder.of());
 
@@ -234,7 +234,7 @@ public class  CombineFnsTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testComposedCombineNullValues() {
     p.getCoderRegistry().registerCoder(UserString.class, 
NullableCoder.of(UserStringCoder.of()));
     p.getCoderRegistry().registerCoder(String.class, 
NullableCoder.of(StringUtf8Coder.of()));

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CombineTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CombineTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CombineTest.java
index 6c62d0b..e51ee16 100644
--- 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CombineTest.java
+++ 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CombineTest.java
@@ -56,8 +56,8 @@ import org.apache.beam.sdk.coders.VarIntCoder;
 import org.apache.beam.sdk.coders.VoidCoder;
 import org.apache.beam.sdk.testing.NeedsRunner;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Combine.KeyedCombineFn;
 import org.apache.beam.sdk.transforms.CombineWithContext.Context;
 import 
org.apache.beam.sdk.transforms.CombineWithContext.KeyedCombineFnWithContext;
@@ -165,14 +165,14 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   @SuppressWarnings({"rawtypes", "unchecked"})
   public void testSimpleCombine() {
     runTestSimpleCombine(TABLE, 20, Arrays.asList(KV.of("a", "114a"), 
KV.of("b", "113b")));
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   @SuppressWarnings({"rawtypes", "unchecked"})
   public void testSimpleCombineWithContext() {
     runTestSimpleCombineWithContext(TABLE, 20,
@@ -181,14 +181,14 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testSimpleCombineWithContextEmpty() {
     runTestSimpleCombineWithContext(
         EMPTY_TABLE, 0, Collections.<KV<String, String>>emptyList(), new 
String[] {});
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testSimpleCombineEmpty() {
     runTestSimpleCombine(EMPTY_TABLE, 0, Collections.<KV<String, 
String>>emptyList());
   }
@@ -214,7 +214,7 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testBasicCombine() {
     runTestBasicCombine(TABLE, ImmutableSet.of(1, 13, 4), Arrays.asList(
         KV.of("a", (Set<Integer>) ImmutableSet.of(1, 4)),
@@ -222,7 +222,7 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testBasicCombineEmpty() {
     runTestBasicCombine(
         EMPTY_TABLE, ImmutableSet.<Integer>of(), Collections.<KV<String, 
Set<Integer>>>emptyList());
@@ -248,7 +248,7 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFixedWindowsCombine() {
     PCollection<KV<String, Integer>> input =
         pipeline.apply(Create.timestamped(TABLE, Arrays.asList(0L, 1L, 6L, 7L, 
8L))
@@ -272,7 +272,7 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFixedWindowsCombineWithContext() {
     PCollection<KV<String, Integer>> perKeyInput =
         pipeline.apply(Create.timestamped(TABLE, Arrays.asList(0L, 1L, 6L, 7L, 
8L))
@@ -307,7 +307,7 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testSlidingWindowsCombineWithContext() {
     PCollection<KV<String, Integer>> perKeyInput =
         pipeline.apply(Create.timestamped(TABLE, Arrays.asList(2L, 3L, 8L, 9L, 
10L))
@@ -354,7 +354,7 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testGlobalCombineWithDefaultsAndTriggers() {
     PCollection<Integer> input = pipeline.apply(Create.of(1, 1));
 
@@ -380,7 +380,7 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testSessionsCombine() {
     PCollection<KV<String, Integer>> input =
         pipeline.apply(Create.timestamped(TABLE, Arrays.asList(0L, 4L, 7L, 
10L, 16L))
@@ -403,7 +403,7 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testSessionsCombineWithContext() {
     PCollection<KV<String, Integer>> perKeyInput =
         pipeline.apply(Create.timestamped(TABLE, Arrays.asList(0L, 4L, 7L, 
10L, 16L))
@@ -443,7 +443,7 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testWindowedCombineEmpty() {
     PCollection<Double> mean = pipeline
         .apply(Create.empty(BigEndianIntegerCoder.of()))
@@ -456,13 +456,13 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testAccumulatingCombine() {
     runTestAccumulatingCombine(TABLE, 4.0, Arrays.asList(KV.of("a", 2.0), 
KV.of("b", 7.0)));
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testAccumulatingCombineEmpty() {
     runTestAccumulatingCombine(EMPTY_TABLE, 0.0, Collections.<KV<String, 
Double>>emptyList());
   }
@@ -498,7 +498,7 @@ public class CombineTest implements Serializable {
       };
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testHotKeyCombining() {
     PCollection<KV<String, Integer>> input = copy(createInput(pipeline, 
TABLE), 10);
 
@@ -532,7 +532,7 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testHotKeyCombiningWithAccumulationMode() {
     PCollection<Integer> input = pipeline.apply(Create.of(1, 2, 3, 4, 5));
 
@@ -610,7 +610,7 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testCombineGloballyAsSingletonView() {
     final PCollectionView<Integer> view = pipeline
         .apply("CreateEmptySideInput", 
Create.empty(BigEndianIntegerCoder.of()))
@@ -630,7 +630,7 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testWindowedCombineGloballyAsSingletonView() {
     FixedWindows windowFn = FixedWindows.of(Duration.standardMinutes(1));
     final PCollectionView<Integer> view =
@@ -718,7 +718,7 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testCombinePerKeyPrimitiveDisplayData() {
     DisplayDataEvaluator evaluator = DisplayDataEvaluator.create();
 
@@ -734,7 +734,7 @@ public class CombineTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testCombinePerKeyWithHotKeyFanoutPrimitiveDisplayData() {
     int hotKeyFanout = 2;
     DisplayDataEvaluator evaluator = DisplayDataEvaluator.create();

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CountTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CountTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CountTest.java
index dca0542..80aba67 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CountTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CountTest.java
@@ -24,8 +24,8 @@ import java.util.Arrays;
 import java.util.List;
 import org.apache.beam.sdk.coders.StringUtf8Coder;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.values.KV;
 import org.apache.beam.sdk.values.PCollection;
 import org.junit.Rule;
@@ -49,7 +49,7 @@ public class CountTest {
   public TestPipeline p = TestPipeline.create();
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   @SuppressWarnings("unchecked")
   public void testCountPerElementBasic() {
     PCollection<String> input = p.apply(Create.of(WORDS));
@@ -69,7 +69,7 @@ public class CountTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   @SuppressWarnings("unchecked")
   public void testCountPerElementEmpty() {
     PCollection<String> input = 
p.apply(Create.of(NO_LINES).withCoder(StringUtf8Coder.of()));
@@ -82,7 +82,7 @@ public class CountTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testCountGloballyBasic() {
     PCollection<String> input = p.apply(Create.of(WORDS));
 
@@ -95,7 +95,7 @@ public class CountTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testCountGloballyEmpty() {
     PCollection<String> input = 
p.apply(Create.of(NO_LINES).withCoder(StringUtf8Coder.of()));
 

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CreateTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CreateTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CreateTest.java
index d21e502..09f1f96 100644
--- 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CreateTest.java
+++ 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/CreateTest.java
@@ -50,9 +50,9 @@ import org.apache.beam.sdk.options.PipelineOptions;
 import org.apache.beam.sdk.options.PipelineOptionsFactory;
 import org.apache.beam.sdk.testing.NeedsRunner;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.SourceTestUtils;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.Create.Values.CreateSource;
 import org.apache.beam.sdk.util.SerializableUtils;
 import org.apache.beam.sdk.values.KV;
@@ -80,7 +80,7 @@ public class CreateTest {
 
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testCreate() {
     PCollection<String> output =
         p.apply(Create.of(LINES));
@@ -91,7 +91,7 @@ public class CreateTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testCreateEmpty() {
     PCollection<String> output =
         p.apply(Create.empty(StringUtf8Coder.of()));
@@ -155,7 +155,7 @@ public class CreateTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testCreateWithNullsAndValues() throws Exception {
     PCollection<String> output =
         p.apply(Create.of(null, "test1", null, "test2", null)
@@ -222,7 +222,7 @@ public class CreateTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testCreateWithUnserializableElements() throws Exception {
     List<UnserializableRecord> elements =
         ImmutableList.of(
@@ -248,7 +248,7 @@ public class CreateTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testCreateTimestamped() {
     List<TimestampedValue<String>> data = Arrays.asList(
         TimestampedValue.of("a", new Instant(1L)),
@@ -265,7 +265,7 @@ public class CreateTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testCreateTimestampedEmpty() {
     PCollection<String> output = p
         .apply(Create.timestamped(new ArrayList<TimestampedValue<String>>())
@@ -330,7 +330,7 @@ public class CreateTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testCreateWithVoidType() throws Exception {
     PCollection<Void> output = p.apply(Create.of((Void) null, (Void) null));
     PAssert.that(output).containsInAnyOrder((Void) null, (Void) null);
@@ -338,7 +338,7 @@ public class CreateTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testCreateWithKVVoidType() throws Exception {
     PCollection<KV<Void, Void>> output = p.apply(Create.of(
         KV.of((Void) null, (Void) null),

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/DistinctTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/DistinctTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/DistinctTest.java
index b3b3925..17bbed6 100644
--- 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/DistinctTest.java
+++ 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/DistinctTest.java
@@ -26,8 +26,8 @@ import java.util.List;
 import java.util.Map;
 import org.apache.beam.sdk.coders.StringUtf8Coder;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.values.KV;
 import org.apache.beam.sdk.values.PCollection;
 import org.junit.Rule;
@@ -46,7 +46,7 @@ public class DistinctTest {
   public final TestPipeline p = TestPipeline.create();
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testDistinct() {
     List<String> strings = Arrays.asList(
         "k1",
@@ -70,7 +70,7 @@ public class DistinctTest {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testDistinctEmpty() {
     List<String> strings = Arrays.asList();
 
@@ -108,7 +108,7 @@ public class DistinctTest {
 
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testDistinctWithRepresentativeValue() {
     List<KV<String, String>> strings = Arrays.asList(
         KV.of("k1", "v1"),

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/FilterTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/FilterTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/FilterTest.java
index 81e1d02..85ad796 100644
--- 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/FilterTest.java
+++ 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/FilterTest.java
@@ -22,8 +22,8 @@ import static org.hamcrest.MatcherAssert.assertThat;
 
 import java.io.Serializable;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.display.DisplayData;
 import org.apache.beam.sdk.values.PCollection;
 import org.junit.Rule;
@@ -62,7 +62,7 @@ public class FilterTest implements Serializable {
   public final TestPipeline p = TestPipeline.create();
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testIdentityFilterByPredicate() {
     PCollection<Integer> output = p
         .apply(Create.of(591, 11789, 1257, 24578, 24799, 307))
@@ -73,7 +73,7 @@ public class FilterTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testNoFilterByPredicate() {
     PCollection<Integer> output = p
         .apply(Create.of(1, 2, 4, 5))
@@ -84,7 +84,7 @@ public class FilterTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFilterByPredicate() {
     PCollection<Integer> output = p
         .apply(Create.of(1, 2, 3, 4, 5, 6, 7))
@@ -95,7 +95,7 @@ public class FilterTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFilterLessThan() {
     PCollection<Integer> output = p
         .apply(Create.of(1, 2, 3, 4, 5, 6, 7))
@@ -106,7 +106,7 @@ public class FilterTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFilterGreaterThan() {
     PCollection<Integer> output = p
         .apply(Create.of(1, 2, 3, 4, 5, 6, 7))
@@ -117,7 +117,7 @@ public class FilterTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFilterLessThanEq() {
     PCollection<Integer> output = p
         .apply(Create.of(1, 2, 3, 4, 5, 6, 7))
@@ -128,7 +128,7 @@ public class FilterTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFilterGreaterThanEq() {
     PCollection<Integer> output = p
         .apply(Create.of(1, 2, 3, 4, 5, 6, 7))

http://git-wip-us.apache.org/repos/asf/beam/blob/a58a7412/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/FlattenTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/FlattenTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/FlattenTest.java
index 5800738..1753c49 100644
--- 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/FlattenTest.java
+++ 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/FlattenTest.java
@@ -49,8 +49,8 @@ import org.apache.beam.sdk.io.CountingInput;
 import org.apache.beam.sdk.testing.FlattenWithHeterogeneousCoders;
 import org.apache.beam.sdk.testing.NeedsRunner;
 import org.apache.beam.sdk.testing.PAssert;
-import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.ValidatesRunner;
 import org.apache.beam.sdk.transforms.windowing.FixedWindows;
 import org.apache.beam.sdk.transforms.windowing.Sessions;
 import org.apache.beam.sdk.transforms.windowing.Window;
@@ -83,7 +83,7 @@ public class FlattenTest implements Serializable {
 
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFlattenPCollections() {
     List<List<String>> inputs = Arrays.asList(
       LINES, NO_LINES, LINES2, NO_LINES, LINES, NO_LINES);
@@ -97,7 +97,7 @@ public class FlattenTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFlattenPCollectionsSingletonList() {
     PCollection<String> input = p.apply(Create.of(LINES));
     PCollection<String> output = 
PCollectionList.of(input).apply(Flatten.<String>pCollections());
@@ -109,7 +109,7 @@ public class FlattenTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFlattenPCollectionsThenParDo() {
     List<List<String>> inputs = Arrays.asList(
       LINES, NO_LINES, LINES2, NO_LINES, LINES, NO_LINES);
@@ -124,7 +124,7 @@ public class FlattenTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFlattenPCollectionsEmpty() {
     PCollection<String> output =
         PCollectionList.<String>empty(p)
@@ -135,7 +135,7 @@ public class FlattenTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFlattenInputMultipleCopies() {
     int count = 5;
     PCollection<Long> longs = p.apply("mkLines", CountingInput.upTo(count));
@@ -167,7 +167,7 @@ public class FlattenTest implements Serializable {
   }
 
   @Test
-  @Category({RunnableOnService.class, FlattenWithHeterogeneousCoders.class})
+  @Category({ValidatesRunner.class, FlattenWithHeterogeneousCoders.class})
   public void testFlattenMultipleCoders() throws CannotProvideCoderException {
     PCollection<Long> bigEndianLongs =
         p.apply(
@@ -189,7 +189,7 @@ public class FlattenTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testEmptyFlattenAsSideInput() {
     final PCollectionView<Iterable<String>> view =
         PCollectionList.<String>empty(p)
@@ -212,7 +212,7 @@ public class FlattenTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFlattenPCollectionsEmptyThenParDo() {
     PCollection<String> output =
         PCollectionList.<String>empty(p)
@@ -226,7 +226,7 @@ public class FlattenTest implements Serializable {
   @Test
   @Category(NeedsRunner.class)
   public void testFlattenNoListsNoCoder() {
-    // not RunnableOnService because it should fail at pipeline construction 
time anyhow.
+    // not ValidatesRunner because it should fail at pipeline construction 
time anyhow.
     thrown.expect(IllegalStateException.class);
     thrown.expectMessage("cannot provide a Coder for empty");
 
@@ -239,7 +239,7 @@ public class FlattenTest implements Serializable {
   /////////////////////////////////////////////////////////////////////////////
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFlattenIterables() {
     PCollection<Iterable<String>> input = p
         .apply(Create.<Iterable<String>>of(LINES)
@@ -255,7 +255,7 @@ public class FlattenTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFlattenIterablesLists() {
     PCollection<List<String>> input =
         
p.apply(Create.<List<String>>of(LINES).withCoder(ListCoder.of(StringUtf8Coder.of())));
@@ -268,7 +268,7 @@ public class FlattenTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFlattenIterablesSets() {
     Set<String> linesSet = ImmutableSet.copyOf(LINES);
 
@@ -283,7 +283,7 @@ public class FlattenTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFlattenIterablesCollections() {
     Set<String> linesSet = ImmutableSet.copyOf(LINES);
 
@@ -299,7 +299,7 @@ public class FlattenTest implements Serializable {
   }
 
   @Test
-  @Category(RunnableOnService.class)
+  @Category(ValidatesRunner.class)
   public void testFlattenIterablesEmpty() {
     PCollection<Iterable<String>> input = p
         .apply(Create.<Iterable<String>>of(NO_LINES)

Reply via email to