Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove functional tests for opentelemetry instrumentation #5994

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/scripts/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ if [ "$TEST" = "azure" ]; then
command: "azurite-blob --blobHost 0.0.0.0"' vars/main.yaml
sed -i -e '$a azure_test: true\
pulp_scenario_settings: {"api_root_rewrite_header": "X-API-Root", "domain_enabled": true}\
pulp_scenario_env: {"otel_bsp_max_export_batch_size": 1, "otel_bsp_max_queue_size": 1, "otel_exporter_otlp_endpoint": "http://localhost:4318", "otel_exporter_otlp_protocol": "http/protobuf", "otel_metric_export_interval": 800, "pulp_otel_enabled": "true"}\
pulp_scenario_env: {}\
' vars/main.yaml
fi

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/scripts/pre_before_script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ if [ "$TEST" = "azure" ]; then
cmd_stdin_prefix bash -c "cat > /etc/nginx/pulp/api_root_rewrite.conf" < pulpcore/tests/functional/assets/api_root_rewrite.conf
cmd_prefix bash -c "s6-rc -d change nginx"
cmd_prefix bash -c "s6-rc -u change nginx"
cmd_stdin_prefix bash -c "cat > /var/lib/pulp/scripts/otel_server.py" < pulpcore/tests/functional/assets/otel_server.py
cmd_user_prefix nohup python3 /var/lib/pulp/scripts/otel_server.py &
# it is necessary to wait for a short period until the service starts; otherwise, any subsequent requests to Pulp's API endpoints will fail
sleep 1
Comment on lines +7 to +8
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, this sounds like superstition. At least the one second is plugged out of thin air.
Maybe ok for here, but we should look into injecting the api_root_rewrite.conf in the containerfile and get rid of restarting a service inside the container altogether.

fi
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ tags
# Vagrant
.vagrant
Vagrantfile
__pycache__/
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Of all the ignores on earth, why was this one ever missing? Also this is really python3 specific, not "Vagrant"...


# Built documentation
docs/_build
Expand Down
91 changes: 0 additions & 91 deletions pulp_file/tests/functional/api/test_telemetry_collection.py

This file was deleted.

62 changes: 0 additions & 62 deletions pulpcore/pytest_plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,68 +209,6 @@ def make_url(self, path):
return f"{protocol_handler}{self.host}:{self.port}{path}"


@pytest.fixture(scope="session")
def received_otel_span():
"""A fixture for checking the presence of specific spans on the otel collector server.

Ensure the collector server is up and running before executing tests with this fixture. To do
so, please, run the server as follows: python3 pulpcore/tests/functional/assets/otel_server.py
"""

def _received_otel_span(data, retries=3):
if os.environ.get("PULP_OTEL_ENABLED") != "true":
# pretend everything is working as expected if tests are run from
# a non-configured runner
return True

async def _send_request():
async with aiohttp.ClientSession(raise_for_status=False) as session:
otel_server_url = os.environ.get("OTEL_EXPORTER_OTLP_ENDPOINT")
async with session.post(f"{otel_server_url}/test", json=data) as response:
return response.status

while retries:
status = asyncio.run(_send_request())
if status == 200:
return True
sleep(2)
retries -= 1
return False

return _received_otel_span


@pytest.fixture(scope="session")
def received_otel_metrics():
"""A fixture for checking the presence of specific metrics on the otel collector server.

Ensure the collector server is up and running before executing tests with this fixture. To do
so, please, run the server as follows: python3 pulpcore/tests/functional/assets/otel_server.py
"""

def _received_otel_metric(data, retries=3):
if os.environ.get("PULP_OTEL_ENABLED") != "true":
# pretend everything is working as expected if tests are run from
# a non-configured runner
return True

async def _send_request():
async with aiohttp.ClientSession(raise_for_status=False) as session:
otel_server_url = os.environ.get("OTEL_EXPORTER_OTLP_ENDPOINT")
async with session.post(f"{otel_server_url}/metrics_test", json=data) as response:
return response.status

