You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by fg...@apache.org on 2024/11/12 20:02:01 UTC
(nifi-minifi-cpp) 02/03: MINIFICPP-2477 Valgrind CI
This is an automated email from the ASF dual-hosted git repository.
fgerlits pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit 58dc932519c635244e44692d0a07224ab0cac143
Author: Martin Zink <ma...@apache.org>
AuthorDate: Tue Oct 15 14:34:17 2024 +0200
MINIFICPP-2477 Valgrind CI
Signed-off-by: Ferenc Gerlits <fg...@gmail.com>
This closes #1886
---
.github/workflows/memcheck_ci.yml | 54 ++++++++++++++++++++++
CMakeLists.txt | 4 ++
extensions/aws/tests/CMakeLists.txt | 1 +
extensions/azure/tests/CMakeLists.txt | 1 +
extensions/bustache/tests/CMakeLists.txt | 1 +
extensions/civetweb/tests/CMakeLists.txt | 1 +
extensions/elasticsearch/tests/CMakeLists.txt | 1 +
extensions/execute-process/test/CMakeLists.txt | 2 +
.../expression-language/tests/CMakeLists.txt | 1 +
extensions/grafana-loki/tests/CMakeLists.txt | 1 +
extensions/kubernetes/tests/CMakeLists.txt | 1 +
extensions/librdkafka/tests/CMakeLists.txt | 1 +
extensions/lua/tests/CMakeLists.txt | 1 +
extensions/mqtt/tests/CMakeLists.txt | 1 +
extensions/opencv/tests/CMakeLists.txt | 1 +
extensions/pdh/tests/CMakeLists.txt | 1 +
extensions/procfs/tests/CMakeLists.txt | 1 +
extensions/prometheus/tests/CMakeLists.txt | 1 +
extensions/script/ExecuteScript.h | 3 ++
19 files changed, 78 insertions(+)
diff --git a/.github/workflows/memcheck_ci.yml b/.github/workflows/memcheck_ci.yml
new file mode 100644
index 000000000..a31471623
--- /dev/null
+++ b/.github/workflows/memcheck_ci.yml
@@ -0,0 +1,54 @@
+name: "MiNiFi-CPP memcheck"
+on: [workflow_dispatch]
+env:
+ CMAKE_FLAGS: >-
+ -DCMAKE_BUILD_TYPE=Debug
+ -DCI_BUILD=ON
+ -DDOCKER_BUILD_ONLY=OFF
+ -DENABLE_ALL=ON
+ -DMINIFI_FAIL_ON_WARNINGS=ON
+ -DPORTABLE=ON
+ -DUSE_SHARED_LIBS=ON
+ SCCACHE_GHA_ENABLE: true
+ CCACHE_DIR: ${{ GITHUB.WORKSPACE }}/.ccache
+jobs:
+ ubuntu_24_04:
+ name: "valgrind on ubuntu-24.04"
+ runs-on: ubuntu-24.04
+ timeout-minutes: 120
+ steps:
+ - id: checkout
+ uses: actions/checkout@v4
+ - name: cache restore
+ uses: actions/cache/restore@v4
+ with:
+ path: ${{ env.CCACHE_DIR }}
+ key: memcheck-ccache-${{github.ref}}-${{github.sha}}
+ restore-keys: |
+ memcheck-ccache-${{github.ref}}-
+ memcheck-ccache-refs/heads/main-
+ - id: install_deps
+ run: |
+ sudo apt update
+ sudo apt install -y ccache libfl-dev python3 python3-venv valgrind
+ 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="${CMAKE_FLAGS}"
+ working-directory: bootstrap
+ - name: cache save
+ uses: actions/cache/save@v4
+ if: always()
+ with:
+ path: ${{ env.CCACHE_DIR }}
+ key: memcheck-ccache-${{github.ref}}-${{github.sha}}
+ - name: test
+ id: test
+ run: |
+ # Set core file size limit to unlimited
+ ulimit -c unlimited
+ ctest -j$(nproc) -L memchecked -T memcheck
+ working-directory: build
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9b31d6c0e..41247d988 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -670,6 +670,10 @@ include(CPack)
### include modules
if (NOT SKIP_TESTS)
+ enable_testing()
+ set(BUILD_TESTING ON)
+ set(CTEST_NEW_FORMAT true)
+ include(CTest)
include(BuildTests)
add_subdirectory("${TEST_DIR}/libtest")
diff --git a/extensions/aws/tests/CMakeLists.txt b/extensions/aws/tests/CMakeLists.txt
index d26c0ebee..542211aee 100644
--- a/extensions/aws/tests/CMakeLists.txt
+++ b/extensions/aws/tests/CMakeLists.txt
@@ -35,5 +35,6 @@ FOREACH(testfile ${AWS_INTEGRATION_TESTS})
target_link_libraries(${testfilename} minifi-expression-language-extensions)
MATH(EXPR AWS_TEST_COUNT "${AWS_TEST_COUNT}+1")
add_test(NAME "${testfilename}" COMMAND "${testfilename}" WORKING_DIRECTORY ${TEST_DIR})
+ set_tests_properties("${testfilename}" PROPERTIES LABELS "aws")
ENDFOREACH()
message("-- Finished building ${AWS_TEST_COUNT} AWS related test file(s)...")
diff --git a/extensions/azure/tests/CMakeLists.txt b/extensions/azure/tests/CMakeLists.txt
index 730cf3407..55ec534a2 100644
--- a/extensions/azure/tests/CMakeLists.txt
+++ b/extensions/azure/tests/CMakeLists.txt
@@ -35,5 +35,6 @@ FOREACH(testfile ${AZURE_INTEGRATION_TESTS})
target_link_libraries(${testfilename} minifi-expression-language-extensions)
MATH(EXPR AZURE_TEST_COUNT "${AZURE_TEST_COUNT}+1")
add_test(NAME "${testfilename}" COMMAND "${testfilename}" WORKING_DIRECTORY ${TEST_DIR})
+ set_tests_properties("${testfilename}" PROPERTIES LABELS "azure;memchecked")
ENDFOREACH()
message("-- Finished building ${AZURE_TEST_COUNT} Azure related test file(s)...")
diff --git a/extensions/bustache/tests/CMakeLists.txt b/extensions/bustache/tests/CMakeLists.txt
index 4f493df65..eb689ec2a 100644
--- a/extensions/bustache/tests/CMakeLists.txt
+++ b/extensions/bustache/tests/CMakeLists.txt
@@ -33,5 +33,6 @@ FOREACH(testfile ${BUSTACHE_INTEGRATION_TESTS})
target_link_libraries(${testfilename} Catch2WithMain)
MATH(EXPR BUSTACHE-EXTENSIONS_TEST_COUNT "${BUSTACHE-EXTENSIONS_TEST_COUNT}+1")
add_test(NAME "${testfilename}" COMMAND "${testfilename}" WORKING_DIRECTORY ${TEST_DIR})
+ set_tests_properties("${testfilename}" PROPERTIES LABELS "bustache;memchecked")
ENDFOREACH()
message("-- Finished building ${BUSTACHE-EXTENSIONS_TEST_COUNT} Bustache related test file(s)...")
diff --git a/extensions/civetweb/tests/CMakeLists.txt b/extensions/civetweb/tests/CMakeLists.txt
index 95f7af7d8..6d9ad431a 100644
--- a/extensions/civetweb/tests/CMakeLists.txt
+++ b/extensions/civetweb/tests/CMakeLists.txt
@@ -40,5 +40,6 @@ FOREACH(testfile ${CIVETWEB_INTEGRATION_TESTS})
"${CMAKE_SOURCE_DIR}/extensions/civetweb/tests/resources"
"$<TARGET_FILE_DIR:${testfilename}>/resources"
)
+ set_tests_properties("${testfilename}" PROPERTIES LABELS "civetweb")
ENDFOREACH()
message("-- Finished building ${CIVETWEB-EXTENSIONS_TEST_COUNT} civetweb related test file(s)...")
diff --git a/extensions/elasticsearch/tests/CMakeLists.txt b/extensions/elasticsearch/tests/CMakeLists.txt
index 58a212013..6fbd8b07b 100644
--- a/extensions/elasticsearch/tests/CMakeLists.txt
+++ b/extensions/elasticsearch/tests/CMakeLists.txt
@@ -34,5 +34,6 @@ FOREACH(testfile ${ELASTICSEARCH_TESTS})
target_link_libraries(${testfilename} minifi-standard-processors)
MATH(EXPR ELASTICSEARCH_TEST_COUNT "${ELASTICSEARCH_TEST_COUNT}+1")
add_test(NAME "${testfilename}" COMMAND "${testfilename}" WORKING_DIRECTORY ${TEST_DIR})
+ set_tests_properties("${testfilename}" PROPERTIES LABELS "elasticsearch;memchecked")
ENDFOREACH()
message("-- Finished building ${ELASTICSEARCH_TEST_COUNT} Elasticsearch related test file(s)...")
diff --git a/extensions/execute-process/test/CMakeLists.txt b/extensions/execute-process/test/CMakeLists.txt
index 05d5f9348..570410d07 100644
--- a/extensions/execute-process/test/CMakeLists.txt
+++ b/extensions/execute-process/test/CMakeLists.txt
@@ -25,6 +25,8 @@ add_minifi_executable(ExecuteProcessTests ExecuteProcessTests.cpp)
target_link_libraries(ExecuteProcessTests minifi-execute-process minifi-standard-processors Catch2WithMain)
target_include_directories(ExecuteProcessTests PRIVATE BEFORE "${CMAKE_SOURCE_DIR}/libminifi/test")
add_test(NAME ExecuteProcessTests COMMAND ExecuteProcessTests WORKING_DIRECTORY ${TEST_DIR})
+set_tests_properties(ExecuteProcessTests PROPERTIES LABELS "execute-process;memchecked")
+
createTests(ExecuteProcessTests)
add_dependencies(ExecuteProcessTests EchoParameters)
diff --git a/extensions/expression-language/tests/CMakeLists.txt b/extensions/expression-language/tests/CMakeLists.txt
index 2f96ee3df..d01c18b65 100644
--- a/extensions/expression-language/tests/CMakeLists.txt
+++ b/extensions/expression-language/tests/CMakeLists.txt
@@ -36,6 +36,7 @@ FOREACH(testfile ${EXPRESSION_LANGUAGE_TESTS})
MATH(EXPR EXTENSIONS_TEST_COUNT "${EXTENSIONS_TEST_COUNT}+1")
add_test(NAME ${testfilename} COMMAND ${testfilename} WORKING_DIRECTORY ${TEST_DIR})
+ set_tests_properties("${testfilename}" PROPERTIES LABELS "expression-language;memchecked")
ENDFOREACH()
diff --git a/extensions/grafana-loki/tests/CMakeLists.txt b/extensions/grafana-loki/tests/CMakeLists.txt
index 8aa24fd88..8c1738358 100644
--- a/extensions/grafana-loki/tests/CMakeLists.txt
+++ b/extensions/grafana-loki/tests/CMakeLists.txt
@@ -40,5 +40,6 @@ FOREACH(testfile ${GRAFANA_LOKI_TESTS})
target_link_libraries(${testfilename} minifi-standard-processors)
MATH(EXPR GRAFANA_LOKI_TEST_COUNT "${GRAFANA_LOKI_TEST_COUNT}+1")
add_test(NAME "${testfilename}" COMMAND "${testfilename}" WORKING_DIRECTORY ${TEST_DIR})
+ set_tests_properties("${testfilename}" PROPERTIES LABELS "grafana-loki;memchecked")
ENDFOREACH()
message("-- Finished building ${GRAFANA_LOKI_TEST_COUNT} Grafana Loki related test file(s)...")
diff --git a/extensions/kubernetes/tests/CMakeLists.txt b/extensions/kubernetes/tests/CMakeLists.txt
index d5dd9abca..d8b80e342 100644
--- a/extensions/kubernetes/tests/CMakeLists.txt
+++ b/extensions/kubernetes/tests/CMakeLists.txt
@@ -29,5 +29,6 @@ FOREACH(TEST_FILE ${KUBERNETES_UNIT_TESTS})
createTests("${TEST_TARGET}")
add_test(NAME ${TEST_TARGET} COMMAND "${TEST_TARGET}" WORKING_DIRECTORY "${TEST_DIR}")
MATH(EXPR KUBERNETES_UNIT_TEST_COUNT "${KUBERNETES_UNIT_TEST_COUNT}+1")
+ set_tests_properties("${TEST_TARGET}" PROPERTIES LABELS "kubernetes;memchecked")
ENDFOREACH()
message("-- Finished building ${KUBERNETES_UNIT_TEST_COUNT} Kubernetes related test file(s)...")
diff --git a/extensions/librdkafka/tests/CMakeLists.txt b/extensions/librdkafka/tests/CMakeLists.txt
index 7f8053884..8bf4579f1 100644
--- a/extensions/librdkafka/tests/CMakeLists.txt
+++ b/extensions/librdkafka/tests/CMakeLists.txt
@@ -30,5 +30,6 @@ FOREACH(testfile ${KAFKA_INTEGRATION_TESTS})
target_link_libraries(${testfilename} minifi-standard-processors)
MATH(EXPR EXTENSIONS_TEST_COUNT "${EXTENSIONS_TEST_COUNT}+1")
add_test(NAME "${testfilename}" COMMAND "${testfilename}" WORKING_DIRECTORY ${TEST_DIR})
+ set_tests_properties("${testfilename}" PROPERTIES LABELS "librdkafka;memchecked")
ENDFOREACH()
message("-- Finished building ${KAFKA-EXTENSIONS_TEST_COUNT} Lib Kafka related test file(s)...")
diff --git a/extensions/lua/tests/CMakeLists.txt b/extensions/lua/tests/CMakeLists.txt
index 38d697990..abe00a1cb 100644
--- a/extensions/lua/tests/CMakeLists.txt
+++ b/extensions/lua/tests/CMakeLists.txt
@@ -31,6 +31,7 @@ FOREACH(testfile ${EXECUTESCRIPT_LUA_TESTS})
createTests("${testfilename}")
MATH(EXPR EXTENSIONS_TEST_COUNT "${EXTENSIONS_TEST_COUNT}+1")
add_test(NAME "${testfilename}" COMMAND "${testfilename}" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+ set_tests_properties("${testfilename}" PROPERTIES LABELS "lua;memchecked")
ENDFOREACH()
copyTestResources(${CMAKE_CURRENT_SOURCE_DIR}/test_lua_scripts/ ${CMAKE_BINARY_DIR}/bin/resources/test_lua_scripts/)
diff --git a/extensions/mqtt/tests/CMakeLists.txt b/extensions/mqtt/tests/CMakeLists.txt
index d5b408a64..0969fe635 100644
--- a/extensions/mqtt/tests/CMakeLists.txt
+++ b/extensions/mqtt/tests/CMakeLists.txt
@@ -29,6 +29,7 @@ FOREACH(testfile ${MQTT_TESTS})
target_link_libraries(${testfilename} minifi-mqtt-extensions)
target_link_libraries(${testfilename} minifi-standard-processors)
add_test(NAME "${testfilename}" COMMAND "${testfilename}" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+ set_tests_properties("${testfilename}" PROPERTIES LABELS "mqtt;memchecked")
ENDFOREACH()
list(LENGTH MQTT_TESTS TEST_COUNT)
diff --git a/extensions/opencv/tests/CMakeLists.txt b/extensions/opencv/tests/CMakeLists.txt
index d095c7e9a..870f29c0e 100644
--- a/extensions/opencv/tests/CMakeLists.txt
+++ b/extensions/opencv/tests/CMakeLists.txt
@@ -32,5 +32,6 @@ FOREACH(testfile ${OPENCV_TESTS})
MATH(EXPR OPENCV_TEST_COUNT "${OPENCV_TEST_COUNT}+1")
add_test(NAME "${testfilename}" COMMAND "${testfilename}" WORKING_DIRECTORY ${TEST_DIR})
target_link_libraries(${testfilename} Catch2WithMain)
+ set_tests_properties("${testfilename}" PROPERTIES LABELS "opencv;memchecked")
ENDFOREACH()
message("-- Finished building ${OPENCV_TEST_COUNT} OpenCV related test file(s)...")
diff --git a/extensions/pdh/tests/CMakeLists.txt b/extensions/pdh/tests/CMakeLists.txt
index 63686553f..2ff8ddee5 100644
--- a/extensions/pdh/tests/CMakeLists.txt
+++ b/extensions/pdh/tests/CMakeLists.txt
@@ -31,5 +31,6 @@ FOREACH(testfile ${PDH_TESTS})
target_link_libraries(${testfilename} minifi-standard-processors)
MATH(EXPR PDH_TEST_COUNT "${PDH_TEST_COUNT}+1")
add_test(NAME "${testfilename}" COMMAND "${testfilename}" WORKING_DIRECTORY ${TEST_DIR})
+ set_tests_properties("${testfilename}" PROPERTIES LABELS "phd;memchecked")
ENDFOREACH()
message("-- Finished building ${PDH_TEST_COUNT} PDH related test file(s)...")
diff --git a/extensions/procfs/tests/CMakeLists.txt b/extensions/procfs/tests/CMakeLists.txt
index ad51a869d..054bce8d6 100644
--- a/extensions/procfs/tests/CMakeLists.txt
+++ b/extensions/procfs/tests/CMakeLists.txt
@@ -32,6 +32,7 @@ FOREACH(testfile ${PROCFS_TESTS})
target_link_libraries(${testfilename} minifi-standard-processors)
MATH(EXPR PROCFS_TEST_COUNT "${PROCFS_TEST_COUNT}+1")
add_test(NAME "${testfilename}" COMMAND "${testfilename}")
+ set_tests_properties("${testfilename}" PROPERTIES LABELS "procfs;memchecked")
ENDFOREACH()
file(COPY "${CMAKE_SOURCE_DIR}/extensions/procfs/tests/mockprocfs_t0" DESTINATION "${CMAKE_BINARY_DIR}/bin/procfs-test/")
file(COPY "${CMAKE_SOURCE_DIR}/extensions/procfs/tests/mockprocfs_t1" DESTINATION "${CMAKE_BINARY_DIR}/bin/procfs-test/")
diff --git a/extensions/prometheus/tests/CMakeLists.txt b/extensions/prometheus/tests/CMakeLists.txt
index 29b3185c4..72420828f 100644
--- a/extensions/prometheus/tests/CMakeLists.txt
+++ b/extensions/prometheus/tests/CMakeLists.txt
@@ -29,5 +29,6 @@ FOREACH(testfile ${PROMETHEUS_TESTS})
target_link_libraries(${testfilename} minifi-prometheus)
MATH(EXPR PROMETHEUS_TEST_COUNT "${PROMETHEUS_TEST_COUNT}+1")
add_test(NAME "${testfilename}" COMMAND "${testfilename}")
+ set_tests_properties("${testfilename}" PROPERTIES LABELS "prometheus;memchecked")
ENDFOREACH()
message("-- Finished building ${PROMETHEUS_TEST_COUNT} Prometheus related test file(s)...")
diff --git a/extensions/script/ExecuteScript.h b/extensions/script/ExecuteScript.h
index 6a38651ee..25a843dfb 100644
--- a/extensions/script/ExecuteScript.h
+++ b/extensions/script/ExecuteScript.h
@@ -94,6 +94,9 @@ class ExecuteScript : public core::Processor {
void initialize() override;
void onSchedule(core::ProcessContext& context, core::ProcessSessionFactory& session_factory) override;
void onTrigger(core::ProcessContext& context, core::ProcessSession& session) override;
+ void notifyStop() override {
+ script_executor_.reset();
+ }
private:
std::shared_ptr<core::logging::Logger> logger_ = core::logging::LoggerFactory<ExecuteScript>::getLogger(uuid_);