Skip to content

Commit fed5988

Browse files
committed
MINIFICPP-2686 Move Prometheus tests to modular docker tests
1 parent 2a53e51 commit fed5988

File tree

18 files changed

+402
-381
lines changed

18 files changed

+402
-381
lines changed

behave_framework/src/minifi_test_framework/containers/minifi_container.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616
#
17-
1817
import logging
1918
import os
2019
from pathlib import Path
@@ -42,6 +41,8 @@ def __init__(self, container_name: str, test_context: MinifiTestContext):
4241
self.files.append(File("/tmp/resources/root_ca.crt", crypto.dump_certificate(type=crypto.FILETYPE_PEM, cert=test_context.root_ca_cert)))
4342
self.files.append(File("/tmp/resources/minifi_client.crt", crypto.dump_certificate(type=crypto.FILETYPE_PEM, cert=minifi_client_cert)))
4443
self.files.append(File("/tmp/resources/minifi_client.key", crypto.dump_privatekey(type=crypto.FILETYPE_PEM, pkey=minifi_client_key)))
44+
self.files.append(File("/tmp/resources/minifi_merged_cert.crt",
45+
crypto.dump_certificate(type=crypto.FILETYPE_PEM, cert=minifi_client_cert) + crypto.dump_privatekey(type=crypto.FILETYPE_PEM, pkey=minifi_client_key)))
4546

4647
clientuser_cert, clientuser_key = make_client_cert("clientuser", ca_cert=test_context.root_ca_cert, ca_key=test_context.root_ca_key)
4748
self.files.append(File("/tmp/resources/clientuser.crt", crypto.dump_certificate(type=crypto.FILETYPE_PEM, cert=clientuser_cert)))
@@ -117,6 +118,22 @@ def enable_c2_with_ssl(self):
117118
self.properties["nifi.c2.agent.class"] = "minifi-test-class"
118119
self.properties["nifi.c2.agent.identifier"] = "minifi-test-id"
119120

121+
def enable_log_metrics_publisher(self):
122+
self.properties["nifi.metrics.publisher.LogMetricsPublisher.metrics"] = "RepositoryMetrics"
123+
self.properties["nifi.metrics.publisher.LogMetricsPublisher.logging.interval"] = "1s"
124+
self.properties["nifi.metrics.publisher.class"] = "LogMetricsPublisher"
125+
126+
def enable_prometheus(self):
127+
self.properties["nifi.metrics.publisher.agent.identifier"] = "Agent1"
128+
self.properties["nifi.metrics.publisher.PrometheusMetricsPublisher.port"] = "9936"
129+
self.properties["nifi.metrics.publisher.PrometheusMetricsPublisher.metrics"] = "RepositoryMetrics,QueueMetrics,PutFileMetrics,processorMetrics/Get.*,FlowInformation,DeviceInfoNode,AgentStatus"
130+
self.properties["nifi.metrics.publisher.class"] = "PrometheusMetricsPublisher"
131+
132+
def enable_prometheus_with_ssl(self):
133+
self.enable_prometheus()
134+
self.properties["nifi.metrics.publisher.PrometheusMetricsPublisher.certificate"] = "/tmp/resources/minifi_merged_cert.crt"
135+
self.properties["nifi.metrics.publisher.PrometheusMetricsPublisher.ca.certificate"] = "/tmp/resources/root_ca.crt"
136+
120137
def fetch_flow_config_from_flow_url(self):
121138
self.properties["nifi.c2.flow.url"] = f"http://minifi-c2-server-{self.scenario_id}:10090/c2/config?class=minifi-test-class"
122139

behave_framework/src/minifi_test_framework/steps/checking_steps.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616
#
17-
18-
1917
import time
2018
import re
2119

behave_framework/src/minifi_test_framework/steps/configuration_steps.py

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# limitations under the License.
1616
#
1717

18-
from behave import step
18+
from behave import step, given
1919

2020
from minifi_test_framework.core.minifi_test_context import MinifiTestContext
2121

@@ -26,12 +26,41 @@ def step_impl(context: MinifiTestContext, config_key: str, config_value: str):
2626

2727

2828
@step("log metrics publisher is enabled in MiNiFi")
29-
def step_impl(context):
30-
context.get_or_create_default_minifi_container().set_property("nifi.metrics.publisher.LogMetricsPublisher.metrics", "RepositoryMetrics")
31-
context.get_or_create_default_minifi_container().set_property("nifi.metrics.publisher.LogMetricsPublisher.logging.interval", "1s")
32-
context.get_or_create_default_minifi_container().set_property("nifi.metrics.publisher.class", "LogMetricsPublisher")
29+
def step_impl(context: MinifiTestContext):
30+
context.get_or_create_default_minifi_container().enable_log_metrics_publisher()
3331