while retries:
status = asyncio.run(_send_request())
if status == 200:
return True
sleep(2)
retries -= 1
return False

return _received_otel_metric


@pytest.fixture
def test_path():
return os.getenv("PYTEST_CURRENT_TEST").split()[0]
Expand Down
29 changes: 2 additions & 27 deletions pulpcore/tests/functional/api/test_status.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,40 +59,24 @@


@pytest.mark.parallel
def test_get_authenticated(test_path, pulpcore_bindings, received_otel_span):
def test_get_authenticated(test_path, pulpcore_bindings):
"""GET the status path with valid credentials.

Verify the response with :meth:`verify_get_response`.
"""
response = pulpcore_bindings.StatusApi.status_read()
verify_get_response(response.to_dict(), STATUS)
assert received_otel_span(
{
"http.method": "GET",
"http.target": "/pulp/api/v3/status/",
"http.status_code": 200,
"http.user_agent": test_path,
}
)


@pytest.mark.parallel
def test_get_unauthenticated(test_path, pulpcore_bindings, anonymous_user, received_otel_span):
def test_get_unauthenticated(test_path, pulpcore_bindings, anonymous_user):
"""GET the status path with no credentials.

Verify the response with :meth:`verify_get_response`.
"""
with anonymous_user:
response = pulpcore_bindings.StatusApi.status_read()
verify_get_response(response.to_dict(), STATUS)
assert received_otel_span(
{
"http.method": "GET",
"http.target": "/pulp/api/v3/status/",
"http.status_code": 200,
"http.user_agent": test_path,
}
)


@pytest.mark.parallel
Expand All @@ -101,7 +85,6 @@ def test_post_authenticated(
pulp_api_v3_path,
pulp_api_v3_url,
pulpcore_bindings,
received_otel_span,
):
"""POST the status path with valid credentials.

Expand All @@ -117,14 +100,6 @@ def test_post_authenticated(
pulpcore_bindings.client.request("POST", status_url, headers={"User-Agent": test_path})

assert e.value.status == 405
assert received_otel_span(
{
"http.method": "POST",
"http.target": f"{pulp_api_v3_path}status/",
"http.status_code": 405,
"http.user_agent": test_path,
}
)


@pytest.mark.parallel
Expand Down
25 changes: 1 addition & 24 deletions pulpcore/tests/functional/api/test_tasking.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""Tests related to the tasking system."""

import os
import json
import pytest
import time
Expand Down Expand Up @@ -335,12 +334,7 @@ def test_task_version_prevent_pickup(dispatch_task, pulpcore_bindings):
pulpcore_bindings.TasksApi.tasks_cancel(task_href, {"state": "canceled"})


def test_emmiting_unblocked_task_telemetry(
dispatch_task, pulpcore_bindings, pulp_settings, received_otel_metrics
):
if os.getenv("PULP_OTEL_ENABLED").lower() != "true":
pytest.skip("Need PULP_OTEL_ENABLED to run this test.")

def test_emmiting_unblocked_task_telemetry(dispatch_task, pulpcore_bindings, pulp_settings):
# Checking online workers ready to get a task
workers_online = pulpcore_bindings.WorkersApi.list(online="true").count

Expand All @@ -356,23 +350,6 @@ def test_emmiting_unblocked_task_telemetry(
task = pulpcore_bindings.TasksApi.read(task_href)
assert task.state == "waiting"

# And trigger the metrics
assert received_otel_metrics(
{
"name": "tasks_unblocked_queue",
"description": "Number of unblocked tasks waiting in the queue.",
"unit": "tasks",
}
)

assert received_otel_metrics(
{
"name": "tasks_longest_unblocked_time",
"description": "The age of the longest waiting task.",
"unit": "seconds",
}
)

[
pulpcore_bindings.TasksApi.tasks_cancel(task_href, {"state": "canceled"})
for task_href in resident_task_hrefs
Expand Down
Loading