Skip to content
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 src/stirling/source_connectors/socket_tracer/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ pl_cc_bpf_test(
"//src/stirling/source_connectors/socket_tracer/testing/container_images:node_12_3_1_container",
"//src/stirling/source_connectors/socket_tracer/testing/container_images:node_14_18_1_alpine_container",
"//src/stirling/source_connectors/socket_tracer/testing/container_images:node_client_container",
"//src/stirling/source_connectors/socket_tracer/testing/container_images:python_3_10_container",
"//src/stirling/source_connectors/socket_tracer/testing/container_images:python_min_310_container",
"//src/stirling/source_connectors/socket_tracer/testing/container_images:ruby_container",
"//src/stirling/testing:cc_library",
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/node_12_3_1_container.h"
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/node_14_18_1_alpine_container.h"
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/node_client_container.h"
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/python_3_10_container.h"
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/python_min_310_container.h"
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/ruby_container.h"
#include "src/stirling/source_connectors/socket_tracer/testing/protocol_checkers.h"
#include "src/stirling/source_connectors/socket_tracer/testing/socket_trace_bpf_test_fixture.h"
Expand Down Expand Up @@ -86,7 +86,9 @@ class Node14_18_1AlpineContainerWrapper
int32_t PID() const { return process_pid(); }
};

class Python310ContainerWrapper : public ::px::stirling::testing::Python310Container {
// Python 3.10 and later use SSL_write_ex and SSL_read_ex. This test case is itended to cover
// this case. See https://github.com/pixie-io/pixie/issues/1113 for more details.
class PythonMin310ContainerWrapper : public ::px::stirling::testing::PythonMin310Container {
public:
int32_t PID() const { return process_pid(); }
};
Expand Down Expand Up @@ -181,7 +183,7 @@ http::Record GetExpectedHTTPRecord() {

using OpenSSLServerImplementations =
Types<NginxOpenSSL_1_1_0_ContainerWrapper, NginxOpenSSL_1_1_1_ContainerWrapper,
NginxOpenSSL_3_0_8_ContainerWrapper, Python310ContainerWrapper,
NginxOpenSSL_3_0_8_ContainerWrapper, PythonMin310ContainerWrapper,
Node12_3_1ContainerWrapper, Node14_18_1AlpineContainerWrapper>;

TYPED_TEST_SUITE(OpenSSLTraceTest, OpenSSLServerImplementations);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -318,9 +318,9 @@ pl_cc_test_library(
)

pl_cc_test_library(
name = "python_3_10_container",
name = "python_min_310_container",
srcs = [],
hdrs = ["python_3_10_container.h"],
hdrs = ["python_min_310_container.h"],
data = [
"//src/stirling/source_connectors/socket_tracer/testing/containers/ssl:python_min_310_https_server.tar",
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ namespace px {
namespace stirling {
namespace testing {

class Python310Container : public ContainerRunner {
class PythonMin310Container : public ContainerRunner {
public:
Python310Container()
PythonMin310Container()
: ContainerRunner(::px::testing::BazelRunfilePath(kBazelImageTar), kContainerNamePrefix,
kReadyMessage) {}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ def do_GET(self):

httpd = HTTPServer(('localhost', 443), MyRequestHandler)

httpd.socket = ssl.wrap_socket(httpd.socket,
keyfile="/etc/ssl/server.key",
certfile='/etc/ssl/server.crt', server_side=True)
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
ssl_context.load_cert_chain(certfile='/etc/ssl/server.crt', keyfile="/etc/ssl/server.key")
httpd.socket = ssl_context.wrap_socket(httpd.socket, server_side=True)
Comment on lines +52 to +54
Copy link
Member Author

Choose a reason for hiding this comment

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

Python 3.12 removed the previous APIs. The container was crashing with the following error:

Traceback (most recent call last):
  File "/app/src/stirling/source_connectors/socket_tracer/testing/containers/ssl/python_min_310_https_server.binary.runfiles/px/src/stirling/source_connectors/socket_tracer/testing/containers/ssl/https_server.py", line 52, in <module>
    httpd.socket = ssl.wrap_socket(httpd.socket,
                   ^^^^^^^^^^^^^^^
AttributeError: module 'ssl' has no attribute 'wrap_socket'
2025-12-10 00:18:15,003 INFO sys.version_info(major=3, minor=12, micro=0, releaselevel='final', serial=0)
2025-12-10 00:18:15,003 INFO pid=1
Traceback (most recent call last):
  File "/app/src/stirling/source_connectors/socket_tracer/testing/containers/ssl/python_min_310_https_server.binary.runfiles/px/src/stirling/source_connectors/socket_tracer/testing/containers/ssl/https_server.py", line 52, in <module>
    httpd.socket = ssl.wrap_socket(httpd.socket,
                   ^^^^^^^^^^^^^^^
AttributeError: module 'ssl' has no attribute 'wrap_socket'


httpd.serve_forever()
Loading