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

altay pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/beam-starter-java.git


The following commit(s) were added to refs/heads/main by this push:
     new bd89083  actually test the pipeline (#4)
bd89083 is described below

commit bd8908339e4cb9a5632aa6b44364b52e4ef762f8
Author: David Cavazos <[email protected]>
AuthorDate: Fri Jun 17 09:45:25 2022 -0700

    actually test the pipeline (#4)
---
 .github/workflows/test.yaml            |  2 +-
 build.gradle                           |  9 +++++----
 build.sbt                              |  7 ++++---
 pom.xml                                | 24 ++++++++++++------------
 src/main/java/com/example/App.java     | 24 +++++++++++++++++-------
 src/test/java/com/example/AppTest.java | 20 ++++++++++++++++----
 6 files changed, 55 insertions(+), 31 deletions(-)

diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index b93db98..98e851c 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -8,7 +8,7 @@
 
 name: Test
 
-on: push
+on: [push, pull_request]
 
 jobs:
   Gradle:
diff --git a/build.gradle b/build.gradle
index a8bd176..2f368ec 100644
--- a/build.gradle
+++ b/build.gradle
@@ -19,11 +19,11 @@ application {
 }
 
 test {
-    // JUnit 5 testing integration.
-    useJUnitPlatform()
+    // JUnit 4.
+    useJUnit()
 }
 
-def beamVersion = '2.33.0'
+def beamVersion = '2.39.0'
 dependencies {
     // App dependencies.
     implementation "org.apache.beam:beam-sdks-java-core:${beamVersion}"
@@ -31,7 +31,8 @@ dependencies {
     implementation "org.slf4j:slf4j-jdk14:1.7.32"
 
     // Tests dependencies.
-    testImplementation "org.junit.jupiter:junit-jupiter:5.8.1"
+    testImplementation "junit:junit:4.13.2"
+    testImplementation 'org.hamcrest:hamcrest:2.2'
 }
 
 // Package a self-contained jar file.
diff --git a/build.sbt b/build.sbt
index 5e94af5..357158b 100644
--- a/build.sbt
+++ b/build.sbt
@@ -8,7 +8,7 @@
 
 mainClass := Some("com.example.App")
 
-val beamVersion = "2.33.0"
+val beamVersion = "2.39.0"
 libraryDependencies ++= Seq(
   // App dependencies.
   "org.apache.beam" % "beam-sdks-java-core" % beamVersion,
@@ -16,8 +16,9 @@ libraryDependencies ++= Seq(
   "org.slf4j" % "slf4j-jdk14" % "1.7.32",
 
   // Test dependencies.
-  "net.aichler" % "jupiter-interface" % JupiterKeys.jupiterVersion.value % 
Test,
-  "org.junit.jupiter" % "junit-jupiter" % "5.8.1" % Test
+  "junit" % "junit" % "4.13.2" % Test,
+  "com.novocode" % "junit-interface" % "0.11" % Test,
+  "org.hamcrest" % "hamcrest" % "2.2" % Test
 )
 
 // Package self-contained jar file.
diff --git a/pom.xml b/pom.xml
index c0e15fe..31a1b3f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,8 +21,8 @@
     <maven.compiler.target>11</maven.compiler.target>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 
-    <beam.version>2.33.0</beam.version>
-    <junit.version>5.8.1</junit.version>
+    <beam.version>2.39.0</beam.version>
+    <junit.version>4.13.2</junit.version>
   </properties>
 
   <build>
@@ -44,18 +44,11 @@
         </configuration>
       </plugin>
 
-      <!-- JUnit 5 testing integration. -->
+      <!-- JUnit 4 testing integration. -->
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
         <version>3.0.0-M5</version>
-        <dependencies>
-          <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>${junit.version}</version>
-          </dependency>
-        </dependencies>
       </plugin>
 
       <!-- Package self-contained jar file. -->
@@ -108,10 +101,17 @@
 
     <!-- Test dependencies -->
     <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter</artifactId>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
       <version>${junit.version}</version>
       <scope>test</scope>
     </dependency>
+
+    <dependency>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>hamcrest</artifactId>
+      <version>2.2</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
\ No newline at end of file
diff --git a/src/main/java/com/example/App.java 
b/src/main/java/com/example/App.java
index 20e7afe..f5f8a14 100644
--- a/src/main/java/com/example/App.java
+++ b/src/main/java/com/example/App.java
@@ -8,13 +8,18 @@
 
 package com.example;
 
+import java.util.Arrays;
+import java.util.List;
+
 import org.apache.beam.sdk.Pipeline;
+import org.apache.beam.sdk.coders.StringUtf8Coder;
 import org.apache.beam.sdk.options.Default;
 import org.apache.beam.sdk.options.Description;
 import org.apache.beam.sdk.options.PipelineOptionsFactory;
 import org.apache.beam.sdk.options.StreamingOptions;
 import org.apache.beam.sdk.transforms.Create;
 import org.apache.beam.sdk.transforms.MapElements;
+import org.apache.beam.sdk.values.PCollection;
 import org.apache.beam.sdk.values.TypeDescriptors;
 
 public class App {
@@ -26,15 +31,20 @@ public class App {
                void setInputText(String value);
        }
 
+       public static PCollection<String> buildPipeline(Pipeline pipeline, 
String inputText) {
+               return pipeline
+                               .apply("Create elements", 
Create.of(Arrays.asList("Hello", "World!", inputText)))
+                               .apply("Print elements",
+                                               
MapElements.into(TypeDescriptors.strings()).via(x -> {
+                                                       System.out.println(x);
+                                                       return x;
+                                               }));
+       }
+
        public static void main(String[] args) {
                var options = 
PipelineOptionsFactory.fromArgs(args).withValidation().as(Options.class);
-
                var pipeline = Pipeline.create(options);
-               pipeline.apply("Create elements", Create.of("Hello", "World!", 
options.getInputText())).apply("Print elements",
-                               
MapElements.into(TypeDescriptors.strings()).via(x -> {
-                                       System.out.println(x);
-                                       return x;
-                               }));
-               pipeline.run();
+               App.buildPipeline(pipeline, options.getInputText());
+               pipeline.run().waitUntilFinish();
        }
 }
\ No newline at end of file
diff --git a/src/test/java/com/example/AppTest.java 
b/src/test/java/com/example/AppTest.java
index c7a47e3..a259d12 100644
--- a/src/test/java/com/example/AppTest.java
+++ b/src/test/java/com/example/AppTest.java
@@ -8,13 +8,25 @@
 
 package com.example;
 
-import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.*;
+import org.apache.beam.sdk.Pipeline;
+import org.apache.beam.sdk.testing.PAssert;
+import org.apache.beam.sdk.testing.TestPipeline;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
+@RunWith(JUnit4.class)
 public class AppTest {
+       @Rule
+       public final transient TestPipeline pipeline = TestPipeline.create();
+
        @Test
        public void appRuns() {
-               App.main(new String[] {});
-               assertEquals(1 + 1, 2);
+               var elements = App.buildPipeline(pipeline, "Test");
+
+               // Note that the order of the elements doesn't matter.
+               PAssert.that(elements).containsInAnyOrder("Test", "Hello", 
"World!");
+               pipeline.run().waitUntilFinish();
        }
 }

Reply via email to