This is an automated email from the ASF dual-hosted git repository.
martinzink pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
The following commit(s) were added to refs/heads/main by this push:
new ec4965477 MINIFICPP-2802 Pre-pull docker images for extension tests
(#2169)
ec4965477 is described below
commit ec4965477e93efcefd75aee120879c321b7433cd
Author: Gabor Gyimesi <[email protected]>
AuthorDate: Thu May 7 07:34:09 2026 +0200
MINIFICPP-2802 Pre-pull docker images for extension tests (#2169)
* MINIFICPP-2802 Pre-pull docker images for extension tests
Avoid issues if docker image pull is slow and that would interfere while
running the test scenario.
---
.../aws/tests/features/containers/s3_server_container.py | 4 +++-
extensions/aws/tests/features/environment.py | 8 +++++++-
.../azure/tests/features/containers/azure_server_container.py | 4 +++-
extensions/azure/tests/features/environment.py | 7 ++++++-
.../tests/features/containers/couchbase_server_container.py | 4 +++-
extensions/couchbase/tests/features/environment.py | 4 ++++
.../tests/features/containers/elasticsearch_container.py | 4 +++-
.../tests/features/containers/opensearch_container.py | 4 +++-
extensions/elasticsearch/tests/features/environment.py | 11 +++++++++++
.../tests/features/containers/fake_gcs_server_container.py | 4 +++-
extensions/gcp/tests/features/environment.py | 7 +++++++
.../tests/features/containers/grafana_loki_container.py | 4 +++-
extensions/grafana-loki/tests/features/environment.py | 4 ++++
.../kafka/tests/features/containers/kafka_server_container.py | 4 +++-
extensions/kafka/tests/features/environment.py | 4 ++++
.../mqtt/tests/features/containers/mqtt_broker_container.py | 4 +++-
extensions/mqtt/tests/features/environment.py | 3 +++
.../opc/tests/features/containers/opc_ua_server_container.py | 4 ++--
extensions/opc/tests/features/environment.py | 7 ++++++-
extensions/opc/tests/features/steps/steps.py | 4 ++--
.../tests/features/containers/prometheus_container.py | 4 +++-
extensions/prometheus/tests/features/environment.py | 3 +++
.../splunk/tests/features/containers/splunk_container.py | 4 +++-
extensions/splunk/tests/features/environment.py | 4 ++++
.../tests/features/containers/postgress_server_container.py | 4 +++-
extensions/sql/tests/features/environment.py | 3 +++
26 files changed, 102 insertions(+), 19 deletions(-)
diff --git a/extensions/aws/tests/features/containers/s3_server_container.py
b/extensions/aws/tests/features/containers/s3_server_container.py
index 9a16700df..b2b76ffb1 100644
--- a/extensions/aws/tests/features/containers/s3_server_container.py
+++ b/extensions/aws/tests/features/containers/s3_server_container.py
@@ -22,8 +22,10 @@ from minifi_behave.core.minifi_test_context import
MinifiTestContext
class S3ServerContainer(LinuxContainer):
+ IMAGE = "adobe/s3mock:3.12.0"
+
def __init__(self, test_context: MinifiTestContext):
- super().__init__("adobe/s3mock:3.12.0",
f"s3-server-{test_context.scenario_id}", test_context.network)
+ super().__init__(S3ServerContainer.IMAGE,
f"s3-server-{test_context.scenario_id}", test_context.network)
self.environment.append("initialBuckets=test_bucket")
def deploy(self, context: MinifiTestContext | None) -> bool:
diff --git a/extensions/aws/tests/features/environment.py
b/extensions/aws/tests/features/environment.py
index ee812b362..08e04da68 100644
--- a/extensions/aws/tests/features/environment.py
+++ b/extensions/aws/tests/features/environment.py
@@ -13,13 +13,19 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-
+import docker
from minifi_behave.core.hooks import common_before_scenario
from minifi_behave.core.hooks import common_after_scenario
+from containers.s3_server_container import S3ServerContainer
+
# These hooks are executed by behave before and after each scenario
# The common_before_scenario and common_after_scenario must be called for
proper setup and tear down
+def before_feature(context, feature):
+ if feature.filename.endswith("s3.feature"):
+ docker.from_env().images.pull(S3ServerContainer.IMAGE)
+
def before_scenario(context, scenario):
common_before_scenario(context, scenario)
diff --git
a/extensions/azure/tests/features/containers/azure_server_container.py
b/extensions/azure/tests/features/containers/azure_server_container.py
index 36f81158f..72d7d686b 100644
--- a/extensions/azure/tests/features/containers/azure_server_container.py
+++ b/extensions/azure/tests/features/containers/azure_server_container.py
@@ -25,8 +25,10 @@ from minifi_behave.core.minifi_test_context import
MinifiTestContext
class AzureServerContainer(LinuxContainer):
+ IMAGE = "mcr.microsoft.com/azure-storage/azurite:3.35.0"
+
def __init__(self, test_context: MinifiTestContext):
- super().__init__("mcr.microsoft.com/azure-storage/azurite:3.35.0",
+ super().__init__(AzureServerContainer.IMAGE,
f"azure-storage-server-{test_context.scenario_id}",
test_context.network)
azure_storage_hostname =
f"azure-storage-server-{test_context.scenario_id}"
diff --git a/extensions/azure/tests/features/environment.py
b/extensions/azure/tests/features/environment.py
index ee812b362..468476614 100644
--- a/extensions/azure/tests/features/environment.py
+++ b/extensions/azure/tests/features/environment.py
@@ -13,14 +13,19 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-
+import docker
from minifi_behave.core.hooks import common_before_scenario
from minifi_behave.core.hooks import common_after_scenario
+from containers.azure_server_container import AzureServerContainer
# These hooks are executed by behave before and after each scenario
# The common_before_scenario and common_after_scenario must be called for
proper setup and tear down
+def before_all(context):
+ docker.from_env().images.pull(AzureServerContainer.IMAGE)
+
+
def before_scenario(context, scenario):
common_before_scenario(context, scenario)
diff --git
a/extensions/couchbase/tests/features/containers/couchbase_server_container.py
b/extensions/couchbase/tests/features/containers/couchbase_server_container.py
index d8febe939..41c8a89ee 100644
---
a/extensions/couchbase/tests/features/containers/couchbase_server_container.py
+++
b/extensions/couchbase/tests/features/containers/couchbase_server_container.py
@@ -24,8 +24,10 @@ from docker.errors import ContainerError
class CouchbaseServerContainer(LinuxContainer):
+ IMAGE = "couchbase:enterprise-7.2.5"
+
def __init__(self, test_context: MinifiTestContext):
- super().__init__("couchbase:enterprise-7.2.5",
f"couchbase-server-{test_context.scenario_id}", test_context.network)
+ super().__init__(CouchbaseServerContainer.IMAGE,
f"couchbase-server-{test_context.scenario_id}", test_context.network)
couchbase_cert, couchbase_key = make_server_cert(self.container_name,
test_context.root_ca_cert, test_context.root_ca_key)
diff --git a/extensions/couchbase/tests/features/environment.py
b/extensions/couchbase/tests/features/environment.py
index 9b593f032..d48dc49e1 100644
--- a/extensions/couchbase/tests/features/environment.py
+++ b/extensions/couchbase/tests/features/environment.py
@@ -12,9 +12,12 @@
# 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.
+
+import docker
from minifi_behave.containers.docker_image_builder import DockerImageBuilder
from minifi_behave.core.hooks import common_before_scenario
from minifi_behave.core.hooks import common_after_scenario
+from containers.couchbase_server_container import CouchbaseServerContainer
def before_all(context):
@@ -26,6 +29,7 @@ def before_all(context):
dockerfile_content=dockerfile
)
builder.build()
+ docker.from_env().images.pull(CouchbaseServerContainer.IMAGE)
def before_scenario(context, scenario):
diff --git
a/extensions/elasticsearch/tests/features/containers/elasticsearch_container.py
b/extensions/elasticsearch/tests/features/containers/elasticsearch_container.py
index 3d87dd0a2..45403de22 100644
---
a/extensions/elasticsearch/tests/features/containers/elasticsearch_container.py
+++
b/extensions/elasticsearch/tests/features/containers/elasticsearch_container.py
@@ -26,8 +26,10 @@ from minifi_behave.core.minifi_test_context import
MinifiTestContext
class ElasticsearchContainer(ElasticBaseContainer):
+ IMAGE = "elasticsearch:9.1.5"
+
def __init__(self, test_context: MinifiTestContext):
- super().__init__(test_context, "elasticsearch:9.1.5",
f"elasticsearch-{test_context.scenario_id}")
+ super().__init__(test_context, ElasticsearchContainer.IMAGE,
f"elasticsearch-{test_context.scenario_id}")
http_cert, http_key = make_server_cert(self.container_name,
test_context.root_ca_cert, test_context.root_ca_key)
transport_cert, transport_key =
make_cert_without_extended_usage(self.container_name,
test_context.root_ca_cert, test_context.root_ca_key)
diff --git
a/extensions/elasticsearch/tests/features/containers/opensearch_container.py
b/extensions/elasticsearch/tests/features/containers/opensearch_container.py
index 964e989c0..1f09d0cce 100644
--- a/extensions/elasticsearch/tests/features/containers/opensearch_container.py
+++ b/extensions/elasticsearch/tests/features/containers/opensearch_container.py
@@ -25,8 +25,10 @@ from minifi_behave.core.minifi_test_context import
MinifiTestContext
class OpensearchContainer(ElasticBaseContainer):
+ IMAGE = "opensearchproject/opensearch:2.6.0"
+
def __init__(self, test_context: MinifiTestContext):
- super().__init__(test_context, "opensearchproject/opensearch:2.6.0",
f"opensearch-{test_context.scenario_id}")
+ super().__init__(test_context, OpensearchContainer.IMAGE,
f"opensearch-{test_context.scenario_id}")
admin_pem, admin_key = make_server_cert(self.container_name,
test_context.root_ca_cert, test_context.root_ca_key)
diff --git a/extensions/elasticsearch/tests/features/environment.py
b/extensions/elasticsearch/tests/features/environment.py
index d9f4bcb30..eaea25090 100644
--- a/extensions/elasticsearch/tests/features/environment.py
+++ b/extensions/elasticsearch/tests/features/environment.py
@@ -12,10 +12,21 @@
# 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.
+
+import docker
+from containers.elasticsearch_container import ElasticsearchContainer
+from containers.opensearch_container import OpensearchContainer
from minifi_behave.core.hooks import common_before_scenario
from minifi_behave.core.hooks import common_after_scenario
+def before_feature(context, feature):
+ if feature.filename.endswith("elasticsearch.feature"):
+ docker.from_env().images.pull(ElasticsearchContainer.IMAGE)
+ elif feature.filename.endswith("opensearch.feature"):
+ docker.from_env().images.pull(OpensearchContainer.IMAGE)
+
+
def before_scenario(context, scenario):
common_before_scenario(context, scenario)
diff --git
a/extensions/gcp/tests/features/containers/fake_gcs_server_container.py
b/extensions/gcp/tests/features/containers/fake_gcs_server_container.py
index 2bb63fbf9..506478932 100644
--- a/extensions/gcp/tests/features/containers/fake_gcs_server_container.py
+++ b/extensions/gcp/tests/features/containers/fake_gcs_server_container.py
@@ -21,8 +21,10 @@ from minifi_behave.core.minifi_test_context import
MinifiTestContext
class FakeGcsServerContainer(LinuxContainer):
+ IMAGE = "fsouza/fake-gcs-server:1.45.1"
+
def __init__(self, test_context: MinifiTestContext):
- super().__init__("fsouza/fake-gcs-server:1.45.1",
f"fake-gcs-server-{test_context.scenario_id}", test_context.network,
+ super().__init__(FakeGcsServerContainer.IMAGE,
f"fake-gcs-server-{test_context.scenario_id}", test_context.network,
command=f'-scheme http -host
fake-gcs-server-{test_context.scenario_id}')
self.dirs.append(Directory(path="/data/test-bucket",
files={"test-file": "preloaded data\n"}))
diff --git a/extensions/gcp/tests/features/environment.py
b/extensions/gcp/tests/features/environment.py
index d9f4bcb30..057b87c71 100644
--- a/extensions/gcp/tests/features/environment.py
+++ b/extensions/gcp/tests/features/environment.py
@@ -12,10 +12,17 @@
# 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.
+
+import docker
+from containers.fake_gcs_server_container import FakeGcsServerContainer
from minifi_behave.core.hooks import common_before_scenario
from minifi_behave.core.hooks import common_after_scenario
+def before_all(context):
+ docker.from_env().images.pull(FakeGcsServerContainer.IMAGE)
+
+
def before_scenario(context, scenario):
common_before_scenario(context, scenario)
diff --git
a/extensions/grafana-loki/tests/features/containers/grafana_loki_container.py
b/extensions/grafana-loki/tests/features/containers/grafana_loki_container.py
index 9e907e855..d626468f7 100644
---
a/extensions/grafana-loki/tests/features/containers/grafana_loki_container.py
+++
b/extensions/grafana-loki/tests/features/containers/grafana_loki_container.py
@@ -30,8 +30,10 @@ class GrafanaLokiOptions:
class GrafanaLokiContainer(LinuxContainer):
+ IMAGE = "grafana/loki:3.2.1"
+
def __init__(self, test_context: MinifiTestContext, options:
GrafanaLokiOptions):
- super().__init__("grafana/loki:3.2.1",
f"grafana-loki-server-{test_context.scenario_id}", test_context.network)
+ super().__init__(GrafanaLokiContainer.IMAGE,
f"grafana-loki-server-{test_context.scenario_id}", test_context.network)
extra_ssl_settings = ""
if options.enable_ssl:
grafana_loki_cert, grafana_loki_key =
make_server_cert(self.container_name, test_context.root_ca_cert,
test_context.root_ca_key)
diff --git a/extensions/grafana-loki/tests/features/environment.py
b/extensions/grafana-loki/tests/features/environment.py
index 4e25390ed..1318d2f5d 100644
--- a/extensions/grafana-loki/tests/features/environment.py
+++ b/extensions/grafana-loki/tests/features/environment.py
@@ -12,6 +12,9 @@
# 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.
+
+import docker
+from containers.grafana_loki_container import GrafanaLokiContainer
from pathlib import Path
from minifi_behave.containers.docker_image_builder import DockerImageBuilder
from minifi_behave.core.hooks import common_before_scenario
@@ -39,6 +42,7 @@ COPY check_log_lines_on_grafana.py
/scripts/check_log_lines_on_grafana.py"""
build_context_path=str(Path(__file__).resolve().parent / "resources" /
"reverse-proxy")
)
reverse_proxy_builder.build()
+ docker.from_env().images.pull(GrafanaLokiContainer.IMAGE)
def before_scenario(context, scenario):
diff --git
a/extensions/kafka/tests/features/containers/kafka_server_container.py
b/extensions/kafka/tests/features/containers/kafka_server_container.py
index 350a05478..d4434cd04 100644
--- a/extensions/kafka/tests/features/containers/kafka_server_container.py
+++ b/extensions/kafka/tests/features/containers/kafka_server_container.py
@@ -27,8 +27,10 @@ from minifi_behave.core.minifi_test_context import
MinifiTestContext
class KafkaServer(LinuxContainer):
+ IMAGE = "apache/kafka:4.1.0"
+
def __init__(self, test_context: MinifiTestContext):
- super().__init__("apache/kafka:4.1.0",
f"kafka-server-{test_context.scenario_id}", test_context.network)
+ super().__init__(KafkaServer.IMAGE,
f"kafka-server-{test_context.scenario_id}", test_context.network)
self.environment.append("KAFKA_NODE_ID=1")
self.environment.append("KAFKA_PROCESS_ROLES=controller,broker")
self.environment.append("KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT")
diff --git a/extensions/kafka/tests/features/environment.py
b/extensions/kafka/tests/features/environment.py
index 4d9f7006b..d7ee24d67 100644
--- a/extensions/kafka/tests/features/environment.py
+++ b/extensions/kafka/tests/features/environment.py
@@ -12,6 +12,9 @@
# 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.
+
+import docker
+from containers.kafka_server_container import KafkaServer
from minifi_behave.containers.docker_image_builder import DockerImageBuilder
from minifi_behave.core.hooks import common_before_scenario
from minifi_behave.core.hooks import common_after_scenario
@@ -26,6 +29,7 @@ def before_all(context):
dockerfile_content=dockerfile
)
builder.build()
+ docker.from_env().images.pull(KafkaServer.IMAGE)
def before_scenario(context, scenario):
diff --git a/extensions/mqtt/tests/features/containers/mqtt_broker_container.py
b/extensions/mqtt/tests/features/containers/mqtt_broker_container.py
index 2ed54d1ba..8d38663a5 100644
--- a/extensions/mqtt/tests/features/containers/mqtt_broker_container.py
+++ b/extensions/mqtt/tests/features/containers/mqtt_broker_container.py
@@ -25,12 +25,14 @@ from docker.errors import ContainerError
class MqttBrokerContainer(LinuxContainer):
+ IMAGE = "eclipse-mosquitto:2.1.1-alpine"
+
def __init__(self, test_context: MinifiTestContext):
dockerfile = dedent("""\
FROM {base_image}
RUN echo 'log_dest stderr' >> /mosquitto-no-auth.conf
CMD ["/usr/sbin/mosquitto", "--verbose", "--config-file",
"/mosquitto-no-auth.conf"]
- """.format(base_image='eclipse-mosquitto:2.1.1-alpine'))
+ """.format(base_image=MqttBrokerContainer.IMAGE))
builder = DockerImageBuilder(
image_tag="minifi-mqtt-broker:latest",
diff --git a/extensions/mqtt/tests/features/environment.py
b/extensions/mqtt/tests/features/environment.py
index a98f91b7d..6cabeecf0 100644
--- a/extensions/mqtt/tests/features/environment.py
+++ b/extensions/mqtt/tests/features/environment.py
@@ -13,6 +13,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+import docker
+from containers.mqtt_broker_container import MqttBrokerContainer
from pathlib import Path
from minifi_behave.containers.docker_image_builder import DockerImageBuilder
from minifi_behave.core.hooks import common_before_scenario
@@ -34,6 +36,7 @@ COPY publish_mqtt_message.py
/scripts/publish_mqtt_message.py"""
files_on_context={"publish_mqtt_message.py": check_log_lines_content}
)
mqtt_helper_builder.build()
+ docker.from_env().images.pull(MqttBrokerContainer.IMAGE)
def before_scenario(context, scenario):
diff --git
a/extensions/opc/tests/features/containers/opc_ua_server_container.py
b/extensions/opc/tests/features/containers/opc_ua_server_container.py
index 5894bc0cd..5bb8a233b 100644
--- a/extensions/opc/tests/features/containers/opc_ua_server_container.py
+++ b/extensions/opc/tests/features/containers/opc_ua_server_container.py
@@ -20,10 +20,10 @@ from minifi_behave.core.minifi_test_context import
MinifiTestContext
class OPCUAServerContainer(LinuxContainer):
- OPC_SERVER_IMAGE = "lordgamez/open62541:1.5.2"
+ IMAGE = "lordgamez/open62541:1.5.2"
def __init__(self, test_context: MinifiTestContext, command:
Optional[List[str]] = None):
- super().__init__(self.OPC_SERVER_IMAGE,
f"opcua-server-{test_context.scenario_id}", test_context.network,
command=command)
+ super().__init__(OPCUAServerContainer.IMAGE,
f"opcua-server-{test_context.scenario_id}", test_context.network,
command=command)
def deploy(self, context: MinifiTestContext | None) -> bool:
super().deploy(context)
diff --git a/extensions/opc/tests/features/environment.py
b/extensions/opc/tests/features/environment.py
index 7e9fcda28..76f86f8b8 100644
--- a/extensions/opc/tests/features/environment.py
+++ b/extensions/opc/tests/features/environment.py
@@ -14,11 +14,16 @@
# limitations under the License.
import os
-
+import docker
+from containers.opc_ua_server_container import OPCUAServerContainer
from minifi_behave.core.hooks import common_before_scenario
from minifi_behave.core.hooks import common_after_scenario
+def before_all(context):
+ docker.from_env().images.pull(OPCUAServerContainer.IMAGE)
+
+
def before_scenario(context, scenario):
common_before_scenario(context, scenario)
context.resource_dir = os.path.join(os.path.dirname(__file__), 'resources')
diff --git a/extensions/opc/tests/features/steps/steps.py
b/extensions/opc/tests/features/steps/steps.py
index 0dcd61c89..58f2a1ea1 100644
--- a/extensions/opc/tests/features/steps/steps.py
+++ b/extensions/opc/tests/features/steps/steps.py
@@ -79,8 +79,8 @@ def _copy_file_from_docker_image(image_name: str, file_path:
str, output_path: s
def place_opcua_certificate_files_in_minifi_container(context:
MinifiTestContext, directory: str, container_name: str):
if not hasattr(context, "opcua_cert_temp_dir"):
context.opcua_cert_temp_dir = tempfile.TemporaryDirectory()
- _copy_file_from_docker_image(OPCUAServerContainer.OPC_SERVER_IMAGE,
"/opt/open62541/pki/created/server_cert.der",
os.path.join(context.opcua_cert_temp_dir.name, "server_cert.der"))
- _copy_file_from_docker_image(OPCUAServerContainer.OPC_SERVER_IMAGE,
"/opt/open62541/pki/created/server_key.der",
os.path.join(context.opcua_cert_temp_dir.name, "server_key.der"))
+ _copy_file_from_docker_image(OPCUAServerContainer.IMAGE,
"/opt/open62541/pki/created/server_cert.der",
os.path.join(context.opcua_cert_temp_dir.name, "server_cert.der"))
+ _copy_file_from_docker_image(OPCUAServerContainer.IMAGE,
"/opt/open62541/pki/created/server_key.der",
os.path.join(context.opcua_cert_temp_dir.name, "server_key.der"))
context.get_or_create_minifi_container(container_name).add_host_file(os.path.join(context.opcua_cert_temp_dir.name,
"server_cert.der"), os.path.join(directory, "opcua_client_cert.der"))
context.get_or_create_minifi_container(container_name).add_host_file(os.path.join(context.opcua_cert_temp_dir.name,
"server_key.der"), os.path.join(directory, "opcua_client_key.der"))
diff --git
a/extensions/prometheus/tests/features/containers/prometheus_container.py
b/extensions/prometheus/tests/features/containers/prometheus_container.py
index 4846d9307..ee962d8eb 100644
--- a/extensions/prometheus/tests/features/containers/prometheus_container.py
+++ b/extensions/prometheus/tests/features/containers/prometheus_container.py
@@ -23,8 +23,10 @@ from minifi_behave.containers.container_linux import
LinuxContainer
class PrometheusContainer(LinuxContainer):
+ IMAGE = "prom/prometheus:v3.9.1"
+
def __init__(self, test_context: MinifiTestContext, ssl: bool = False):
- super().__init__("prom/prometheus:v3.9.1",
f"prometheus-{test_context.scenario_id}", test_context.network)
+ super().__init__(PrometheusContainer.IMAGE,
f"prometheus-{test_context.scenario_id}", test_context.network)
self.scenario_id = test_context.scenario_id
extra_ssl_settings = ""
if ssl:
diff --git a/extensions/prometheus/tests/features/environment.py
b/extensions/prometheus/tests/features/environment.py
index df890c1fc..c62553bdf 100644
--- a/extensions/prometheus/tests/features/environment.py
+++ b/extensions/prometheus/tests/features/environment.py
@@ -12,10 +12,12 @@
# 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.
+import docker
from pathlib import Path
from minifi_behave.containers.docker_image_builder import DockerImageBuilder
from minifi_behave.core.hooks import common_before_scenario
from minifi_behave.core.hooks import common_after_scenario
+from containers.prometheus_container import PrometheusContainer
def before_all(context):
@@ -33,6 +35,7 @@ def before_all(context):
files_on_context={"prometheus_checker.py": check_log_lines_content}
)
prometheus_helper_builder.build()
+ docker.from_env().images.pull(PrometheusContainer.IMAGE)
def before_scenario(context, scenario):
diff --git a/extensions/splunk/tests/features/containers/splunk_container.py
b/extensions/splunk/tests/features/containers/splunk_container.py
index 8eb87b541..f1cb7b2f5 100644
--- a/extensions/splunk/tests/features/containers/splunk_container.py
+++ b/extensions/splunk/tests/features/containers/splunk_container.py
@@ -23,8 +23,10 @@ from minifi_behave.core.ssl_utils import make_server_cert,
dump_cert, dump_key
class SplunkContainer(LinuxContainer):
+ IMAGE = "splunk/splunk:9.2.1-patch2"
+
def __init__(self, test_context: MinifiTestContext):
- super().__init__("splunk/splunk:9.2.1-patch2",
f"splunk-{test_context.scenario_id}", test_context.network)
+ super().__init__(SplunkContainer.IMAGE,
f"splunk-{test_context.scenario_id}", test_context.network)
self.user = None
self.environment = ["SPLUNK_LICENSE_URI=Free",
diff --git a/extensions/splunk/tests/features/environment.py
b/extensions/splunk/tests/features/environment.py
index ca4d81cfb..782a88340 100644
--- a/extensions/splunk/tests/features/environment.py
+++ b/extensions/splunk/tests/features/environment.py
@@ -14,7 +14,9 @@
# limitations under the License.
import platform
+import docker
+from containers.splunk_container import SplunkContainer
from minifi_behave.core.hooks import common_before_scenario
from minifi_behave.core.hooks import common_after_scenario
@@ -25,6 +27,8 @@ def before_feature(context, feature):
if not is_x86:
feature.skip("This feature is only x86/x64 compatible")
+ docker.from_env().images.pull(SplunkContainer.IMAGE)
+
def before_scenario(context, scenario):
common_before_scenario(context, scenario)
diff --git
a/extensions/sql/tests/features/containers/postgress_server_container.py
b/extensions/sql/tests/features/containers/postgress_server_container.py
index b84aef130..9a9ec6f6f 100644
--- a/extensions/sql/tests/features/containers/postgress_server_container.py
+++ b/extensions/sql/tests/features/containers/postgress_server_container.py
@@ -24,6 +24,8 @@ from minifi_behave.core.minifi_test_context import
MinifiTestContext
class PostgresContainer(LinuxContainer):
+ IMAGE = "postgres:17.4"
+
def __init__(self, context):
dockerfile = dedent("""\
FROM {base_image}
@@ -39,7 +41,7 @@ class PostgresContainer(LinuxContainer):
echo " INSERT INTO test_table2 (int_col,
\\"tExT_Col\\") VALUES (5, 'ApPlE');" >>
/docker-entrypoint-initdb.d/init-user-db.sh && \
echo " INSERT INTO test_table2 (int_col,
\\"tExT_Col\\") VALUES (6, 'BaNaNa');" >>
/docker-entrypoint-initdb.d/init-user-db.sh && \
echo "EOSQL" >> /docker-entrypoint-initdb.d/init-user-db.sh
- """.format(base_image='postgres:17.4'))
+ """.format(base_image=PostgresContainer.IMAGE))
builder = DockerImageBuilder(
image_tag="minifi-postgres-server:latest",
dockerfile_content=dockerfile
diff --git a/extensions/sql/tests/features/environment.py
b/extensions/sql/tests/features/environment.py
index ad369afc0..5b5cf8151 100644
--- a/extensions/sql/tests/features/environment.py
+++ b/extensions/sql/tests/features/environment.py
@@ -16,8 +16,10 @@
#
import os
+import docker
from textwrap import dedent
+from containers.postgress_server_container import PostgresContainer
from minifi_behave.containers.docker_image_builder import DockerImageBuilder
from minifi_behave.core.hooks import common_before_scenario
from minifi_behave.core.hooks import common_after_scenario
@@ -78,6 +80,7 @@ def before_all(context):
dockerfile_content=dockerfile
)
builder.build()
+ docker.from_env().images.pull(PostgresContainer.IMAGE)
def before_scenario(context, scenario):