MINIFICPP-2718 Windows based docker tests#2133
Open
martinzink wants to merge 7 commits intoapache:mainfrom
Open
MINIFICPP-2718 Windows based docker tests#2133martinzink wants to merge 7 commits intoapache:mainfrom
martinzink wants to merge 7 commits intoapache:mainfrom
Conversation
47057e5 to
721de91
Compare
szaszm
reviewed
Mar 11, 2026
extensions/couchbase/tests/features/containers/couchbase_server_container.py
Outdated
Show resolved
Hide resolved
behave_framework/src/minifi_test_framework/containers/container_windows.py
Outdated
Show resolved
Hide resolved
martinzink
commented
Mar 11, 2026
behave_framework/pyproject.toml
Outdated
Comment on lines
+15
to
+21
| [tool.setuptools] | ||
| package-dir = {"" = "src"} | ||
| packages = ["minifi_test_framework"] | ||
|
|
||
| [tool.setuptools.packages.find] | ||
| where = ["src"] | ||
| include = ["minifi_test_framework*"] | ||
|
|
Member
Author
There was a problem hiding this comment.
this is required for wheel building
extensions/couchbase/tests/features/containers/couchbase_server_container.py
Outdated
Show resolved
Hide resolved
e3429cc to
c04433a
Compare
8 tasks
There was a problem hiding this comment.
Pull request overview
This PR enables running a subset of the Behave integration test suite with Windows-based Docker containers, and refactors the test framework container abstractions to support both Linux and Windows. It also replaces the previous M2Crypto/PyOpenSSL-based SSL helpers with cryptography, improving cross-platform dependency installation.
Changes:
- Add Windows container support (new Windows container implementation, Windows MiNiFi container, and scenario tag gating via
@SUPPORTS_WINDOWS). - Refactor test containers to explicitly target Linux (
LinuxContainer) and extract controller/config helpers. - Replace SSL utilities implementation and dependencies with
cryptography, updating affected test containers accordingly.
Reviewed changes
Copilot reviewed 42 out of 44 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| extensions/standard-processors/tests/features/steps/steps.py | Switch SSL setup to shared helper function. |
| extensions/standard-processors/tests/features/steps/minifi_controller_steps.py | Route controller actions through a controller helper object; update retry decorator args. |
| extensions/standard-processors/tests/features/steps/minifi_c2_server_container.py | Switch to cryptography-based cert/key serialization; base class to LinuxContainer. |
| extensions/standard-processors/tests/features/replace_text.feature | Mark feature as supporting Windows. |
| extensions/standard-processors/tests/features/environment.py | Avoid Alpine image inspection on Windows host. |
| extensions/standard-processors/tests/features/core_functionality.feature | Mark feature as supporting Windows; increase timeouts. |
| extensions/standard-processors/tests/features/containers/tcp_client_container.py | Base class switched to LinuxContainer. |
| extensions/standard-processors/tests/features/containers/syslog_container.py | Base class switched to LinuxContainer. |
| extensions/standard-processors/tests/features/containers/diag_slave_container.py | Base class switched to LinuxContainer. |
| extensions/sql/tests/features/containers/postgress_server_container.py | Base class switched to LinuxContainer. |
| extensions/splunk/tests/features/containers/splunk_container.py | Base class switched to LinuxContainer; switch to cryptography dump helpers. |
| extensions/prometheus/tests/features/containers/prometheus_container.py | Base class switched to LinuxContainer; switch to cryptography dump helpers. |
| extensions/opc/tests/features/containers/opc_ua_server_container.py | Base class switched to LinuxContainer. |
| extensions/mqtt/tests/features/containers/mqtt_broker_container.py | Base class switched to LinuxContainer. |
| extensions/kafka/tests/features/containers/kafka_server_container.py | Base class switched to LinuxContainer; switch keystore/truststore material to cryptography dump helpers. |
| extensions/grafana-loki/tests/features/containers/reverse_proxy_container.py | Base class switched to LinuxContainer. |
| extensions/grafana-loki/tests/features/containers/grafana_loki_container.py | Base class switched to LinuxContainer; switch to cryptography dump helpers. |
| extensions/gcp/tests/features/containers/fake_gcs_server_container.py | Base class switched to LinuxContainer. |
| extensions/elasticsearch/tests/features/containers/opensearch_container.py | Switch to cryptography dump helpers. |
| extensions/elasticsearch/tests/features/containers/elasticsearch_container.py | Switch to cryptography dump helpers. |
| extensions/elasticsearch/tests/features/containers/elastic_base_container.py | Base class switched to LinuxContainer. |
| extensions/couchbase/tests/features/containers/couchbase_server_container.py | Base class switched to LinuxContainer; switch to cryptography dump helpers; update retry decorator arg names. |
| extensions/azure/tests/features/containers/azure_server_container.py | Base class switched to LinuxContainer. |
| extensions/aws/tests/features/containers/s3_server_container.py | Base class switched to LinuxContainer. |
| extensions/aws/tests/features/containers/kinesis_server_container.py | Base class switched to LinuxContainer. |
| docker/installed/win.Dockerfile | New Windows MiNiFi installed-image Dockerfile. |
| docker/RunBehaveTests.sh | Improve feature file collection portability (avoid mapfile). |
| behave_framework/src/minifi_test_framework/steps/configuration_steps.py | Switch from container methods to protocol helper functions. |
| behave_framework/src/minifi_test_framework/core/ssl_utils.py | Replace M2Crypto/PyOpenSSL SSL utilities with cryptography. |
| behave_framework/src/minifi_test_framework/core/minifi_test_context.py | Introduce OS-/image-based MiNiFi container selection (Windows vs Linux, FHS vs normal). |
| behave_framework/src/minifi_test_framework/core/hooks.py | Skip scenarios on Windows unless tagged SUPPORTS_WINDOWS; guard cleanup if setup didn’t run. |
| behave_framework/src/minifi_test_framework/containers/nifi_container.py | Base class switched to LinuxContainer; switch to cryptography dump helpers. |
| behave_framework/src/minifi_test_framework/containers/minifi_win_container.py | New Windows MiNiFi container implementation. |
| behave_framework/src/minifi_test_framework/containers/minifi_protocol.py | New protocol + shared property-setting helpers. |
| behave_framework/src/minifi_test_framework/containers/minifi_linux_container.py | New Linux MiNiFi container implementation (normal vs FHS deployment). |
| behave_framework/src/minifi_test_framework/containers/minifi_controller.py | New helper encapsulating minifi-controller interactions. |
| behave_framework/src/minifi_test_framework/containers/minifi_container.py | Removed monolithic MiNiFi container (replaced by linux/windows split). |
| behave_framework/src/minifi_test_framework/containers/http_proxy_container.py | Base class switched to LinuxContainer. |
| behave_framework/src/minifi_test_framework/containers/container_windows.py | New Windows container implementation for file ops + exec + log helpers. |
| behave_framework/src/minifi_test_framework/containers/container_protocol.py | New protocol defining container interface used by the framework. |
| behave_framework/src/minifi_test_framework/containers/container_linux.py | Rename/reshape base container into LinuxContainer; move shared helpers. |
| behave_framework/pyproject.toml | Bump framework version; swap SSL deps to cryptography; adjust package discovery. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
behave_framework/src/minifi_test_framework/core/minifi_test_context.py
Outdated
Show resolved
Hide resolved
behave_framework/src/minifi_test_framework/containers/minifi_protocol.py
Show resolved
Hide resolved
extensions/standard-processors/tests/features/steps/minifi_c2_server_container.py
Outdated
Show resolved
Hide resolved
behave_framework/src/minifi_test_framework/containers/minifi_win_container.py
Show resolved
Hide resolved
behave_framework/src/minifi_test_framework/containers/container_protocol.py
Show resolved
Hide resolved
behave_framework/src/minifi_test_framework/containers/minifi_controller.py
Show resolved
Hide resolved
8 tasks
dd90af2 to
b6ba4f2
Compare
martinzink
added a commit
that referenced
this pull request
Mar 31, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR allows windows based docker containers to run the behave test suite with some limitations:
So this is only the MVP for this feature, but it is still a huge help for future developments especially for using it to develop external extensions using the upcoming C api. It cuts down the local verification time.
I've also replaced the previous m2crypto based ssl_utils with the industry standard cryptography, this should help with the setup on macs and windows systems (m2crypto was quite difficult to install on these systems)
Thank you for submitting a contribution to Apache NiFi - MiNiFi C++.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:
Is there a JIRA ticket associated with this PR? Is it referenced
in the commit message?
Does your PR title start with MINIFICPP-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.
Has your PR been rebased against the latest commit within the target branch (typically main)?
Is your initial contribution a single, squashed commit?
For code changes:
For documentation related changes:
Note:
Please ensure that once the PR is submitted, you check GitHub Actions CI results for build issues and submit an update to your PR as soon as possible.