3432

3533
@step('log property "{log_property_key}" is set to "{log_property_value}"')
3634
def step_impl(context: MinifiTestContext, log_property_key: str, log_property_value: str):
3735
context.get_or_create_default_minifi_container().set_log_property(log_property_key, log_property_value)
36+
37+
38+
@given("OpenSSL FIPS mode is enabled in MiNiFi")
39+
def step_impl(context: MinifiTestContext):
40+
context.get_or_create_default_minifi_container().enable_openssl_fips_mode()
41+
42+
43+
@given("C2 is enabled in MiNiFi")
44+
def step_impl(context: MinifiTestContext):
45+
context.get_or_create_default_minifi_container().enable_c2()
46+
47+
48+
@given("flow configuration path is set up in flow url property")
49+
def step_impl(context: MinifiTestContext):
50+
context.get_or_create_default_minifi_container().fetch_flow_config_from_flow_url()
51+
52+
53+
@given("ssl properties are set up for MiNiFi C2 server")
54+
def step_impl(context: MinifiTestContext):
55+
context.get_or_create_default_minifi_container().enable_c2_with_ssl()
56+
context.get_or_create_default_minifi_container().set_up_ssl_proprties()
57+
58+
59+
@given("Prometheus is enabled in MiNiFi")
60+
def step_impl(context: MinifiTestContext):
61+
context.get_or_create_default_minifi_container().enable_prometheus()
62+
63+
64+
@given("Prometheus with SSL is enabled in MiNiFi")
65+
def step_impl(context: MinifiTestContext):
66+
context.get_or_create_default_minifi_container().enable_prometheus_with_ssl()

behave_framework/src/minifi_test_framework/steps/core_steps.py

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,6 @@ def step_impl(context: MinifiTestContext, container_name: str):
137137
context.get_or_create_minifi_container(container_name).kill()
138138

139139

140-
@given("OpenSSL FIPS mode is enabled in MiNiFi")
141-
def step_impl(context: MinifiTestContext):
142-
context.get_or_create_default_minifi_container().enable_openssl_fips_mode()
143-
144-
145140
@step("the http proxy server is set up")
146141
def step_impl(context: MinifiTestContext):
147142
context.containers["http-proxy"] = HttpProxy(context)
@@ -152,22 +147,6 @@ def step_impl(context: MinifiTestContext):
152147
context.containers["nifi"] = NifiContainer(context)
153148

154149

155-
@given("C2 is enabled in MiNiFi")
156-
def step_impl(context: MinifiTestContext):
157-
context.get_or_create_default_minifi_container().enable_c2()
158-
159-
160-
@given("flow configuration path is set up in flow url property")
161-
def step_impl(context: MinifiTestContext):
162-
context.get_or_create_default_minifi_container().fetch_flow_config_from_flow_url()
163-
164-
165-
@given("ssl properties are set up for MiNiFi C2 server")
166-
def step_impl(context: MinifiTestContext):
167-
context.get_or_create_default_minifi_container().enable_c2_with_ssl()
168-
context.get_or_create_default_minifi_container().set_up_ssl_proprties()
169-
170-
171150
@given("a MiNiFi C2 server is set up")
172151
def step_impl(context: MinifiTestContext):
173152
context.containers["minifi-c2-server"] = MinifiC2Server(context)

docker/RunBehaveTests.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,4 +208,5 @@ exec \
208208
"${docker_dir}/../extensions/grafana-loki/tests/features" \
209209
"${docker_dir}/../extensions/lua/tests/features/" \
210210
"${docker_dir}/../extensions/civetweb/tests/features/" \
211-
"${docker_dir}/../extensions/mqtt/tests/features/"
211+
"${docker_dir}/../extensions/mqtt/tests/features/" \
212+
"${docker_dir}/../extensions/prometheus/tests/features/"

docker/requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,5 @@ m2crypto==0.46.2
77
watchdog==6.0.0
88
pyopenssl==25.0.0
99
azure-storage-blob==12.24.1
10-
prometheus-api-client==0.5.5
1110
humanfriendly==10.0
1211
requests<2.29 # https://github.com/docker/docker-py/issues/3113

