nifi/.github/workflows/system-tests.yml

132 lines
3.9 KiB
YAML
Raw Normal View History

# 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: system-tests
on:
# Run every day at 00:00
schedule:
- cron: "0 0 * * *"
push:
paths:
- '.github/workflows/system-tests.yml'
- 'c2/c2-protocol/**'
- 'nifi-system-tests/**'
- 'nifi-api/**'
- 'nifi-framework-api/**'
- 'nifi-nifi-framework-bundle/**'
- 'nifi-extension-bundles/nifi-py4j-bundle/**'
- 'nifi-stateless/**'
pull_request:
paths:
- '.github/workflows/system-tests.yml'
- 'c2/c2-protocol/**'
- 'nifi-system-tests/**'
- 'nifi-api/**'
- 'nifi-framework-api/**'
- 'nifi-nifi-framework-bundle/**'
- 'nifi-extension-bundles/nifi-py4j-bundle/**'
- 'nifi-stateless/**'
env:
DEFAULT_MAVEN_OPTS: >-
-Xmx4g
-Duser.language=en
-Duser.country=GB
-Duser.timezone=UTC
MAVEN_COMMAND: >-
./mvnw
-V
-nsu
-ntp
-ff
MAVEN_BUILD_ARGUMENTS: >-
install
-D skipTests
-am
MAVEN_RUN_ARGUMENTS: >-
verify
-P integration-tests
-D include-python-integration-tests=true
MAVEN_PROJECTS: >-
-pl :nifi-python-framework
-pl :nifi-python-extension-api
-pl :nifi-python-test-extensions
-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:
build_and_test:
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-14 ]
version: [ 21 ]
timeout-minutes: 120
runs-on: ${{ matrix.os }}
name: ${{ matrix.os }} Java ${{ matrix.version }}
steps:
- name: System Information
run: |
if [ "${{ runner.os }}" = "macOS" ]; then top -l 1 | grep PhysMem && sysctl machdep.cpu; else cat /proc/cpuinfo && cat /proc/meminfo; fi
df
- name: Checkout Code
uses: actions/checkout@v4
- name: Set up Java ${{ matrix.version }}
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: ${{ matrix.version }}
cache: 'maven'
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: '3.10'
- 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 }}
NIFI-9069 Changed framework dataflow serialization to support JSON - Changed framework so that it serializes the dataflow into a VersionedDataflow using JSON as well as XML, and prefers the JSON representation on load, if it's available. This also results in the need for the cluster protocol to exchange its representation of the dataflow to using JSON. Rather than re-implementing all of the complex logic of Flow Fingerprinting, updated to just inherit the cluster's flow. - Moved logic to synchronize Process Group with Versioned Process Group into a new ProcessGroupSynchronizer class instead of having all of the logic within StandardProcessGroup - Reworked versioned components to use an instance id. - Renamed StandardFlowSynchronizer to XmlFlowSynchronizer; introduced new StandardFlowSynchronizer that delegates to the appropriate (Xml or Versioned)FlowSynchronzer - Updated to allow import of VersionedProcessGroup even if not all bundles are available - will now use ghost components - Introduced a VersionedDataflow object to hold controller-level services, reporting tasks, parameter contexts, templates, etc. - Allow mutable requests to be made while nodes are disconnected. Also fixed issue in AbstractPolicyBasedAuthorizer that caused ClassNotFoundException / NoClassDefFoundError if the authorizations were changed and then a node attempts to rejoin the cluster. The Authorizer was attempting to use XmlUtils, which is in nifi-security-utils and so so by madking nifi-security-utils a provided dependency of nifi-framework-api, but this doesn't work, because nifi-framework-api is loaded by a higher-level classloader, so the classloader that loads AbstractPolicyBasedAuthorizer will never have the appropriate classloader to provide nifi-security-utils. Addressed this by copying the code for creating a safe document builder from XmlUtils to AbstractPolicyBasedAuthorizer. - Fixed bug that occurred when importing a Process Group that has 2 parameter contexts, one inheriting from another, where neither is pre-defined in the existing flow - Fixed bug that was encountered when Updating a Versioned Process Group where one version had a disabled processor and the other had the processor running. - Increased system-tests workflow timeout to 120 minutes - Added additional exception handling to system tests This closes #5514 Signed-off-by: David Handermann <exceptionfactory@apache.org>
2021-08-10 14:04:13 -04:00
- name: Upload Troubleshooting Logs
if: failure() || cancelled()
uses: actions/upload-artifact@v4
NIFI-9069 Changed framework dataflow serialization to support JSON - Changed framework so that it serializes the dataflow into a VersionedDataflow using JSON as well as XML, and prefers the JSON representation on load, if it's available. This also results in the need for the cluster protocol to exchange its representation of the dataflow to using JSON. Rather than re-implementing all of the complex logic of Flow Fingerprinting, updated to just inherit the cluster's flow. - Moved logic to synchronize Process Group with Versioned Process Group into a new ProcessGroupSynchronizer class instead of having all of the logic within StandardProcessGroup - Reworked versioned components to use an instance id. - Renamed StandardFlowSynchronizer to XmlFlowSynchronizer; introduced new StandardFlowSynchronizer that delegates to the appropriate (Xml or Versioned)FlowSynchronzer - Updated to allow import of VersionedProcessGroup even if not all bundles are available - will now use ghost components - Introduced a VersionedDataflow object to hold controller-level services, reporting tasks, parameter contexts, templates, etc. - Allow mutable requests to be made while nodes are disconnected. Also fixed issue in AbstractPolicyBasedAuthorizer that caused ClassNotFoundException / NoClassDefFoundError if the authorizations were changed and then a node attempts to rejoin the cluster. The Authorizer was attempting to use XmlUtils, which is in nifi-security-utils and so so by madking nifi-security-utils a provided dependency of nifi-framework-api, but this doesn't work, because nifi-framework-api is loaded by a higher-level classloader, so the classloader that loads AbstractPolicyBasedAuthorizer will never have the appropriate classloader to provide nifi-security-utils. Addressed this by copying the code for creating a safe document builder from XmlUtils to AbstractPolicyBasedAuthorizer. - Fixed bug that occurred when importing a Process Group that has 2 parameter contexts, one inheriting from another, where neither is pre-defined in the existing flow - Fixed bug that was encountered when Updating a Versioned Process Group where one version had a disabled processor and the other had the processor running. - Increased system-tests workflow timeout to 120 minutes - Added additional exception handling to system tests This closes #5514 Signed-off-by: David Handermann <exceptionfactory@apache.org>
2021-08-10 14:04:13 -04:00
with:
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
nifi-system-tests/nifi-system-test-suite/target/troubleshooting/**/*
NIFI-9069 Changed framework dataflow serialization to support JSON - Changed framework so that it serializes the dataflow into a VersionedDataflow using JSON as well as XML, and prefers the JSON representation on load, if it's available. This also results in the need for the cluster protocol to exchange its representation of the dataflow to using JSON. Rather than re-implementing all of the complex logic of Flow Fingerprinting, updated to just inherit the cluster's flow. - Moved logic to synchronize Process Group with Versioned Process Group into a new ProcessGroupSynchronizer class instead of having all of the logic within StandardProcessGroup - Reworked versioned components to use an instance id. - Renamed StandardFlowSynchronizer to XmlFlowSynchronizer; introduced new StandardFlowSynchronizer that delegates to the appropriate (Xml or Versioned)FlowSynchronzer - Updated to allow import of VersionedProcessGroup even if not all bundles are available - will now use ghost components - Introduced a VersionedDataflow object to hold controller-level services, reporting tasks, parameter contexts, templates, etc. - Allow mutable requests to be made while nodes are disconnected. Also fixed issue in AbstractPolicyBasedAuthorizer that caused ClassNotFoundException / NoClassDefFoundError if the authorizations were changed and then a node attempts to rejoin the cluster. The Authorizer was attempting to use XmlUtils, which is in nifi-security-utils and so so by madking nifi-security-utils a provided dependency of nifi-framework-api, but this doesn't work, because nifi-framework-api is loaded by a higher-level classloader, so the classloader that loads AbstractPolicyBasedAuthorizer will never have the appropriate classloader to provide nifi-security-utils. Addressed this by copying the code for creating a safe document builder from XmlUtils to AbstractPolicyBasedAuthorizer. - Fixed bug that occurred when importing a Process Group that has 2 parameter contexts, one inheriting from another, where neither is pre-defined in the existing flow - Fixed bug that was encountered when Updating a Versioned Process Group where one version had a disabled processor and the other had the processor running. - Increased system-tests workflow timeout to 120 minutes - Added additional exception handling to system tests This closes #5514 Signed-off-by: David Handermann <exceptionfactory@apache.org>
2021-08-10 14:04:13 -04:00
retention-days: 7