From e717b53dfe2572aacde6db765913f52b93ce6cd1 Mon Sep 17 00:00:00 2001
From: Chris Sampson <chris.sampson82@gmail.com>
Date: Sun, 1 Oct 2023 18:42:02 +0100
Subject: [PATCH] NIFI-12178 add integration-tests and docker-tests github
 actions

---
 .github/workflows/ci-workflow.yml             |  11 +-
 .github/workflows/docker-tests.yml            | 164 ++++++++++++
 .github/workflows/integration-tests.yml       | 253 ++++++++++++++++++
 .github/workflows/system-tests.yml            |  76 ++----
 README.md                                     |   2 +
 .../ElasticSearchClientService_IT.java        |   2 +-
 6 files changed, 451 insertions(+), 57 deletions(-)
 create mode 100644 .github/workflows/docker-tests.yml
 create mode 100644 .github/workflows/integration-tests.yml

diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml
index 3f9ee8a7f5bde..5f54774416f9b 100644
--- a/.github/workflows/ci-workflow.yml
+++ b/.github/workflows/ci-workflow.yml
@@ -39,6 +39,7 @@ env:
     --fail-fast
     -pl -:minifi-c2-integration-tests
     -pl -:minifi-integration-tests
+    -pl -:minifi-c2-assembly
     -pl -:minifi-assembly
     -pl -:nifi-assembly
     -pl -:nifi-kafka-connector-assembly
@@ -75,7 +76,7 @@ env:
     -pl -nifi-toolkit/nifi-toolkit-assembly
 
 concurrency:
-  group: ${{ github.ref }}
+  group: ${{ github.workflow }}-${{ github.ref }}
   cancel-in-progress: true
 
 permissions:
@@ -88,7 +89,7 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Checkout Code
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
       - name: Cache Maven Modules
         uses: actions/cache@v3
         with:
@@ -122,7 +123,7 @@ jobs:
           cat /proc/meminfo
           df
       - name: Checkout Code
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
       - name: Cache Node Modules
         uses: actions/cache@v3
         with:
@@ -185,7 +186,7 @@ jobs:
           sysctl machdep.cpu
           df
       - name: Checkout Code
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
       - name: Cache Node Modules
         uses: actions/cache@v3
         with:
@@ -250,7 +251,7 @@ jobs:
           git config --global core.autocrlf false
           git config --global core.longpaths true
       - name: Checkout Code
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
       - name: Cache Node Modules
         uses: actions/cache@v3
         with:
diff --git a/.github/workflows/docker-tests.yml b/.github/workflows/docker-tests.yml
new file mode 100644
index 0000000000000..4e6f1e43b9ace
--- /dev/null
+++ b/.github/workflows/docker-tests.yml
@@ -0,0 +1,164 @@
+# 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.
+name: docker-tests
+
+on:
+  # Run every day at 02:00
+  schedule:
+    - cron: "0 2 * * *"
+  push:
+    paths:
+      - '.github/workflows/docker-tests.yml'
+      - 'nifi-assembly/**'
+      - 'nifi-docker/**'
+      - 'nifi-registry/nifi-registry-assembly/**'
+      - 'nifi-registry/nifi-registry-docker-maven/**'
+      - 'minifi/minifi-assembly/**'
+      - 'minifi/minifi-docker/**'
+      - 'minifi/minifi-c2/minifi-c2-assembly/**'
+      - 'minifi/minifi-c2/minifi-c2-docker/**'
+  pull_request:
+    paths:
+      - '.github/workflows/docker-tests.yml'
+      - 'nifi-assembly/**'
+      - 'nifi-docker/**'
+      - 'nifi-registry/nifi-registry-assembly/**'
+      - 'nifi-registry/nifi-registry-docker-maven/**'
+      - 'minifi/minifi-assembly/**'
+      - 'minifi/minifi-docker/**'
+      - 'minifi/minifi-c2/minifi-c2-assembly/**'
+      - 'minifi/minifi-c2/minifi-c2-docker/**'
+
+env:
+  DEFAULT_MAVEN_OPTS: >-
+    -Xmx4g
+    -XX:ReservedCodeCacheSize=1g
+    -XX:+UseG1GC
+    -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN
+    -Daether.connector.http.retryHandler.count=5
+    -Daether.connector.http.connectionMaxTtl=30
+  MAVEN_COMMAND: >-
+    ./mvnw
+    -V
+    -nsu
+    -ntp
+    -ff
+
+# build assemblies (including binaries) for use in Docker Image builds
+  MAVEN_BUILD_ARGUMENTS: >-
+    -am
+    -D skipTests
+    -T 2.0C
+    package
+  MAVEN_BUILD_PROJECTS: >-
+    -pl nifi-assembly
+    -pl nifi-registry/nifi-registry-assembly
+    -pl nifi-toolkit/nifi-toolkit-assembly
+    -pl minifi/minifi-assembly
+    -pl minifi/minifi-c2/minifi-c2-assembly
+
+  MAVEN_CLEAN_ARGUMENTS: >-
+    -T 2.0C
+    clean
+  MAVEN_CLEAN_PROJECTS: >-
+    -pl -nifi-assembly
+    -pl -nifi-registry/nifi-registry-assembly
+    -pl -nifi-toolkit/nifi-toolkit-assembly
+    -pl -minifi/minifi-assembly
+    -pl -minifi/minifi-c2/minifi-c2-assembly
+
+# build and test Docker Images
+  MAVEN_DOCKER_ARGUMENTS: >-
+    install
+    -P docker
+  MAVEN_DOCKER_PROJECTS: >-
+    -pl minifi/minifi-docker
+    -pl minifi/minifi-c2/minifi-c2-docker
+    -pl nifi-docker/dockermaven
+    -pl nifi-registry/nifi-registry-docker-maven/dockermaven
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+permissions:
+  contents: read
+
+jobs:
+  build_and_test:
+    strategy:
+      fail-fast: false
+      matrix:
+        # TODO: macos-latest doesn't come with Docker and Colima seems to have problems with the nifi-docker integration_test scripts - see NIFI-12177/NIFI-12191
+        os: [ ubuntu-latest ]
+        version: [ 21 ]
+    timeout-minutes: 120
+    runs-on: ${{ matrix.os }}
+    name: ${{ matrix.os }} Java ${{ matrix.version }}
+    env:
+      # default to Amazon Corretto JDK
+      JAVA_DISTRIBUTION: corretto
+    steps:
+      # Zulu JDK appears to be more reliable for MacOS
+      - name: Use Java distribution Zulu
+        if: ${{ runner.os == 'macos' }}
+        run: echo "JAVA_DISTRIBUTION=zulu" >> "$GITHUB_ENV"
+      - name: Checkout Code
+        uses: actions/checkout@v4
+      - name: Set up Java ${{ env.JAVA_DISTRIBUTION }} ${{ matrix.version }}
+        uses: actions/setup-java@v3
+        with:
+          distribution: ${{ env.JAVA_DISTRIBUTION }}
+          java-version: ${{ matrix.version }}
+          cache: 'maven'
+
+      - name: Set up Docker
+        if: ${{ runner.os == 'macos' }}
+        run: |-
+          /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
+          brew install docker
+          colima start
+
+          if [ ! -e /var/run/docker.sock ]; then sudo ln -s ~/.colima/docker.sock /var/run/docker.sock; fi
+      - name: Confirm Docker
+        run: id && docker info
+
+      - name: Build Assemblies
+        env:
+          MAVEN_OPTS: >-
+            ${{ env.DEFAULT_MAVEN_OPTS }}
+        run: >
+          ${{ env.MAVEN_COMMAND }}
+          ${{ env.MAVEN_BUILD_ARGUMENTS }}
+          ${{ env.MAVEN_BUILD_PROJECTS }}
+      - name: Clean Modules
+        env:
+          MAVEN_OPTS: >-
+            ${{ env.DEFAULT_MAVEN_OPTS }}
+        # clean non-assembly modules before running Docker builds and delete unpacked binaries, otherwise we'll run out of disk space
+        run: >
+          ${{ env.MAVEN_COMMAND }}
+          ${{ env.MAVEN_CLEAN_ARGUMENTS }}
+          ${{ env.MAVEN_CLEAN_PROJECTS }}
+          && rm -rf nifi-assembly/target/nifi-*-bin/ nifi-registry/nifi-registry-assembly/target/nifi-registry-*-bin/
+      - name: Run Docker Tests
+        env:
+          MAVEN_OPTS: >-
+            ${{ env.DEFAULT_MAVEN_OPTS }}
+        run: >
+          ${{ env.MAVEN_COMMAND }}
+          ${{ env.MAVEN_DOCKER_ARGUMENTS }}
+          ${{ env.MAVEN_DOCKER_PROJECTS }}
diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml
new file mode 100644
index 0000000000000..b2dcc7153e178
--- /dev/null
+++ b/.github/workflows/integration-tests.yml
@@ -0,0 +1,253 @@
+# 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.
+name: integration-tests
+
+on:
+  # Run every day at 03:00
+  schedule:
+    - cron: "0 3 * * *"
+  push:
+    paths:
+      - '.github/workflows/integration-tests.yml'
+      - '**/test/**/*IT.java'
+      - '**/test/**/*ITCase.java'
+      - '**/test/**/IT*.java'
+  pull_request:
+    paths:
+      - '.github/workflows/integration-tests.yml'
+      - '**/test/**/*IT.java'
+      - '**/test/**/*ITCase.java'
+      - '**/test/**/IT*.java'
+
+env:
+  DEFAULT_MAVEN_OPTS: >-
+    -Xmx4g
+    -XX:ReservedCodeCacheSize=1g
+    -XX:+UseG1GC
+    -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN
+    -Daether.connector.http.retryHandler.count=5
+    -Daether.connector.http.connectionMaxTtl=30
+    -Duser.language=en
+    -Duser.country=GB
+    -Duser.timezone=UTC
+  MAVEN_COMMAND: >-
+    ./mvnw
+    -V
+    -nsu
+    -ntp
+    -ff
+
+# skip assemblies and modules covered separately by the system-tests workflow
+  MAVEN_BUILD_ARGUMENTS: >-
+    -D skipTests
+    -T 2.0C
+    install
+  MAVEN_BUILD_EXCLUDE_PROJECTS: >-
+    -pl -:minifi-assembly
+    -pl -:minifi-c2-assembly
+    -pl -:nifi-assembly
+    -pl -:nifi-toolkit-assembly
+    -pl -:nifi-registry-assembly
+    -pl -:nifi-registry-toolkit-assembly
+    -pl -:nifi-runtime-manifest
+    -pl -:nifi-runtime-manifest-test
+    -pl -:nifi-stateless-assembly
+    -pl -:nifi-stateless-processor-tests
+    -pl -:nifi-stateless-system-test-suite
+    -pl -:nifi-system-test-suite
+    -pl -:nifi-nar-provider-assembly
+    -pl -:nifi-py4j-integration-tests
+
+# run integration tests, python ITs included as part of the system-tests workflow
+  MAVEN_FAILSAFE_RUN_ARGUMENTS: >-
+    -D failsafe.failIfNoSpecifiedTests=false
+    test-compile
+    failsafe:integration-test
+    failsafe:verify
+    -P integration-tests
+    -P nifi-registry-integration-tests
+# skip individual failing ITs (some won't work in a CI environment)
+# always run the (failsafe default) IT*, *IT, *ITCase integration-tests
+  MAVEN_FAILSAFE_SKIP_ITS: >-
+    IT*, *IT, *ITCase,
+    !AwsSecretsManagerSensitivePropertyProviderIT,
+    !AwsKmsSensitivePropertyProviderIT,
+    !AzureKeyVaultKeySensitivePropertyProviderIT,
+    !GcpKmsSensitivePropertyProviderIT,
+    !StandardHashiCorpVaultCommunicationServiceIT,
+    !ConversionWithSchemaInferenceIT#testXmlToAvro,
+    !ConversionWithSchemaInferenceIT#testXmlToJson,
+    !ConversionWithSchemaInferenceIT#testJsonToCsv,
+    !ConversionWithSchemaInferenceIT#testCsvToXml,
+    !ConversionWithSchemaInferenceIT#testXmlToAvroToXml,
+    !ConversionWithSchemaInferenceIT#testCsvToAvro,
+    !ConversionWithSchemaInferenceIT#testCsvToJson,
+    !ConversionWithSchemaInferenceIT#testJsonToAvroToJson,
+    !ConversionWithSchemaInferenceIT#testCsvToAvroToCsv,
+    !ConversionWithExplicitSchemaIT#testJsonToCsv,
+    !ConversionWithExplicitSchemaIT#testJsonToAvro,
+    !ConversionWithExplicitSchemaIT#testJsonToAvroToJson,
+    !ITConsumeKinesisStreamEndpointOverride,
+    !ITConsumeKinesisStreamConnectAWS,
+    !ITPutKinesisStream,
+    !ITPutKinesisStreamWithEndpointOverride#testIntegrationSuccess,
+    !ITPutKinesisFirehoseWithEndpointOverride#testIntegrationSuccess,
+    !ITPutKinesisFirehose,
+    !ITTagS3Object,
+    !ITFetchS3Object,
+    !ITDeleteS3Object,
+    !ITPutS3Object,
+    !ITListS3,
+    !ITPutSNS#testPublish,
+    !ITPutSNS#testPublishWithCredentialsProviderService,
+    !ITDeleteSQS,
+    !ITGetSQS,
+    !ITPutSQS,
+    !ITPutLambda,
+    !GetMongoIT#testDatabaseEL,
+    !PutGridFSIT#testFileNameAndHashUniqueness,
+    !PutGridFSIT#testHashUniqueness,
+    !ITPutAzureCosmosDBRecord,
+    !ITListAzureBlobStorage_v12,
+    !ITPutAzureDataLakeStorage,
+    !ITFetchAzureDataLakeStorage,
+    !ITListAzureDataLakeStorage,
+    !ITFetchAzureBlobStorage_v12,
+    !ITPutAzureBlobStorage_v12,
+    !ITDeleteAzureDataLakeStorage,
+    !ITDeleteAzureBlobStorage_v12,
+    !ITMoveAzureDataLakeStorage,
+    !AzureGraphUserGroupProviderIT,
+    !JMSPublisherConsumerIT#validateMessageRedeliveryWhenNotAcked,
+    !ITPutInfluxDB,
+    !ITExecuteInfluxDBQuery,
+    !GremlinClientServiceYamlSettingsAndBytecodeIT,
+    !GremlinClientServiceControllerSettingsIT,
+    !ITestConsumeEmail#validateUrl,
+    !PrometheusReportingTaskIT#testNullLabel,
+    !SnowflakeConnectionPoolIT,
+    !SalesforceRestServiceIT,
+    !QuerySalesforceObjectIT,
+    !PutSalesforceObjectIT,
+    !FetchDropboxIT,
+    !PutDropboxIT,
+    !ListDropboxIT,
+    !FetchBoxFileIT,
+    !PutBoxFileIT,
+    !ListBoxFileIT,
+    !JsonConfigBasedBoxClientServiceIT,
+    !QueryIoTDBIT,
+    !PutIoTDBRecordIT,
+    !StandardProcessSessionIT#testCloneThenWriteCountsClaimReferencesProperly,
+    !StandardProcessSessionIT#testUpdateFlowFileRepoFailsOnSessionCommit,
+    !JMSPublisherConsumerIT#testMultipleThreads,
+    !ITRedisDistributedMapCacheClientService#testSentinelRedisWithAuthentication,
+    !ITRedisDistributedMapCacheClientService#testSentinelRedis,
+    !SnowflakePipeIT,
+    !SecureFileIT,
+    !SecureProxyIT#testAccessStatus,
+    !SecureProxyIT#testAccessStatusAsProxiedAdmin,
+    !SecureProxyIT#testAccessStatusUsingRegistryClient,
+    !SecureNiFiRegistryClientIT#testGetAccessStatus,
+    !SecureNiFiRegistryClientIT#testTenantsClientGroups,
+    !SecureNiFiRegistryClientIT#testTenantsClientUsers,
+    !SecureNiFiRegistryClientIT#testCrudOperations,
+    !SecureDatabaseIT,
+    !ITConnectionAccessControl,
+    !ITLabelAccessControl,
+    !ITOutputPortAccessControl,
+    !ITProcessorAccessControl,
+    !ITFlowAccessControl,
+    !ITFunnelAccessControl,
+    !ITInputPortAccessControl
+    !ITCountersAccessControl,
+    !ITAllowProxiedAnonymousAccess,
+    !ITPreventProxiedAnonymousAccess,
+    !ITPreventDirectAnonymousAccess,
+    !ITAllowDirectAnonymousAccess,
+    !ITProcessGroupAccessControl
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+permissions:
+  contents: read
+
+jobs:
+  build_and_test:
+    strategy:
+      fail-fast: false
+      matrix:
+        # TODO: macos-latest doesn't come with Docker and Colima seems to have problems with Test Containers - see NIFI-12191
+        os: [ ubuntu-latest ]
+        version: [ 21 ]
+    timeout-minutes: 120
+    runs-on: ${{ matrix.os }}
+    name: ${{ matrix.os }} Java ${{ matrix.version }}
+    env:
+      # default to Amazon Corretto JDK
+      JAVA_DISTRIBUTION: corretto
+    steps:
+      # Zulu JDK appears to be more reliable for MacOS
+      - name: Use Java distribution Zulu
+        if: ${{ runner.os == 'macos' }}
+        run: echo "JAVA_DISTRIBUTION=zulu" >> "$GITHUB_ENV"
+      - name: Checkout Code
+        uses: actions/checkout@v4
+      - name: Set up Java ${{ env.JAVA_DISTRIBUTION }} ${{ matrix.version }}
+        uses: actions/setup-java@v3
+        with:
+          distribution: ${{ env.JAVA_DISTRIBUTION }}
+          java-version: ${{ matrix.version }}
+          cache: 'maven'
+
+      # many integration-tests use Docker to run Testcontainers; MacOS doesn't come with Docker, so we need to install it
+      - name: Set up Docker
+        if: ${{ runner.os == 'macos' }}
+        run: |-
+          /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
+          brew install docker
+          colima start
+
+          if [ ! -e /var/run/docker.sock ]; then sudo ln -s ~/.colima/docker.sock /var/run/docker.sock; fi
+      - name: Confirm Docker
+        run: id && docker info
+
+      - name: Build Modules
+        env:
+          MAVEN_OPTS: >-
+            ${{ env.DEFAULT_MAVEN_OPTS }}
+        run: >
+          ${{ env.MAVEN_COMMAND }}
+          ${{ env.MAVEN_BUILD_ARGUMENTS }}
+          ${{ env.MAVEN_BUILD_EXCLUDE_PROJECTS }}
+      - name: Run Failsafe Tests
+        env:
+          MAVEN_OPTS: >-
+            ${{ env.DEFAULT_MAVEN_OPTS }}
+        run: >
+          ${{ env.MAVEN_COMMAND }}
+          ${{ env.MAVEN_FAILSAFE_RUN_ARGUMENTS }}
+          '-Dit.test=${{ env.MAVEN_FAILSAFE_SKIP_ITS }}'
+      - name: Upload Troubleshooting Logs
+        if: failure() || cancelled()
+        uses: actions/upload-artifact@v3
+        with:
+          name: ${{ matrix.os }}-${{ matrix.version }}-failsafe-logs
+          path: |
+            **/target/failsafe-reports/**/*.txt
+          retention-days: 7
diff --git a/.github/workflows/system-tests.yml b/.github/workflows/system-tests.yml
index f2c4c417485fc..eaec370c79afd 100644
--- a/.github/workflows/system-tests.yml
+++ b/.github/workflows/system-tests.yml
@@ -64,71 +64,45 @@ env:
     -pl nifi-system-tests/nifi-system-test-suite
     -pl nifi-system-tests/nifi-stateless-system-test-suite
 
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
 permissions:
   contents: read
 
 jobs:
-  ubuntu:
+  build_and_test:
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [ ubuntu-latest, macos-latest ]
+        version: [ 21 ]
     timeout-minutes: 120
-    runs-on: ubuntu-latest
-    name: Ubuntu Corretto Java 21
+    runs-on: ${{ matrix.os }}
+    name: ${{ matrix.os }} Java ${{ matrix.version }}
+    env:
+      # default to Amazon Corretto JDK
+      JAVA_DISTRIBUTION: corretto
     steps:
+      # Zulu JDK appears to be more reliable for MacOS
+      - name: Use Java distribution Zulu
+        if: ${{ runner.os == 'macos' }}
+        run: echo "JAVA_DISTRIBUTION=zulu" >> "$GITHUB_ENV"
       - name: Checkout Code
-        uses: actions/checkout@v3
-      - name: Set up Java 21
+        uses: actions/checkout@v4
+      - name: Set up Java ${{ env.JAVA_DISTRIBUTION }} ${{ matrix.version }}
         uses: actions/setup-java@v3
         with:
-          distribution: corretto
-          java-version: 21
+          distribution: ${{ env.JAVA_DISTRIBUTION }}
+          java-version: ${{ matrix.version }}
           cache: 'maven'
-      - name: Set up Python 3.9
-        uses: actions/setup-python@v4
-        with:
-          python-version: '3.9'
-      - name: Build Dependencies
-        env:
-          MAVEN_OPTS: >-
-            ${{ env.DEFAULT_MAVEN_OPTS }}
-        run: >
-          ${{ env.MAVEN_COMMAND }}
-          ${{ env.MAVEN_BUILD_ARGUMENTS }}
-          ${{ env.MAVEN_PROJECTS }}
-      - name: Run Tests
-        env:
-          MAVEN_OPTS: >-
-            ${{ env.DEFAULT_MAVEN_OPTS }}
-        run: >
-          ${{ env.MAVEN_COMMAND }}
-          ${{ env.MAVEN_RUN_ARGUMENTS }}
-          ${{ env.MAVEN_PROJECTS }}
-      - name: Upload Troubleshooting Logs
-        if: failure() || cancelled()
-        uses: actions/upload-artifact@v3
-        with:
-          name: ubuntu-21-troubleshooting-logs
-          path: |
-            nifi-system-tests/nifi-system-test-suite/target/failsafe-reports/**/*.txt
-            nifi-system-tests/nifi-system-test-suite/target/surefire-reports/**/*.txt
-            nifi-system-tests/nifi-system-test-suite/target/troubleshooting/**/*
-          retention-days: 7
 
