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 results = service.verify( new MockConfigurationContext(service, getClientServiceProperties(), runner.getProcessContext().getControllerServiceLookup(), null),