-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
python tests: compatibility and stability improvements #31588
python tests: compatibility and stability improvements #31588
Conversation
38b34e7
to
cc557e1
Compare
Pinging @elastic/elastic-agent-data-plane (Team:Elastic-Agent-Data-Plane) |
2b81140
to
ff8f60f
Compare
ff8f60f
to
ba3a8c2
Compare
|
||
self.wait_until(lambda: self.log_contains( | ||
"Start accepting connections")) | ||
|
||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | ||
|
||
context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) | ||
context = ssl.create_default_context(purpose=ssl.Purpose.SERVER_AUTH) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If I keep the ssl.Purpose.CLIENT_AUTH
the test fails with ssl.SSLError: Cannot create a client socket with a PROTOCOL_TLS_SERVER context (_ssl.c:801)
@cmacknz could you review it again? I refactored it to cover more cases and improved the documentation. |
ba3a8c2
to
0147c47
Compare
This commit improves the compatibility and stability of Python tests for Filebeat. It addresses two main probmes: 1. Some deprecated TLS functions are now raising deprecation exceptions (since Python 3.10.0) 2. Some tests, on failure, leave Filebeat running and bound to port 8080, this creates a cascading failure of the subsequent tests that require the same port to be available. The main changes are: - Ensuring Filebeat process is always terminated, even if the test fails - Using the replacement methods/objects for the deprecated TLS functions.
0147c47
to
4989ce0
Compare
This commit improves the compatibility and stability of Python tests for Filebeat. It addresses two main probmes: 1. Some deprecated TLS functions are now raising deprecation exceptions (since Python 3.10.0) 2. Some tests, on failure, leave Filebeat running and bound to port 8080, this creates a cascading failure of the subsequent tests that require the same port to be available. The main changes are: - Ensuring Filebeat process is always terminated, even if the test fails - Using the replacement methods/objects for the deprecated TLS functions.
This commit improves the compatibility and stability of Python tests for Filebeat. It addresses two main probmes: 1. Some deprecated TLS functions are now raising deprecation exceptions (since Python 3.10.0) 2. Some tests, on failure, leave Filebeat running and bound to port 8080, this creates a cascading failure of the subsequent tests that require the same port to be available. The main changes are: - Ensuring Filebeat process is always terminated, even if the test fails - Using the replacement methods/objects for the deprecated TLS functions. (cherry picked from commit 682045a) # Conflicts: # libbeat/tests/system/beat/beat.py
…olang Debian base image (#35840) * ci: use ubuntu:22 workers (#34315) (cherry picked from commit a5f15b6) # Conflicts: # .ci/beats-tester.groovy # .ci/build-docker-images.groovy # .ci/heartbeat-synthetics.groovy # x-pack/filebeat/Jenkinsfile.yml # x-pack/metricbeat/Jenkinsfile.yml * remove unexisting files in 7.17 when backporting another PR * fix merge conflicts * Upgrade to Go 1.19.10 and handle changes in golang Debian base image (#35780) * Explicitly install netcat-openbsd everywhere. The plain netcat package appears to have been removed in the latest golang:1.19.10 base image. * Setup a virtualenv in Docker containers. This fixes the PEP668 error about "externally managed environments" which prevents modifying the system python installation. * Revert "Revert "[Automation] Bump Golang version to 1.19.10 (#35751)" (#35784)" This reverts commit 27b1799. * Reword CHANGELOG.next.asciidoc Co-authored-by: subham sarkar <[email protected]> * Improve PEP668 comments. * Install latest PyYAML in test containers. * Add check to see if already in a venv. * Upgrade pytest and py. Remove dependency on pytest-otel as it prevented upgrading pytest. * Check for pre-set virtualenv earlier. * Always create a fresh virtualenv in Docker. Remove duplicate dependencies from the docker files. * Fix metricbeat integration tests. * Force install Python dependencies for Metricbeat. --------- Co-authored-by: subham sarkar <[email protected]> (cherry picked from commit 62374dd) # Conflicts: # dev-tools/mage/pytest.go # libbeat/docs/version.asciidoc # libbeat/tests/system/requirements.txt # libbeat/tests/system/requirements_aix.txt # metricbeat/Dockerfile * Remove extra entry in CHANGELOG.next.asciidoc * Fix conflict in version.asciidoc * Fix conflict in requirements.txt * Fix conflict in requirements_aix.txt * Fix conflict in metricbeat Dockerfile * Fix conflict in pytest.go * Add missing force create virtual env option. * python tests: compatibility and stability improvements (#31588) This commit improves the compatibility and stability of Python tests for Filebeat. It addresses two main probmes: 1. Some deprecated TLS functions are now raising deprecation exceptions (since Python 3.10.0) 2. Some tests, on failure, leave Filebeat running and bound to port 8080, this creates a cascading failure of the subsequent tests that require the same port to be available. The main changes are: - Ensuring Filebeat process is always terminated, even if the test fails - Using the replacement methods/objects for the deprecated TLS functions. (cherry picked from commit 682045a) # Conflicts: # libbeat/tests/system/beat/beat.py * Remove duplicate entries in CHANGELOG-developer.next.asciidoc * Resolve conflicts in beat.py --------- Co-authored-by: Victor Martinez <[email protected]> Co-authored-by: Craig MacKenzie <[email protected]> Co-authored-by: Tiago Queiroz <[email protected]>
What does this PR do?
This PR improves the compatibility and stability of Python tests
for Filebeat. It addresses two main probmes:
exceptions (since Python 3.10.0)
8080, this creates a cascading failure of the subsequent tests that
require the same port to be available.
The main changes are:
fails
functions.
Why is it important?
It make the tests less flaky and enables support for newer versions of Python by removing the use of deprecated functions from Python 2.7.x
Checklist
[ ] I have commented my code, particularly in hard-to-understand areas[ ] I have made corresponding changes to the documentation[ ] I have made corresponding change to the default configuration files[ ] I have added tests that prove my fix is effective or that my feature worksCHANGELOG.next.asciidoc
orCHANGELOG-developer.next.asciidoc
.## Author's ChecklistHow to test this PR locally
On a environment with Python >= 3.9.x (like Arch Linux), run the Python tests from Filebeat:
They should run without any issue.
Run tests from
filebeat/tests/system/test_syslog.py
orfilebeat/tests/system/test_tcp_tls.py
and force a failure or interrupt them, after they finish there should be not dangling Filebeat process.## Related issues## Use cases## Screenshots## Logs