This is an automated email from the ASF dual-hosted git repository. szaszm pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit 357cc6e8ab3f39295ed92614d2818dc4870197c1 Author: Martin Zink <[email protected]> AuthorDate: Wed Mar 12 22:13:06 2025 +0100 MINIFICPP-2522 Various CI improvements Closes #1936 Signed-off-by: Marton Szasz <[email protected]> --- .github/workflows/ci.yml | 130 +++------------------ .github/workflows/verify-package.yml | 46 ++------ cmake/DockerConfig.cmake | 3 +- cmake/VerifyPackageWithDocker.cmake | 2 +- cmake/VerifyPythonCompatibility.cmake | 72 ------------ docker/test/integration/features/couchbase.feature | 8 ++ .../features/python_with_modules.feature | 30 ----- .../modbus/ReadModbusFunctions.cpp | 1 + .../modbus/ReadModbusFunctions.h | 4 +- .../tests/ConsumeWindowsEventLogTests.cpp | 2 +- 10 files changed, 38 insertions(+), 260 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c6b3d97c3..ad0938ed2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,8 +8,8 @@ env: CCACHE_DIR: ${{ GITHUB.WORKSPACE }}/.ccache jobs: macos_xcode: - name: "macos-xcode" - runs-on: macos-14 + name: "macOS 15 aarch64" + runs-on: macos-15 timeout-minutes: 180 env: MACOS_MINIFI_OPTIONS: >- @@ -92,7 +92,7 @@ jobs: run: | # Set core file size limit to unlimited ulimit -c unlimited - ctest -j4 --output-on-failure --timeout 300 + ctest --timeout 300 -j4 --output-on-failure --timeout 300 working-directory: build - name: linter run: ninja linter @@ -112,8 +112,8 @@ jobs: name: macos-binaries path: build/bin windows_VS2022: - name: "windows-2022" - runs-on: windows-2022 + name: "Windows Server 2025 x86_64" + runs-on: windows-2025 timeout-minutes: 240 env: WINDOWS_MINIFI_OPTIONS: >- @@ -228,107 +228,9 @@ jobs: with: name: cpack_error path: D:/a/nifi-minifi-cpp/nifi-minifi-cpp/build/_CPack_Packages/win64/WIX/wix.log - ubuntu_24_04: - name: "ubuntu-24.04" - runs-on: ubuntu-24.04 - timeout-minutes: 120 - env: - UBUNTU_GCC_MINIFI_OPTIONS: >- - -DCMAKE_BUILD_TYPE=Release - -DCI_BUILD=OFF - -DCUSTOM_MALLOC=OFF - -DDOCKER_BUILD_ONLY=OFF - -DDOCKER_PUSH=OFF - -DDOCKER_SKIP_TESTS=ON - -DENABLE_ALL=OFF - -DENABLE_AWS=OFF - -DENABLE_AZURE=OFF - -DENABLE_BUSTACHE=ON - -DENABLE_BZIP2=ON - -DENABLE_CIVET=ON - -DENABLE_CONTROLLER=ON - -DENABLE_COUCHBASE=OFF - -DENABLE_ELASTICSEARCH=OFF - -DENABLE_ENCRYPT_CONFIG=ON - -DENABLE_EXPRESSION_LANGUAGE=ON - -DENABLE_GCP=OFF - -DENABLE_KUBERNETES=OFF - -DENABLE_LIBARCHIVE=ON - -DENABLE_KAFKA=OFF - -DENABLE_LUA_SCRIPTING=OFF - -DENABLE_LZMA=ON - -DENABLE_MQTT=OFF - -DENABLE_OPC=OFF - -DENABLE_OPENCV=OFF - -DENABLE_OPS=ON - -DENABLE_PROCFS=OFF - -DENABLE_PROMETHEUS=ON - -DENABLE_PYTHON_SCRIPTING=OFF - -DENABLE_ROCKSDB=ON - -DENABLE_SFTP=ON - -DENABLE_SPLUNK=OFF - -DENABLE_SQL=OFF - -DENABLE_SYSTEMD=ON - -DENABLE_TEST_PROCESSORS=OFF - -DFORCE_COLORED_OUTPUT=ON - -DMINIFI_FAIL_ON_WARNINGS=ON - -DPORTABLE=ON - -DSKIP_TESTS=OFF - -DMINIFI_USE_REAL_ODBC_TEST_DRIVER=OFF - -DUSE_SHARED_LIBS=ON - steps: - - id: checkout - uses: actions/checkout@v4 - - name: cache restore - uses: actions/cache/restore@v4 - with: - path: ${{ env.CCACHE_DIR }} - key: ubuntu-24.04-ccache-${{github.ref}}-${{github.sha}} - restore-keys: | - ubuntu-24.04-ccache-${{github.ref}}- - ubuntu-24.04-ccache-refs/heads/main- - - id: install_deps - run: | - sudo apt update - sudo apt install -y ccache libfl-dev python3 python3-venv - echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV - echo -e "127.0.0.1\t$HOSTNAME" | sudo tee -a /etc/hosts > /dev/null - - name: build - run: | - python3 -m venv venv && source venv/bin/activate \ - && pip install -r requirements.txt \ - && python main.py --noninteractive --minifi-options="${UBUNTU_GCC_MINIFI_OPTIONS}" --cmake-options="-DSTRICT_GSL_CHECKS=AUDIT" - working-directory: bootstrap - - name: cache save - uses: actions/cache/save@v4 - if: always() - with: - path: ${{ env.CCACHE_DIR }} - key: ubuntu-24.04-ccache-${{github.ref}}-${{github.sha}} - - name: test - id: test - run: | - # Set core file size limit to unlimited - ulimit -c unlimited - ctest -j$(nproc) --output-on-failure - working-directory: build - - name: check-cores - if: ${{ failure() && steps.test.conclusion == 'failure' }} - run: | - if [ "$(ls -A /var/lib/apport/coredump/)" ]; then echo "CORES_EXIST=true" >> $GITHUB_ENV; fi - - uses: actions/upload-artifact@v4 - if: ${{ failure() && env.CORES_EXIST == 'true' }} - with: - name: ubuntu-coredumps - path: /var/lib/apport/coredump/ - - uses: actions/upload-artifact@v4 - if: ${{ failure() && env.CORES_EXIST == 'true' }} - with: - name: ubuntu-binaries - path: build/bin - ubuntu_22_04_clang: - name: "ubuntu-22.04-clang" - runs-on: ubuntu-22.04 + ubuntu_22_04_clang_arm: + name: "Ubuntu 22.04 clang aarch64" + runs-on: ubuntu-22.04-arm timeout-minutes: 240 env: UBUNTU_CLANG_MINIFI_OPTIONS: >- @@ -383,10 +285,10 @@ jobs: uses: actions/cache/restore@v4 with: path: ${{ env.CCACHE_DIR }} - key: ubuntu-22.04-all-clang-ccache-${{github.ref}}-${{github.sha}} + key: ubuntu-22.04-arm-all-clang-ccache-${{github.ref}}-${{github.sha}} restore-keys: | - ubuntu-22.04-all-clang-ccache-${{github.ref}}- - ubuntu-22.04-all-clang-ccache-refs/heads/main- + ubuntu-22.04-arm-all-clang-ccache-${{github.ref}}- + ubuntu-22.04-arm-all-clang-ccache-refs/heads/main- - id: install_deps run: | wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - @@ -423,13 +325,13 @@ jobs: if: always() with: path: ${{ env.CCACHE_DIR }} - key: ubuntu-22.04-all-clang-ccache-${{github.ref}}-${{github.sha}} + key: ubuntu-22.04-arm-all-clang-ccache-${{github.ref}}-${{github.sha}} - name: test id: test run: | # Set core file size limit to unlimited ulimit -c unlimited - ctest -j$(nproc) --output-on-failure + ctest --timeout 300 -j$(nproc) --output-on-failure working-directory: build - name: linter run: cmake --build . --target linter @@ -474,7 +376,7 @@ jobs: name: ubuntu-clang-binaries path: build/bin rocky: - name: "rocky" + name: "Rocky (docker) x86_64" runs-on: ubuntu-24.04 timeout-minutes: 180 steps: @@ -543,7 +445,7 @@ jobs: name: rocky-binaries path: /tmp/bin docker_build: - name: "Docker build for integration tests" + name: "Docker build for integration tests (x86_64)" runs-on: ubuntu-22.04 timeout-minutes: 180 steps: @@ -587,7 +489,7 @@ jobs: name: minifi_docker path: build/minifi_docker.tar docker_tests: - name: "Docker integration tests" + name: "Docker integration tests (x86_64)" needs: docker_build runs-on: ubuntu-24.04 timeout-minutes: 180 diff --git a/.github/workflows/verify-package.yml b/.github/workflows/verify-package.yml index b5a788324..99df50230 100644 --- a/.github/workflows/verify-package.yml +++ b/.github/workflows/verify-package.yml @@ -1,10 +1,12 @@ name: "MiNiFi-CPP Verify Package" -on: [workflow_dispatch] +on: + schedule: + - cron: '0 0 * * 0' + workflow_dispatch: env: DOCKER_CMAKE_FLAGS: -DDOCKER_VERIFY_THREAD=3 -DUSE_SHARED_LIBS= -DSTRICT_GSL_CHECKS=AUDIT -DCI_BUILD=ON -DENABLE_AWS=ON -DENABLE_KAFKA=ON -DENABLE_MQTT=ON -DENABLE_AZURE=ON -DENABLE_SQL=ON \ -DENABLE_SPLUNK=ON -DENABLE_GCP=ON -DENABLE_OPC=ON -DENABLE_PYTHON_SCRIPTING=ON -DENABLE_LUA_SCRIPTING=ON -DENABLE_KUBERNETES=ON -DENABLE_TEST_PROCESSORS=ON -DENABLE_PROMETHEUS=ON \ -DENABLE_ELASTICSEARCH=OFF -DENABLE_GRAFANA_LOKI=ON -DENABLE_COUCHBASE=ON -DDOCKER_BUILD_ONLY=ON - CCACHE_DIR: ${{ GITHUB.WORKSPACE }}/.ccache jobs: rocky-x86-64-build: name: "Build package (Rocky 8 x86_64)" @@ -13,29 +15,13 @@ jobs: steps: - id: checkout uses: actions/checkout@v4 - - name: cache restore - uses: actions/cache/restore@v4 - with: - path: ~/.ccache - key: verify-package-ccache-${{github.ref}}-${{github.sha}} - restore-keys: | - verify-package-ccache-${{github.ref}}- - verify-package-ccache-refs/heads/main- - id: install_deps run: | sudo apt update - sudo apt install -y ccache cmake - echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV + sudo apt install -y cmake - id: build run: | - if [ -d ~/.ccache ]; then mv ~/.ccache .; fi - mkdir build && cd build && cmake ${DOCKER_CMAKE_FLAGS} -DDOCKER_CCACHE_DUMP_LOCATION=${{ env.CCACHE_DIR }} .. && make rocky - - name: cache save - uses: actions/cache/save@v4 - if: always() - with: - path: ${{ env.CCACHE_DIR }} - key: verify-package-ccache-${{github.ref}}-${{github.sha}} + mkdir build && cd build && cmake ${DOCKER_CMAKE_FLAGS} .. && make rocky - uses: actions/upload-artifact@v4 with: name: minifi-x86-64-tar @@ -49,29 +35,13 @@ jobs: steps: - id: checkout uses: actions/checkout@v4 - - name: cache restore - uses: actions/cache/restore@v4 - with: - path: ~/.ccache - key: verify-package-arm-ccache-${{github.ref}}-${{github.sha}} - restore-keys: | - verify-package-arm-ccache-${{github.ref}}- - verify-package-arm-ccache-refs/heads/main- - id: install_deps run: | sudo apt update - sudo apt install -y ccache cmake - echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV + sudo apt install -y cmake - id: build run: | - if [ -d ~/.ccache ]; then mv ~/.ccache .; fi - mkdir build && cd build && cmake ${DOCKER_CMAKE_FLAGS} -DDOCKER_CCACHE_DUMP_LOCATION=${{ env.CCACHE_DIR }} .. && make rocky - - name: cache save - uses: actions/cache/save@v4 - if: always() - with: - path: ${{ env.CCACHE_DIR }} - key: verify-package-arm-ccache-${{github.ref}}-${{github.sha}} + mkdir build && cd build && cmake ${DOCKER_CMAKE_FLAGS} .. && make rocky - uses: actions/upload-artifact@v4 with: name: minifi-aarch64-tar diff --git a/cmake/DockerConfig.cmake b/cmake/DockerConfig.cmake index 956d0c097..d1d88d65e 100644 --- a/cmake/DockerConfig.cmake +++ b/cmake/DockerConfig.cmake @@ -152,7 +152,7 @@ if (EXISTS ${CMAKE_SOURCE_DIR}/docker/test/integration/features) endif() endforeach() - set(DISABLED_TAGS "SKIP_CI,NEEDS_NUMPY") + set(DISABLED_TAGS "SKIP_CI") add_custom_target( docker-verify @@ -172,5 +172,4 @@ function(CREATE_DOCKER_TARGET_FROM_ROCKY_PACKAGE BASE_IMAGE TAG_PREFIX INSTALL_P ${CMAKE_BINARY_DIR}) endfunction() -include(VerifyPythonCompatibility) include(VerifyPackageWithDocker) diff --git a/cmake/VerifyPackageWithDocker.cmake b/cmake/VerifyPackageWithDocker.cmake index af201791a..0a76710f8 100644 --- a/cmake/VerifyPackageWithDocker.cmake +++ b/cmake/VerifyPackageWithDocker.cmake @@ -28,7 +28,7 @@ function(ADD_PACKAGE_VERIFY TAG_PREFIX) endif() endforeach() - set(DISABLED_TAGS "SKIP_CI,NEEDS_NUMPY") + set(DISABLED_TAGS "SKIP_CI") add_custom_target( docker-verify-${TAG_PREFIX} diff --git a/cmake/VerifyPythonCompatibility.cmake b/cmake/VerifyPythonCompatibility.cmake deleted file mode 100644 index a8b11f5b0..000000000 --- a/cmake/VerifyPythonCompatibility.cmake +++ /dev/null @@ -1,72 +0,0 @@ -# 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. - -if (NOT (ENABLE_ALL OR ENABLE_PYTHON_SCRIPTING)) - return() -endif() - -set(MINIFI_VERSION_STR ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}) - -function(ADD_DOCKER_VERIFY_PYTHON TAG_PREFIX HAS_MODULES) - if (HAS_MODULES) - add_custom_target( - docker-verify-${TAG_PREFIX} - COMMAND ${CMAKE_SOURCE_DIR}/docker/DockerVerify.sh --image-tag-prefix ${TAG_PREFIX} ${MINIFI_VERSION_STR} ENABLE_PYTHON_SCRIPTING) - else() - add_custom_target( - docker-verify-${TAG_PREFIX} - COMMAND ${CMAKE_SOURCE_DIR}/docker/DockerVerify.sh --image-tag-prefix ${TAG_PREFIX} ${MINIFI_VERSION_STR} ENABLE_PYTHON_SCRIPTING --tags_to_exclude NEEDS_NUMPY) - endif() -endfunction() - -function(ADD_CONDA_TO_DOCKER TAG_PREFIX) - add_custom_target( - conda_${TAG_PREFIX}_from_rocky_package - COMMAND DOCKER_BUILDKIT=1 docker build - --build-arg BASE_IMAGE=apacheminificpp:${TAG_PREFIX}-${MINIFI_VERSION_STR} - -t apacheminificpp:conda_${TAG_PREFIX}-${MINIFI_VERSION_STR} - -f ${CMAKE_SOURCE_DIR}/docker/python-verify/conda.Dockerfile - ${CMAKE_BINARY_DIR}) -endfunction() - -function(ADD_VENV_TO_DOCKER TAG_PREFIX) - add_custom_target( - venv_${TAG_PREFIX}_from_rocky_package - COMMAND DOCKER_BUILDKIT=1 docker build - --build-arg BASE_IMAGE=apacheminificpp:${TAG_PREFIX}-${MINIFI_VERSION_STR} - -t apacheminificpp:venv_${TAG_PREFIX}-${MINIFI_VERSION_STR} - -f ${CMAKE_SOURCE_DIR}/docker/python-verify/venv.Dockerfile - ${CMAKE_BINARY_DIR}) -endfunction() - - -CREATE_DOCKER_TARGET_FROM_ROCKY_PACKAGE(debian:bullseye patched_bullseye_py "apt update \\&\\& apt install -y patchelf libpython3-dev python3-venv python3-pip wget \\&\\& patchelf /opt/minifi/minifi-current/extensions/libminifi-python-script-extension.so --replace-needed libpython3.so libpython3.9.so") -CREATE_DOCKER_TARGET_FROM_ROCKY_PACKAGE(ubuntu:jammy patched_jammy_py "apt update \\&\\& apt install -y patchelf libpython3.10-dev python3.10-venv python3-pip wget \\&\\& patchelf /opt/minifi/minifi-current/extensions/libminifi-python-script-extension.so --replace-needed libpython3.so libpython3.10.so.1.0") -CREATE_DOCKER_TARGET_FROM_ROCKY_PACKAGE(rockylinux:8 rocky8_py "yum install -y python3-libs python3-pip python3-devel gcc-c++ wget") -CREATE_DOCKER_TARGET_FROM_ROCKY_PACKAGE(rockylinux:9 rocky9_py "yum install -y python3-libs python3-pip wget") -CREATE_DOCKER_TARGET_FROM_ROCKY_PACKAGE(ubuntu:jammy jammy_py "apt update \\&\\& apt install -y wget") -ADD_CONDA_TO_DOCKER(jammy_py) -ADD_VENV_TO_DOCKER(rocky9_py) - -if (EXISTS ${CMAKE_SOURCE_DIR}/docker/test/integration/features) - ADD_DOCKER_VERIFY_PYTHON(rocky8_py FALSE) - ADD_DOCKER_VERIFY_PYTHON(rocky9_py FALSE) - ADD_DOCKER_VERIFY_PYTHON(patched_jammy_py FALSE) - ADD_DOCKER_VERIFY_PYTHON(patched_bullseye_py FALSE) - ADD_DOCKER_VERIFY_PYTHON(conda_jammy_py TRUE) - ADD_DOCKER_VERIFY_PYTHON(venv_rocky9_py TRUE) -endif() diff --git a/docker/test/integration/features/couchbase.feature b/docker/test/integration/features/couchbase.feature index 7b74a6c3d..90cb0df0d 100644 --- a/docker/test/integration/features/couchbase.feature +++ b/docker/test/integration/features/couchbase.feature @@ -29,6 +29,7 @@ Feature: Executing Couchbase operations from MiNiFi-C++ And a CouchbaseClusterService is setup up with the name "CouchbaseClusterService" And the "success" relationship of the GetFile processor is connected to the PutCouchbaseKey + And the "failure" relationship of the PutCouchbaseKey processor is connected to the PutCouchbaseKey And the "success" relationship of the PutCouchbaseKey processor is connected to the LogAttribute When a Couchbase server is started @@ -53,6 +54,7 @@ Feature: Executing Couchbase operations from MiNiFi-C++ And a CouchbaseClusterService is setup up with the name "CouchbaseClusterService" And the "success" relationship of the GetFile processor is connected to the PutCouchbaseKey + And the "failure" relationship of the PutCouchbaseKey processor is connected to the PutCouchbaseKey And the "success" relationship of the PutCouchbaseKey processor is connected to the LogAttribute When a Couchbase server is started @@ -80,6 +82,7 @@ Feature: Executing Couchbase operations from MiNiFi-C++ And a CouchbaseClusterService is setup up with the name "CouchbaseClusterService" And the "success" relationship of the GetFile processor is connected to the PutCouchbaseKey + And the "failure" relationship of the PutCouchbaseKey processor is connected to the PutCouchbaseKey And the "success" relationship of the PutCouchbaseKey processor is connected to the GetCouchbaseKey And the "success" relationship of the GetCouchbaseKey processor is connected to the PutFile And the "success" relationship of the PutFile processor is connected to the LogAttribute @@ -109,6 +112,7 @@ Feature: Executing Couchbase operations from MiNiFi-C++ And a CouchbaseClusterService is setup up with the name "CouchbaseClusterService" And the "success" relationship of the GetFile processor is connected to the PutCouchbaseKey + And the "failure" relationship of the PutCouchbaseKey processor is connected to the PutCouchbaseKey And the "success" relationship of the PutCouchbaseKey processor is connected to the GetCouchbaseKey And the "success" relationship of the GetCouchbaseKey processor is connected to the PutFile And the "success" relationship of the PutFile processor is connected to the LogAttribute @@ -139,6 +143,7 @@ Feature: Executing Couchbase operations from MiNiFi-C++ And a CouchbaseClusterService is setup up with the name "CouchbaseClusterService" And the "success" relationship of the GetFile processor is connected to the PutCouchbaseKey + And the "failure" relationship of the PutCouchbaseKey processor is connected to the PutCouchbaseKey And the "success" relationship of the PutCouchbaseKey processor is connected to the GetCouchbaseKey And the "success" relationship of the GetCouchbaseKey processor is connected to the PutFile And the "success" relationship of the PutFile processor is connected to the LogAttribute @@ -167,6 +172,7 @@ Feature: Executing Couchbase operations from MiNiFi-C++ And a CouchbaseClusterService is setup up with the name "CouchbaseClusterService" And the "success" relationship of the GetFile processor is connected to the PutCouchbaseKey + And the "failure" relationship of the PutCouchbaseKey processor is connected to the PutCouchbaseKey And the "success" relationship of the PutCouchbaseKey processor is connected to the GetCouchbaseKey When a Couchbase server is started @@ -190,6 +196,7 @@ Feature: Executing Couchbase operations from MiNiFi-C++ And a CouchbaseClusterService is set up up with SSL connection with the name "CouchbaseClusterService" And the "success" relationship of the GetFile processor is connected to the PutCouchbaseKey + And the "failure" relationship of the PutCouchbaseKey processor is connected to the PutCouchbaseKey And the "success" relationship of the PutCouchbaseKey processor is connected to the GetCouchbaseKey And the "success" relationship of the GetCouchbaseKey processor is connected to the PutFile And the "success" relationship of the PutFile processor is connected to the LogAttribute @@ -218,6 +225,7 @@ Feature: Executing Couchbase operations from MiNiFi-C++ And a CouchbaseClusterService is setup up using mTLS authentication with the name "CouchbaseClusterService" And the "success" relationship of the GetFile processor is connected to the PutCouchbaseKey + And the "failure" relationship of the PutCouchbaseKey processor is connected to the PutCouchbaseKey And the "success" relationship of the PutCouchbaseKey processor is connected to the GetCouchbaseKey And the "success" relationship of the GetCouchbaseKey processor is connected to the PutFile And the "success" relationship of the PutFile processor is connected to the LogAttribute diff --git a/docker/test/integration/features/python_with_modules.feature b/docker/test/integration/features/python_with_modules.feature deleted file mode 100644 index 85272a7aa..000000000 --- a/docker/test/integration/features/python_with_modules.feature +++ /dev/null @@ -1,30 +0,0 @@ -# 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. - -@ENABLE_PYTHON_SCRIPTING -@NEEDS_NUMPY -Feature: MiNiFi can use python modules - Background: - Given the content of "/tmp/output" is monitored - - Scenario: MiNiFi can use python modules - Given the example MiNiFi python processors are present - And a GaussianDistributionWithNumpy processor - And the scheduling period of the GaussianDistributionWithNumpy processor is set to "10 min" - And a PutFile processor with the "Directory" property set to "/tmp/output" - And the "success" relationship of the GaussianDistributionWithNumpy processor is connected to the PutFile - - When the MiNiFi instance starts up - Then 1 flowfile is placed in the monitored directory in 20 seconds diff --git a/extensions/standard-processors/modbus/ReadModbusFunctions.cpp b/extensions/standard-processors/modbus/ReadModbusFunctions.cpp index 0eaf49e47..6ade0dcf3 100644 --- a/extensions/standard-processors/modbus/ReadModbusFunctions.cpp +++ b/extensions/standard-processors/modbus/ReadModbusFunctions.cpp @@ -21,6 +21,7 @@ #include <range/v3/view/drop.hpp> namespace org::apache::nifi::minifi::modbus { + std::vector<std::byte> ReadModbusFunction::requestBytes() const { constexpr std::array modbus_service_protocol_identifier = {std::byte{0}, std::byte{0}}; const auto pdu = rawPdu(); diff --git a/extensions/standard-processors/modbus/ReadModbusFunctions.h b/extensions/standard-processors/modbus/ReadModbusFunctions.h index 8433c7352..cf6be3061 100644 --- a/extensions/standard-processors/modbus/ReadModbusFunctions.h +++ b/extensions/standard-processors/modbus/ReadModbusFunctions.h @@ -69,7 +69,7 @@ class ReadModbusFunction { const uint8_t unit_id_; }; -class ReadCoilStatus final : public ReadModbusFunction { +class ReadCoilStatus : public ReadModbusFunction { public: ReadCoilStatus(const uint16_t transaction_id, const uint8_t unit_id, const uint16_t starting_address, const uint16_t number_of_points) : ReadModbusFunction(transaction_id, unit_id), @@ -94,7 +94,7 @@ class ReadCoilStatus final : public ReadModbusFunction { }; template<typename T> -class ReadRegisters final : public ReadModbusFunction { +class ReadRegisters : public ReadModbusFunction { public: ReadRegisters(const RegisterType register_type, const uint16_t transaction_id, const uint8_t unit_id, const uint16_t starting_address, const uint16_t number_of_points) : ReadModbusFunction(transaction_id, unit_id), diff --git a/extensions/windows-event-log/tests/ConsumeWindowsEventLogTests.cpp b/extensions/windows-event-log/tests/ConsumeWindowsEventLogTests.cpp index e2061d644..63e7fed08 100644 --- a/extensions/windows-event-log/tests/ConsumeWindowsEventLogTests.cpp +++ b/extensions/windows-event-log/tests/ConsumeWindowsEventLogTests.cpp @@ -359,7 +359,7 @@ TEST_CASE("ConsumeWindowsEventLog prints events in plain text correctly", "[onTr CHECK(event.find(R"(Date: )") != std::string::npos); CHECK(event.find(R"(Record ID: )") != std::string::npos); CHECK(event.find(R"(Event ID: 14985)") != std::string::npos); - CHECK(event.find(R"(Task Category: N/A)") != std::string::npos); + CHECK((event.find(R"(Task Category: N/A)") != std::string::npos || event.find(R"(Task Category: None)") != std::string::npos)); CHECK(event.find(R"(Level: Information)") != std::string::npos); CHECK(event.find(R"(Keywords: Classic)") != std::string::npos); CHECK(event.find(R"(User: N/A)") != std::string::npos);