docker/test/integration/cluster/ContainerStore.py

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
from .containers.SyslogUdpClientContainer import SyslogUdpClientContainer
2525
from .containers.SyslogTcpClientContainer import SyslogTcpClientContainer
2626
from .containers.MinifiAsPodInKubernetesCluster import MinifiAsPodInKubernetesCluster
27-
from .containers.PrometheusContainer import PrometheusContainer
2827
from .FeatureContext import FeatureContext
2928

3029

@@ -145,23 +144,6 @@ def acquire_container(self, context, container_name: str, engine='minifi-cpp', c
145144
network=self.network,
146145
image_store=self.image_store,
147146
command=command))
148-
elif engine == "prometheus":
149-
return self.containers.setdefault(container_name,
150-
PrometheusContainer(feature_context=feature_context,
151-
name=container_name,
152-
vols=self.vols,
153-
network=self.network,
154-
image_store=self.image_store,
155-
command=command))
156-
elif engine == "prometheus-ssl":
157-
return self.containers.setdefault(container_name,
158-
PrometheusContainer(feature_context=feature_context,
159-
name=container_name,
160-
vols=self.vols,
161-
network=self.network,
162-
image_store=self.image_store,
163-
command=command,
164-
ssl=True))
165147
else:
166148
raise Exception('invalid flow engine: \'%s\'' % engine)
167149

@@ -206,12 +188,6 @@ def enable_provenance_repository_in_minifi(self):
206188
def set_ssl_context_properties_in_minifi(self):
207189
self.minifi_options.set_ssl_context_properties = True
208190

209-
def enable_prometheus_in_minifi(self):
210-
self.minifi_options.enable_prometheus = True
211-
212-
def enable_prometheus_with_ssl_in_minifi(self):
213-
self.minifi_options.enable_prometheus_with_ssl = True
214-
215191
def enable_sql_in_minifi(self):
216192
self.minifi_options.enable_sql = True
217193

docker/test/integration/cluster/DockerTestCluster.py

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
from .DockerCommunicator import DockerCommunicator
2222
from .checkers.AzureChecker import AzureChecker
2323
from .checkers.PostgresChecker import PostgresChecker
24-
from .checkers.PrometheusChecker import PrometheusChecker
2524
from .checkers.ModbusChecker import ModbusChecker
2625
from utils import get_peak_memory_usage, get_minifi_pid, get_memory_usage
2726

@@ -34,7 +33,6 @@ def __init__(self, context, feature_id):
3433
self.container_store = ContainerStore(self.container_communicator.create_docker_network(feature_id), context.image_store, context.kubernetes_proxy, feature_id=feature_id)
3534
self.azure_checker = AzureChecker(self.container_communicator)
3635
self.postgres_checker = PostgresChecker(self.container_communicator)
37-
self.prometheus_checker = PrometheusChecker()
3836
self.modbus_checker = ModbusChecker(self.container_communicator)
3937

4038
def cleanup(self):
@@ -79,12 +77,6 @@ def fetch_flow_config_from_c2_url_in_minifi(self):
7977
def set_ssl_context_properties_in_minifi(self):
8078
self.container_store.set_ssl_context_properties_in_minifi()
8179

82-
def enable_prometheus_in_minifi(self):
83-
self.container_store.enable_prometheus_in_minifi()
84-
85-
def enable_prometheus_with_ssl_in_minifi(self):
86-
self.container_store.enable_prometheus_with_ssl_in_minifi()
87-
8880
def enable_openssl_fips_mode_in_minifi(self):
8981
self.container_store.enable_openssl_fips_mode_in_minifi()
9082

@@ -196,15 +188,6 @@ def check_query_results(self, postgresql_container_name, query, number_of_rows,
196188
def segfault_happened(self):
197189
return self.segfault
198190

199-
def wait_for_metric_class_on_prometheus(self, metric_class, timeout_seconds):
200-
return self.prometheus_checker.wait_for_metric_class_on_prometheus(metric_class, timeout_seconds)
201-
202-
def wait_for_processor_metric_on_prometheus(self, metric_class, timeout_seconds, processor_name):
203-
return self.prometheus_checker.wait_for_processor_metric_on_prometheus(metric_class, timeout_seconds, processor_name)
204-
205-
def verify_all_metric_types_are_defined_once(self):
206-
return self.prometheus_checker.verify_all_metric_types_are_defined_once()
207-
208191
def check_minifi_log_matches_regex(self, regex, timeout_seconds=60, count=1):
209192
for container_name in self.container_store.get_container_names("minifi-cpp"):
210193
line_found = self.wait_for_app_logs_regex(container_name, regex, timeout_seconds, count)

0 commit comments

Comments
 (0)