From 4fd0e39b0bc64b40e011b4fe5d2e9bc626f1fa2e Mon Sep 17 00:00:00 2001 From: Eduardo Martins Date: Thu, 28 Sep 2023 11:01:02 +0100 Subject: [PATCH 1/2] [WFLY-18458] batch-processing quickstart enhancement CY2023Q3 --- .../quickstart_batch-processing_ci.yml | 14 +++ batch-processing/README.adoc | 45 ++----- batch-processing/charts/helm.yaml | 6 + batch-processing/pom.xml | 113 +++++++++++++++++- .../quickstarts/batch/BasicRuntimeIT.java | 60 ++++++++++ 5 files changed, 197 insertions(+), 41 deletions(-) create mode 100644 .github/workflows/quickstart_batch-processing_ci.yml create mode 100644 batch-processing/charts/helm.yaml create mode 100644 batch-processing/src/test/java/org/wildfly/quickstarts/batch/BasicRuntimeIT.java diff --git a/.github/workflows/quickstart_batch-processing_ci.yml b/.github/workflows/quickstart_batch-processing_ci.yml new file mode 100644 index 0000000000..19772b2bfb --- /dev/null +++ b/.github/workflows/quickstart_batch-processing_ci.yml @@ -0,0 +1,14 @@ +name: WildFly batch-processing Quickstart CI + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + paths: + - 'batch-processing/**' + - '.github/workflows/quickstart_ci.yml' +jobs: + call-quickstart_ci: + uses: ./.github/workflows/quickstart_ci.yml + with: + QUICKSTART_PATH: batch-processing + MICROPROFILE: false diff --git a/batch-processing/README.adoc b/batch-processing/README.adoc index 6a93f220ea..7abecf086b 100644 --- a/batch-processing/README.adoc +++ b/batch-processing/README.adoc @@ -12,7 +12,6 @@ The `batch-processing` quickstart shows how to use chunk oriented batch jobs to :standalone-server-type: default :archiveType: war :uses-h2: -:uses-ds-xml: == What is it? @@ -31,8 +30,6 @@ The job contains two tasks: The database schema defines that the column for name is unique. For that reason, any attempt to persist a duplicate value will throw an exception. On the second attempt to run the job, the `ChunkCheckpoint` provides information to skip the contacts that were already persisted. -ifndef::EAPCDRelease[] - // Considerations for Use in a Production Environment include::../shared-doc/development-shortcuts.adoc[leveloffset=+1] // System Requirements @@ -133,41 +130,13 @@ INFO [org.jboss.as.quickstarts.batch.job.listener.JobListener] (Batch Thread - . This time you will not fix the file. Just click on *Restart* button again. If you click on *Update jobs list* button, you will see that the job was marked as `ABANDONED` this time because it was restarted once. Notice that there is a new parameter: `restartedOnce=true`. This behavior was implemented in `JobListener` for demonstration purposes, to prevent a `FAILED` job from being restarted twice. -== Server Log: Expected Warnings and Errors - -You will see the following warnings in the server log. You can ignore these warnings. - -[source,options="nowrap"] ----- -WFLYJCA0091: -ds.xml file deployments are deprecated. Support may be removed in a future version. - -HHH000431: Unable to determine H2 database version, certain features may not work ----- - +// Server Distribution Testing +include::../shared-doc/run-integration-tests-with-server-distribution.adoc[leveloffset=+2] // Undeploy the Quickstart -include::../shared-doc/undeploy-the-quickstart.adoc[leveloffset=+1] -// Run the Quickstart in Red Hat CodeReady Studio or Eclipse -include::../shared-doc/run-the-quickstart-in-jboss-developer-studio.adoc[leveloffset=+1] -// Debug the Application -include::../shared-doc/debug-the-application.adoc[leveloffset=+1] +include::../shared-doc/undeploy-the-quickstart.adoc[leveloffset=+2] +// Build and run sections for other environments/builds +ifndef::ProductRelease,EAPXPRelease[] +include::../shared-doc/build-and-run-the-quickstart-with-provisioned-server.adoc[leveloffset=+1] endif::[] - -//************************************************* -// Product Release content only -//************************************************* -ifdef::ProductRelease[] - -// Getting Started with OpenShift -include::../shared-doc/openshift-getting-started.adoc[leveloffset=+1] -//Prepare OpenShift for Quickstart Deployment -include::../shared-doc/openshift-create-project.adoc[leveloffset=+1] -// Import the Latest {xpaasproduct-shortname} Image Streams and Templates -include::../shared-doc/openshift-import-imagestreams-templates.adoc[leveloffset=+1] -// Deploy the {ProductShortName} Source-to-Image (S2I) Quickstart to OpenShift -include::../shared-doc/openshift-deploy-project.adoc[leveloffset=+1] -// Openshift post deployment tasks -include::../shared-doc/openshift-post-deployment-tasks.adoc[leveloffset=+1] - - -endif::[] \ No newline at end of file +include::../shared-doc/build-and-run-the-quickstart-with-openshift.adoc[leveloffset=+1] \ No newline at end of file diff --git a/batch-processing/charts/helm.yaml b/batch-processing/charts/helm.yaml new file mode 100644 index 0000000000..76725f9799 --- /dev/null +++ b/batch-processing/charts/helm.yaml @@ -0,0 +1,6 @@ +build: + uri: https://github.com/wildfly/quickstart.git + ref: main + contextDir: batch-processing +deploy: + replicas: 1 \ No newline at end of file diff --git a/batch-processing/pom.xml b/batch-processing/pom.xml index 766114f2e0..b36ccdfe9f 100644 --- a/batch-processing/pom.xml +++ b/batch-processing/pom.xml @@ -44,10 +44,15 @@ - - 30.0.0.Beta1 + + 30.0.0.Beta1 + + ${version.server} + 5.0.0.Beta1 + 4.2.0.Final + jboss-public-maven-repository @@ -109,7 +114,7 @@ org.wildfly.bom wildfly-ee-with-tools - ${version.server.bom} + ${version.bom.ee} pom import @@ -221,5 +226,107 @@ provided + + + junit + junit + test + + + + + provisioned-server + + + + org.wildfly.plugins + wildfly-maven-plugin + + + + org.wildfly:wildfly-galleon-pack:${version.server} + + + + + batch-jberet + cloud-server + h2-default-datasource + jsf + + + ROOT.war + + + + + package + + + + + + + + + openshift + + + + org.wildfly.plugins + wildfly-maven-plugin + + + + org.wildfly:wildfly-galleon-pack:${version.server} + + + org.wildfly.cloud:wildfly-cloud-galleon-pack:${version.pack.cloud} + + + + batch-jberet + cloud-server + h2-default-datasource + jsf + + ROOT.war + + + + + package + + + + + + + + + integration-testing + + + + org.apache.maven.plugins + maven-failsafe-plugin + + + **/BasicRuntimeIT + + + + + + integration-test + + + + + + + + + diff --git a/batch-processing/src/test/java/org/wildfly/quickstarts/batch/BasicRuntimeIT.java b/batch-processing/src/test/java/org/wildfly/quickstarts/batch/BasicRuntimeIT.java new file mode 100644 index 0000000000..d0c5928f70 --- /dev/null +++ b/batch-processing/src/test/java/org/wildfly/quickstarts/batch/BasicRuntimeIT.java @@ -0,0 +1,60 @@ +/* + * Copyright 2023 JBoss by Red Hat. + * + * Licensed 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.wildfly.quickstarts.batch; + +import org.junit.Test; + +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.time.Duration; + +import static org.junit.Assert.assertEquals; + +/** + * The very basic runtime integration testing. + * @author emartins + */ +public class BasicRuntimeIT { + + private static final String DEFAULT_SERVER_HOST = "http://localhost:8080/batch-processing"; + + @Test + public void testHTTPEndpointIsAvailable() throws IOException, InterruptedException, URISyntaxException { + String serverHost = System.getenv("SERVER_HOST"); + if (serverHost == null) { + serverHost = System.getProperty("server.host"); + } + if (serverHost == null) { + serverHost = DEFAULT_SERVER_HOST; + } + final HttpRequest request = HttpRequest.newBuilder() + .uri(new URI(serverHost+"/")) + .GET() + .build(); + final HttpClient client = HttpClient.newBuilder() + .followRedirects(HttpClient.Redirect.ALWAYS) + .connectTimeout(Duration.ofMinutes(1)) + .build(); + final HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); + assertEquals(200, response.statusCode()); + final String[] bodyLines = response.body().toString().split(System.lineSeparator()); + assertEquals("", bodyLines[bodyLines.length -3]); + } +} From 3dc7dda0ec9697d8d5b2a7a016a5c298cfd36a33 Mon Sep 17 00:00:00 2001 From: Eduardo Martins Date: Thu, 28 Sep 2023 11:01:41 +0100 Subject: [PATCH 2/2] misc optimizations --- helloworld/pom.xml | 1 - shared-doc/run-integration-tests-with-openshift.adoc | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/helloworld/pom.xml b/helloworld/pom.xml index 9155d4b73b..dc0c1a8e36 100644 --- a/helloworld/pom.xml +++ b/helloworld/pom.xml @@ -148,7 +148,6 @@ junit junit test - jar diff --git a/shared-doc/run-integration-tests-with-openshift.adoc b/shared-doc/run-integration-tests-with-openshift.adoc index aab8388e2c..e5179101dd 100644 --- a/shared-doc/run-integration-tests-with-openshift.adoc +++ b/shared-doc/run-integration-tests-with-openshift.adoc @@ -9,7 +9,7 @@ The integration tests expect a deployed application, so make sure you have deplo Run the integration tests using the following command to run the `verify` goal with the `integration-testing` profile activated and the proper URL: [source,options="nowrap",subs="+attributes"] ---- -$ mvn clean verify -Pintegration-testing -Dserver.host=https://$(oc get route {artifactId} --template='{{ .spec.host }}') +$ mvn verify -Pintegration-testing -Dserver.host=https://$(oc get route {artifactId} --template='{{ .spec.host }}') ---- [NOTE]