-  macos:
-    timeout-minutes: 120
-    runs-on: macos-latest
-    name: MacOS Zulu Java 21
-    steps:
-      - name: Checkout Code
-        uses: actions/checkout@v3
-      - name: Set up Java 21
-        uses: actions/setup-java@v3
-        with:
-          distribution: zulu
-          java-version: 21
-          cache: 'maven'
       - name: Set up Python 3.9
         uses: actions/setup-python@v4
         with:
           python-version: '3.9'
+
       - name: Build Dependencies
         env:
           MAVEN_OPTS: >-
@@ -149,7 +123,7 @@ jobs:
         if: failure() || cancelled()
         uses: actions/upload-artifact@v3
         with:
-          name: macos-latest-troubleshooting-logs
+          name: ${{ matrix.os }}-${{ matrix.version }}-troubleshooting-logs
           path: |
             nifi-system-tests/nifi-system-test-suite/target/failsafe-reports/**/*.txt
             nifi-system-tests/nifi-system-test-suite/target/surefire-reports/**/*.txt
diff --git a/README.md b/README.md
index 3e9e6008070f7..7dd6d2960588d 100644
--- a/README.md
+++ b/README.md
@@ -16,6 +16,8 @@
 
 [![ci-workflow](https://github.com/apache/nifi/workflows/ci-workflow/badge.svg)](https://github.com/apache/nifi/actions/workflows/ci-workflow.yml)
 [![system-tests](https://github.com/apache/nifi/workflows/system-tests/badge.svg)](https://github.com/apache/nifi/actions/workflows/system-tests.yml)
+[![integration-tests](https://github.com/apache/nifi/actions/workflows/integration-tests.yml/badge.svg)](https://github.com/apache/nifi/actions/workflows/integration-tests.yml)
+[![docker-tests](https://github.com/apache/nifi/actions/workflows/docker-tests.yml/badge.svg)](https://github.com/apache/nifi/actions/workflows/docker-tests.yml)
 [![Docker pulls](https://img.shields.io/docker/pulls/apache/nifi.svg)](https://hub.docker.com/r/apache/nifi/)
 [![Version](https://img.shields.io/maven-central/v/org.apache.nifi/nifi-utils.svg)](https://nifi.apache.org/download.html)
 [![Slack](https://img.shields.io/badge/chat-on%20Slack-brightgreen.svg)](https://s.apache.org/nifi-community-slack)
diff --git a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-client-service/src/test/java/org/apache/nifi/elasticsearch/integration/ElasticSearchClientService_IT.java b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-client-service/src/test/java/org/apache/nifi/elasticsearch/integration/ElasticSearchClientService_IT.java
index 77ac25d65f4b7..9fa4fd4521d0e 100644
--- a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-client-service/src/test/java/org/apache/nifi/elasticsearch/integration/ElasticSearchClientService_IT.java
+++ b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-client-service/src/test/java/org/apache/nifi/elasticsearch/integration/ElasticSearchClientService_IT.java
@@ -145,7 +145,7 @@ void testVerifySuccessWithApiKeyAuth() throws IOException {
     @Test
     void testVerifyFailedURL() {
         runner.disableControllerService(service);
-        runner.setProperty(service, ElasticSearchClientService.HTTP_HOSTS, "invalid");
+        runner.setProperty(service, ElasticSearchClientService.HTTP_HOSTS, "blah://invalid");
 
         final List<ConfigVerificationResult> results = service.verify(
                 new MockConfigurationContext(service, getClientServiceProperties(), runner.getProcessContext().getControllerServiceLookup(), null),