From 01b8d7fa55232515e0a1dc7d2bf387c8e42fb8da Mon Sep 17 00:00:00 2001 From: Dom Del Nano Date: Fri, 12 Dec 2025 08:21:52 +0000 Subject: [PATCH 01/11] Upgrade Go to 1.25 Signed-off-by: Dom Del Nano (cherry picked from commit 60246ab126aafbe3b7fca04805e25f2d759726e8) --- WORKSPACE | 8 +++---- bazel/container_images.bzl | 16 ++++++++++++++ bazel/pl_build_system.bzl | 6 ++--- bazel/repository_locations.bzl | 6 ++--- src/stirling/obj_tools/dwarf_reader_test.cc | 16 +++++++------- src/stirling/obj_tools/go_syms_test.cc | 2 +- .../obj_tools/testdata/go/BUILD.bazel | 2 +- ...enchmark_stirling_wrapper_http2_tracing.sh | 8 +++---- .../dynamic_bpftrace/BUILD.bazel | 2 +- .../dynamic_bpftrace_connector_bpf_test.cc | 20 ++++++++--------- .../dynamic_tracer/BUILD.bazel | 6 ++--- .../dynamic_tracer/dynamic_trace_bpf_test.cc | 18 +++++++-------- .../dynamic_tracer/stirling_dt_bpf_test.cc | 22 +++++++++---------- .../socket_tracer/grpc_trace_bpf_test.cc | 2 +- .../go_grpc_tls_pl/server/update_ghcr.sh | 1 + .../demo_apps/go_https/server/update_ghcr.sh | 1 + 16 files changed, 77 insertions(+), 59 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index 05177c8c7de..44c2963fe2f 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -41,7 +41,7 @@ pl_go_overrides() go_download_sdk( name = "go_sdk", - version = "1.24.6", + version = "1.25.5", ) go_rules_dependencies() @@ -220,8 +220,8 @@ load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") gazelle_dependencies(go_sdk = "go_sdk") go_download_sdk( - name = "go_sdk_1_23", - version = "1.23.12", + name = "go_sdk_1_24", + version = "1.24.11", ) # The go_sdk_boringcrypto SDK is used for testing boringcrypto specific functionality (TLS tracing). @@ -234,7 +234,7 @@ go_download_sdk( go_download_sdk( name = "go_sdk_boringcrypto", experiments = ["boringcrypto"], - version = "1.23.11", + version = "1.24.10", ) pip_parse( diff --git a/bazel/container_images.bzl b/bazel/container_images.bzl index ab81087c1d6..891f13474f6 100644 --- a/bazel/container_images.bzl +++ b/bazel/container_images.bzl @@ -328,6 +328,14 @@ def stirling_test_images(): digest = "sha256:0f14818a1046dfdb7d5ac27e173d99e071219897a1d9969c8d7604acbd0d9541", ) + # Tag: 1.0 + # Arch: linux/amd64 + _container_image( + name = "golang_1_23_https_server_with_buildinfo", + repository = "golang_1_23_https_server_with_buildinfo", + digest = "sha256:df8ad6fd2cc2c45b7e6713dd365be908f77f006c190c7f79f74b38338b550544", + ) + # Tag: 1.0 # Arch: linux/amd64 _container_image( @@ -367,3 +375,11 @@ def stirling_test_images(): repository = "golang_1_22_grpc_server_with_buildinfo", digest = "sha256:67adba5e8513670fa37bd042862e7844f26239e8d2997ed8c3b0aa527bc04cc3", ) + + # Tag: 1.0 + # Arch: linux/amd64 + _container_image( + name = "golang_1_23_grpc_server_with_buildinfo", + repository = "golang_1_23_grpc_server_with_buildinfo", + digest = "sha256:7950a79e492dbdbe18608db5829a129754df5b6b5cb9d6ba822cfd91c43ba61a", + ) diff --git a/bazel/pl_build_system.bzl b/bazel/pl_build_system.bzl index f8eaa66efdc..8a4cdaec903 100644 --- a/bazel/pl_build_system.bzl +++ b/bazel/pl_build_system.bzl @@ -23,9 +23,9 @@ load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") load("@rules_python//python:defs.bzl", "py_test") load("//bazel:toolchain_transitions.bzl", "qemu_interactive_runner") -pl_boringcrypto_go_sdk = ["1.23.11"] -pl_go_test_versions = ["1.18", "1.19", "1.20", "1.21", "1.22"] -pl_supported_go_sdk_versions = ["1.23", "1.24"] +pl_boringcrypto_go_sdk = ["1.24.10"] +pl_go_test_versions = ["1.18", "1.19", "1.20", "1.21", "1.22", "1.23"] +pl_supported_go_sdk_versions = ["1.24", "1.25"] # The last version in this list corresponds to the boringcrypto go sdk version. # This list is used for generating container libraries and other version-specific targets. diff --git a/bazel/repository_locations.bzl b/bazel/repository_locations.bzl index 6c5236fff83..279b932ea1e 100644 --- a/bazel/repository_locations.bzl +++ b/bazel/repository_locations.bzl @@ -423,10 +423,10 @@ REPOSITORY_LOCATIONS = dict( urls = ["https://github.com/bazelbuild/rules_docker/archive/0e9c3b068d05f20adf7ccdea486fcb27e71593f3.tar.gz"], ), io_bazel_rules_go = dict( - sha256 = "f74c98d6df55217a36859c74b460e774abc0410a47cc100d822be34d5f990f16", + sha256 = "68af54cb97fbdee5e5e8fe8d210d15a518f9d62abfd71620c3eaff3b26a5ff86", urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.47.1/rules_go-v0.47.1.zip", - "https://github.com/bazelbuild/rules_go/releases/download/v0.47.1/rules_go-v0.47.1.zip", + "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.59.0/rules_go-v0.59.0.zip", + "https://github.com/bazelbuild/rules_go/releases/download/v0.59.0/rules_go-v0.59.0.zip", ], ), io_bazel_rules_k8s = dict( diff --git a/src/stirling/obj_tools/dwarf_reader_test.cc b/src/stirling/obj_tools/dwarf_reader_test.cc index 6fd9f93dd16..bd5619ebf38 100644 --- a/src/stirling/obj_tools/dwarf_reader_test.cc +++ b/src/stirling/obj_tools/dwarf_reader_test.cc @@ -24,10 +24,10 @@ #include "src/common/testing/testing.h" #include "src/stirling/utils/detect_application.h" -constexpr std::string_view kTestGo1_23Binary = - "src/stirling/obj_tools/testdata/go/test_go_1_23_binary"; constexpr std::string_view kTestGo1_24Binary = - "src/stirling/obj_tools/testdata/go/test_go_1_23_binary"; + "src/stirling/obj_tools/testdata/go/test_go_1_24_binary"; +constexpr std::string_view kTestGo1_25Binary = + "src/stirling/obj_tools/testdata/go/test_go_1_25_binary"; constexpr std::string_view kGoGRPCServer = "src/stirling/testing/demo_apps/go_grpc_tls_pl/server/golang_1_24_grpc_tls_server_binary"; constexpr std::string_view kCppBinary = "src/stirling/obj_tools/testdata/cc/test_exe_/test_exe"; @@ -35,8 +35,8 @@ constexpr std::string_view kGoBinaryUnconventional = "src/stirling/obj_tools/testdata/go/sockshop_payments_service"; const auto kCPPBinaryPath = px::testing::BazelRunfilePath(kCppBinary); -const auto kGo1_23BinaryPath = px::testing::BazelRunfilePath(kTestGo1_23Binary); const auto kGo1_24BinaryPath = px::testing::BazelRunfilePath(kTestGo1_24Binary); +const auto kGo1_25BinaryPath = px::testing::BazelRunfilePath(kTestGo1_25Binary); const auto kGoServerBinaryPath = px::testing::BazelRunfilePath(kGoGRPCServer); const auto kGoBinaryUnconventionalPath = px::testing::BazelRunfilePath(kGoBinaryUnconventional); @@ -563,10 +563,10 @@ INSTANTIATE_TEST_SUITE_P(CppDwarfReaderParameterizedTest, CppDwarfReaderTest, DwarfReaderTestParam{kCPPBinaryPath, false})); INSTANTIATE_TEST_SUITE_P(GolangDwarfReaderParameterizedTest, GolangDwarfReaderTest, - ::testing::Values(DwarfReaderTestParam{kGo1_23BinaryPath, true}, - DwarfReaderTestParam{kGo1_23BinaryPath, false}, - DwarfReaderTestParam{kGo1_24BinaryPath, true}, - DwarfReaderTestParam{kGo1_24BinaryPath, false})); + ::testing::Values(DwarfReaderTestParam{kGo1_24BinaryPath, true}, + DwarfReaderTestParam{kGo1_24BinaryPath, false}, + DwarfReaderTestParam{kGo1_25BinaryPath, true}, + DwarfReaderTestParam{kGo1_25BinaryPath, false})); INSTANTIATE_TEST_SUITE_P(GolangDwarfReaderParameterizedIndexTest, GolangDwarfReaderIndexTest, ::testing::Values(true, false)); diff --git a/src/stirling/obj_tools/go_syms_test.cc b/src/stirling/obj_tools/go_syms_test.cc index 187ca45f95d..a28836e3e25 100644 --- a/src/stirling/obj_tools/go_syms_test.cc +++ b/src/stirling/obj_tools/go_syms_test.cc @@ -58,7 +58,7 @@ TEST(ReadGoBuildInfoTest, BuildinfoEndianAgnostic) { ASSERT_OK_AND_ASSIGN(std::unique_ptr elf_reader, ElfReader::Create(kPath)); ASSERT_OK_AND_ASSIGN(auto pair, ReadGoBuildInfo(elf_reader.get())); auto version = pair.first; - EXPECT_THAT(version, StrEq("1.24.6")); + EXPECT_THAT(version, StrEq("1.24.11")); } TEST(ReadGoBuildInfoTest, BuildinfoLittleEndian) { diff --git a/src/stirling/obj_tools/testdata/go/BUILD.bazel b/src/stirling/obj_tools/testdata/go/BUILD.bazel index 92d2299e515..7000fa7dfe5 100644 --- a/src/stirling/obj_tools/testdata/go/BUILD.bazel +++ b/src/stirling/obj_tools/testdata/go/BUILD.bazel @@ -81,7 +81,7 @@ filegroup( # TODO(ddelnano): rules_go doesn't support populating .buildinfo with dependency information (https://github.com/bazel-contrib/rules_go/issues/3090). # Once this is supported, test_buildinfo_with_mods should be replaced with a bazel built binary. "test_buildinfo_with_mods", - ":test_go_1_23_binary", ":test_go_1_24_binary", + ":test_go_1_25_binary", ], ) diff --git a/src/stirling/scripts/benchmark_stirling_wrapper_http2_tracing.sh b/src/stirling/scripts/benchmark_stirling_wrapper_http2_tracing.sh index 7a367020793..6d3c5e41c57 100755 --- a/src/stirling/scripts/benchmark_stirling_wrapper_http2_tracing.sh +++ b/src/stirling/scripts/benchmark_stirling_wrapper_http2_tracing.sh @@ -24,11 +24,11 @@ BAZEL_BUILD_CMD="bazel build --compilation_mode=opt" TEST_EXE_BASE_DIR="bazel-bin/src/stirling/source_connectors/socket_tracer/protocols/http2/testing" -GRPC_CLIENT_LABEL="src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client:golang_1_23_grpc_client" -GRPC_CLIENT_EXE="${TEST_EXE_BASE_DIR}/go_grpc_client/golang_1_23_grpc_client" +GRPC_CLIENT_LABEL="src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client:golang_1_24_grpc_client" +GRPC_CLIENT_EXE="${TEST_EXE_BASE_DIR}/go_grpc_client/golang_1_24_grpc_client" -GRPC_SERVER_LABEL="src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_23_grpc_server" -GRPC_SERVER_EXE="${TEST_EXE_BASE_DIR}/go_grpc_server/golang_1_23_grpc_server" +GRPC_SERVER_LABEL="src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_24_grpc_server" +GRPC_SERVER_EXE="${TEST_EXE_BASE_DIR}/go_grpc_server/golang_1_24_grpc_server" STIRLING_WRAPPER_LABEL="src/stirling/binaries:stirling_wrapper" STIRLING_WRAPPER_EXE="bazel-bin/src/stirling/binaries/stirling_wrapper" diff --git a/src/stirling/source_connectors/dynamic_bpftrace/BUILD.bazel b/src/stirling/source_connectors/dynamic_bpftrace/BUILD.bazel index 5a45f5ad839..0a8e0085d1d 100644 --- a/src/stirling/source_connectors/dynamic_bpftrace/BUILD.bazel +++ b/src/stirling/source_connectors/dynamic_bpftrace/BUILD.bazel @@ -38,8 +38,8 @@ pl_cc_bpf_test( name = "dynamic_bpftrace_connector_bpf_test", srcs = ["dynamic_bpftrace_connector_bpf_test.cc"], data = [ - "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_23_grpc_server_with_certs", "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_24_grpc_server_with_certs", + "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_25_grpc_server_with_certs", ], tags = [ "cpu:16", diff --git a/src/stirling/source_connectors/dynamic_bpftrace/dynamic_bpftrace_connector_bpf_test.cc b/src/stirling/source_connectors/dynamic_bpftrace/dynamic_bpftrace_connector_bpf_test.cc index 31a978177c2..3ddb93d28e0 100644 --- a/src/stirling/source_connectors/dynamic_bpftrace/dynamic_bpftrace_connector_bpf_test.cc +++ b/src/stirling/source_connectors/dynamic_bpftrace/dynamic_bpftrace_connector_bpf_test.cc @@ -462,23 +462,23 @@ TEST(DynamicBPFTraceConnectorTest, BPFTraceCheckPrintfsError) { HasSubstr("All printf statements must have exactly the same format string"))); } -constexpr std::string_view kServerPath_1_23 = - "src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server/" - "golang_1_23_grpc_server"; constexpr std::string_view kServerPath_1_24 = "src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server/" "golang_1_24_grpc_server"; +constexpr std::string_view kServerPath_1_25 = + "src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server/" + "golang_1_25_grpc_server"; TEST(DynamicBPFTraceConnectorTest, InsertUProbeTargetObjPaths) { - std::string go1_23_binary_path = px::testing::BazelRunfilePath(kServerPath_1_23).string(); std::string go1_24_binary_path = px::testing::BazelRunfilePath(kServerPath_1_24).string(); + std::string go1_25_binary_path = px::testing::BazelRunfilePath(kServerPath_1_25).string(); - ASSERT_TRUE(fs::Exists(go1_23_binary_path)); ASSERT_TRUE(fs::Exists(go1_24_binary_path)); + ASSERT_TRUE(fs::Exists(go1_25_binary_path)); DeploymentSpec spec; - spec.mutable_path_list()->add_paths(go1_23_binary_path); spec.mutable_path_list()->add_paths(go1_24_binary_path); + spec.mutable_path_list()->add_paths(go1_25_binary_path); std::string uprobe_script = "// Deploys uprobes to trace http2 traffic.\n" @@ -489,16 +489,16 @@ TEST(DynamicBPFTraceConnectorTest, InsertUProbeTargetObjPaths) { InsertUprobeTargetObjPaths(spec, &uprobe_script); EXPECT_EQ( uprobe_script, - absl::StrCat("// Deploys uprobes to trace http2 traffic.\n", "uprobe:", go1_23_binary_path, + absl::StrCat("// Deploys uprobes to trace http2 traffic.\n", "uprobe:", go1_24_binary_path, ":\"golang.org/x/net/http2.(*Framer).WriteDataPadded\",\n" "uprobe:", - go1_24_binary_path, + go1_25_binary_path, ":\"golang.org/x/net/http2.(*Framer).WriteDataPadded\"" "{ printf(\"stream_id: %d, end_stream: %d\", arg0, arg1); }\n", - "uretprobe:", go1_23_binary_path, + "uretprobe:", go1_24_binary_path, ":\"golang.org/x/net/http2.(*Framer).WriteDataPadded\",\n" "uretprobe:", - go1_24_binary_path, + go1_25_binary_path, ":\"golang.org/x/net/http2.(*Framer).WriteDataPadded\"" "{ printf(\"retval: %d\", retval); }")); } diff --git a/src/stirling/source_connectors/dynamic_tracer/BUILD.bazel b/src/stirling/source_connectors/dynamic_tracer/BUILD.bazel index 1d47643b4ea..276f51b5b8c 100644 --- a/src/stirling/source_connectors/dynamic_tracer/BUILD.bazel +++ b/src/stirling/source_connectors/dynamic_tracer/BUILD.bazel @@ -48,10 +48,10 @@ pl_cc_bpf_test( timeout = "moderate", srcs = ["dynamic_trace_bpf_test.cc"], data = [ - "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client:golang_1_23_grpc_client", "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client:golang_1_24_grpc_client", - "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_23_grpc_server_with_certs", + "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client:golang_1_25_grpc_client", "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_24_grpc_server_with_certs", + "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_25_grpc_server_with_certs", ], tags = [ "cpu:16", @@ -71,8 +71,8 @@ pl_cc_bpf_test( srcs = ["stirling_dt_bpf_test.cc"], data = [ "//src/stirling/obj_tools/testdata/cc:test_exe", - "//src/stirling/obj_tools/testdata/go:test_go_1_23_binary", "//src/stirling/obj_tools/testdata/go:test_go_1_24_binary", + "//src/stirling/obj_tools/testdata/go:test_go_1_25_binary", "//src/stirling/testing/dns:dns_hammer", "//src/stirling/testing/dns:dns_hammer_image.tar", ], diff --git a/src/stirling/source_connectors/dynamic_tracer/dynamic_trace_bpf_test.cc b/src/stirling/source_connectors/dynamic_tracer/dynamic_trace_bpf_test.cc index 801847b3958..604df4b3e36 100644 --- a/src/stirling/source_connectors/dynamic_tracer/dynamic_trace_bpf_test.cc +++ b/src/stirling/source_connectors/dynamic_tracer/dynamic_trace_bpf_test.cc @@ -30,13 +30,6 @@ #include "src/stirling/proto/stirling.pb.h" -constexpr std::string_view kGo1_23_ClientPath = - "src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client/" - "golang_1_23_grpc_client"; -constexpr std::string_view kGo1_23_ServerPath = - "src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server/" - "golang_1_23_grpc_server"; - constexpr std::string_view kGo1_24_ClientPath = "src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client/" "golang_1_24_grpc_client"; @@ -44,6 +37,13 @@ constexpr std::string_view kGo1_24_ServerPath = "src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server/" "golang_1_24_grpc_server"; +constexpr std::string_view kGo1_25_ClientPath = + "src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client/" + "golang_1_25_grpc_client"; +constexpr std::string_view kGo1_25_ServerPath = + "src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server/" + "golang_1_25_grpc_server"; + DECLARE_bool(debug_dt_pipeline); namespace px { namespace stirling { @@ -122,8 +122,8 @@ class GoHTTPDynamicTraceTest }; INSTANTIATE_TEST_SUITE_P(GoHTTPDynamicTraceTestInstances, GoHTTPDynamicTraceTest, - ::testing::Values(std::make_pair(kGo1_23_ClientPath, kGo1_23_ServerPath), - std::make_pair(kGo1_24_ClientPath, kGo1_24_ServerPath))); + ::testing::Values(std::make_pair(kGo1_24_ClientPath, kGo1_24_ServerPath), + std::make_pair(kGo1_25_ClientPath, kGo1_25_ServerPath))); constexpr char kGRPCTraceProgram[] = R"( tracepoints { diff --git a/src/stirling/source_connectors/dynamic_tracer/stirling_dt_bpf_test.cc b/src/stirling/source_connectors/dynamic_tracer/stirling_dt_bpf_test.cc index b21ee70612d..7e9e4486516 100644 --- a/src/stirling/source_connectors/dynamic_tracer/stirling_dt_bpf_test.cc +++ b/src/stirling/source_connectors/dynamic_tracer/stirling_dt_bpf_test.cc @@ -274,8 +274,8 @@ TEST_F(DynamicTraceAPITest, InvalidReference) { // Dynamic Trace Golang tests //----------------------------------------------------------------------------- -const std::string_view kGo1_23BinaryPath = "src/stirling/obj_tools/testdata/go/test_go_1_23_binary"; const std::string_view kGo1_24BinaryPath = "src/stirling/obj_tools/testdata/go/test_go_1_24_binary"; +const std::string_view kGo1_25BinaryPath = "src/stirling/obj_tools/testdata/go/test_go_1_25_binary"; struct DynamicTraceGolangTestCase { const std::filesystem::path binary_path; @@ -292,8 +292,8 @@ class DynamicTraceGolangTest : public StirlingDynamicTraceBPFTest, }; INSTANTIATE_TEST_SUITE_P(DynamicTraceGolangTestInstances, DynamicTraceGolangTest, - ::testing::Values(DynamicTraceGolangTestCase{kGo1_23BinaryPath}, - DynamicTraceGolangTestCase{kGo1_24BinaryPath})); + ::testing::Values(DynamicTraceGolangTestCase{kGo1_24BinaryPath}, + DynamicTraceGolangTestCase{kGo1_25BinaryPath})); TEST_P(DynamicTraceGolangTest, TraceLatencyOnly) { BinaryRunner trace_target; @@ -578,16 +578,16 @@ tracepoints { INSTANTIATE_TEST_SUITE_P( NilAndNonNilError, ReturnedErrorInterfaceTest, ::testing::Values( - ReturnedErrorInterfaceTestCase{kGo1_23BinaryPath, + ReturnedErrorInterfaceTestCase{kGo1_24BinaryPath, absl::Substitute(kProgramTxtPBTmpl, "main.ReturnError"), "{\"X\":3,\"Y\":4}"}, - ReturnedErrorInterfaceTestCase{kGo1_23BinaryPath, + ReturnedErrorInterfaceTestCase{kGo1_24BinaryPath, absl::Substitute(kProgramTxtPBTmpl, "main.ReturnNilError"), "{\"tab\":0,\"data\":0}"}, - ReturnedErrorInterfaceTestCase{kGo1_24BinaryPath, + ReturnedErrorInterfaceTestCase{kGo1_25BinaryPath, absl::Substitute(kProgramTxtPBTmpl, "main.ReturnError"), "{\"X\":3,\"Y\":4}"}, - ReturnedErrorInterfaceTestCase{kGo1_24BinaryPath, + ReturnedErrorInterfaceTestCase{kGo1_25BinaryPath, absl::Substitute(kProgramTxtPBTmpl, "main.ReturnNilError"), "{\"tab\":0,\"data\":0}"})); @@ -672,10 +672,10 @@ TEST_P(DynamicTraceGolangTestWithParam, TraceByteArray) { INSTANTIATE_TEST_SUITE_P( GolangByteArrayTests, DynamicTraceGolangTestWithParam, - ::testing::Values(TestParam{kGo1_23BinaryPath, "main.BytesToHex", "Bytes"}, - TestParam{kGo1_23BinaryPath, "main.Uint8ArrayToHex", "Uint8"}, - TestParam{kGo1_24BinaryPath, "main.BytesToHex", "Bytes"}, - TestParam{kGo1_24BinaryPath, "main.Uint8ArrayToHex", "Uint8"})); + ::testing::Values(TestParam{kGo1_24BinaryPath, "main.BytesToHex", "Bytes"}, + TestParam{kGo1_24BinaryPath, "main.Uint8ArrayToHex", "Uint8"}, + TestParam{kGo1_25BinaryPath, "main.BytesToHex", "Bytes"}, + TestParam{kGo1_25BinaryPath, "main.Uint8ArrayToHex", "Uint8"})); //----------------------------------------------------------------------------- // Dynamic Trace C++ tests diff --git a/src/stirling/source_connectors/socket_tracer/grpc_trace_bpf_test.cc b/src/stirling/source_connectors/socket_tracer/grpc_trace_bpf_test.cc index f09029853fe..50ccd9a8e42 100644 --- a/src/stirling/source_connectors/socket_tracer/grpc_trace_bpf_test.cc +++ b/src/stirling/source_connectors/socket_tracer/grpc_trace_bpf_test.cc @@ -190,7 +190,7 @@ INSTANTIATE_TEST_SUITE_P(SecurityModeTest, GRPCTraceTest, ::testing::Values( // Did not enumerate all combinations, as they are independent based on // our knowledge, and to minimize test size to reduce flakiness. - TestParams{"1_23", true, true}, TestParams{"1_23", true, false}, + TestParams{"1_25", true, true}, TestParams{"1_25", true, false}, TestParams{"1_24", true, true}, TestParams{"1_24", true, false}, TestParams{"boringcrypto", true, true})); diff --git a/src/stirling/testing/demo_apps/go_grpc_tls_pl/server/update_ghcr.sh b/src/stirling/testing/demo_apps/go_grpc_tls_pl/server/update_ghcr.sh index 22226079b59..7f25d44b15a 100755 --- a/src/stirling/testing/demo_apps/go_grpc_tls_pl/server/update_ghcr.sh +++ b/src/stirling/testing/demo_apps/go_grpc_tls_pl/server/update_ghcr.sh @@ -22,6 +22,7 @@ declare -A GO_IMAGE_DIGEST_MAP=( ["1.20-alpine@sha256:e47f121850f4e276b2b210c56df3fda9191278dd84a3a442bfe0b09934462a8f"]="v1.58.3" ["1.21-alpine@sha256:2414035b086e3c42b99654c8b26e6f5b1b1598080d65fd03c7f499552ff4dc94"]="v1.58.3" ["1.22-alpine@sha256:1699c10032ca2582ec89a24a1312d986a3f094aed3d5c1147b19880afe40e052"]="v1.58.3" + ["1.23-alpine@sha256:383395b794dffa5b53012a212365d40c8e37109a626ca30d6151c8348d380b5f"]="v1.75.1" ) version=1.0 diff --git a/src/stirling/testing/demo_apps/go_https/server/update_ghcr.sh b/src/stirling/testing/demo_apps/go_https/server/update_ghcr.sh index 1e7ed5385d7..45c5eff6738 100755 --- a/src/stirling/testing/demo_apps/go_https/server/update_ghcr.sh +++ b/src/stirling/testing/demo_apps/go_https/server/update_ghcr.sh @@ -22,6 +22,7 @@ declare -A GO_IMAGE_DIGEST_MAP=( ["1.20-alpine@sha256:e47f121850f4e276b2b210c56df3fda9191278dd84a3a442bfe0b09934462a8f"]="v0.35.0" ["1.21-alpine@sha256:2414035b086e3c42b99654c8b26e6f5b1b1598080d65fd03c7f499552ff4dc94"]="v0.35.0" ["1.22-alpine@sha256:1699c10032ca2582ec89a24a1312d986a3f094aed3d5c1147b19880afe40e052"]="v0.35.0" + ["1.23-alpine@sha256:383395b794dffa5b53012a212365d40c8e37109a626ca30d6151c8348d380b5f"]="v0.43.0" ) version=1.0 From db2f49c7bd902045e37c65631c779a6cca80be07 Mon Sep 17 00:00:00 2001 From: Dom Del Nano Date: Tue, 6 Jan 2026 04:42:34 +0000 Subject: [PATCH 02/11] Add missing go 1.23 container_images and fix protobuf build by upgrading go module Signed-off-by: Dom Del Nano --- go.mod | 2 +- go.sum | 4 ++-- go_deps.bzl | 4 ++-- .../source_connectors/socket_tracer/BUILD.bazel | 4 ++-- .../socket_tracer/testing/container_images/BUILD.bazel | 8 ++++---- .../socket_tracer/testing/containers/BUILD.bazel | 10 ++++++++++ 6 files changed, 21 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index 4224503b9c1..10092b8e4be 100644 --- a/go.mod +++ b/go.mod @@ -276,7 +276,7 @@ require ( golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/protobuf v1.29.1 // indirect + google.golang.org/protobuf v1.36.3 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/launchdarkly/go-jsonstream.v1 v1.0.1 // indirect diff --git a/go.sum b/go.sum index b8697cb4add..1a9025e4194 100644 --- a/go.sum +++ b/go.sum @@ -1331,8 +1331,8 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.29.1 h1:7QBf+IK2gx70Ap/hDsOmam3GE0v9HicjfEdAxE62UoM= -google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU= +google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/go_deps.bzl b/go_deps.bzl index 6590dff5052..4917b875320 100644 --- a/go_deps.bzl +++ b/go_deps.bzl @@ -4427,8 +4427,8 @@ def pl_go_dependencies(): name = "org_golang_google_protobuf", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], importpath = "google.golang.org/protobuf", - sum = "h1:7QBf+IK2gx70Ap/hDsOmam3GE0v9HicjfEdAxE62UoM=", - version = "v1.29.1", + sum = "h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU=", + version = "v1.36.3", ) go_repository( name = "org_golang_x_crypto", diff --git a/src/stirling/source_connectors/socket_tracer/BUILD.bazel b/src/stirling/source_connectors/socket_tracer/BUILD.bazel index 76a9ca13b77..39c3b3ad842 100644 --- a/src/stirling/source_connectors/socket_tracer/BUILD.bazel +++ b/src/stirling/source_connectors/socket_tracer/BUILD.bazel @@ -304,11 +304,11 @@ pl_cc_bpf_test( timeout = "moderate", srcs = ["grpc_trace_bpf_test.cc"], data = [ - "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client:golang_1_23_grpc_client", "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client:golang_1_24_grpc_client", + "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client:golang_1_25_grpc_client", "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client:golang_boringcrypto_grpc_client", - "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_23_grpc_server_with_certs", "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_24_grpc_server_with_certs", + "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_25_grpc_server_with_certs", "//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_boringcrypto_grpc_server_with_certs", ], flaky = True, diff --git a/src/stirling/source_connectors/socket_tracer/testing/container_images/BUILD.bazel b/src/stirling/source_connectors/socket_tracer/testing/container_images/BUILD.bazel index 0d1ad990576..44bb7ab7f2d 100644 --- a/src/stirling/source_connectors/socket_tracer/testing/container_images/BUILD.bazel +++ b/src/stirling/source_connectors/socket_tracer/testing/container_images/BUILD.bazel @@ -21,29 +21,29 @@ package(default_visibility = ["//src/stirling:__subpackages__"]) # Generate all Go container library permutations for supported Go versions. go_container_libraries( - container_type = "grpc_server", bazel_sdk_versions = pl_all_supported_go_sdk_versions, + container_type = "grpc_server", prebuilt_container_versions = pl_go_test_versions, ) # Stirling test cases usually test server side tracing. Therefore # we only need to provide the bazel SDK versions for the client containers. go_container_libraries( - container_type = "grpc_client", bazel_sdk_versions = pl_all_supported_go_sdk_versions, + container_type = "grpc_client", ) go_container_libraries( - container_type = "tls_server", bazel_sdk_versions = pl_all_supported_go_sdk_versions, + container_type = "tls_server", prebuilt_container_versions = pl_go_test_versions, ) # Stirling test cases usually test server side tracing. Therefore # we only need to provide the bazel SDK versions for the client containers. go_container_libraries( - container_type = "tls_client", bazel_sdk_versions = pl_all_supported_go_sdk_versions, + container_type = "tls_client", ) pl_cc_test_library( diff --git a/src/stirling/source_connectors/socket_tracer/testing/containers/BUILD.bazel b/src/stirling/source_connectors/socket_tracer/testing/containers/BUILD.bazel index 3f73a0d5174..7c1b08582ec 100644 --- a/src/stirling/source_connectors/socket_tracer/testing/containers/BUILD.bazel +++ b/src/stirling/source_connectors/socket_tracer/testing/containers/BUILD.bazel @@ -156,6 +156,11 @@ container_image( base = "@golang_1_22_https_server_with_buildinfo//image", ) +container_image( + name = "golang_1_23_https_server_with_buildinfo", + base = "@golang_1_23_https_server_with_buildinfo//image", +) + container_image( name = "golang_1_18_grpc_server_with_buildinfo", base = "@golang_1_18_grpc_server_with_buildinfo//image", @@ -181,6 +186,11 @@ container_image( base = "@golang_1_22_grpc_server_with_buildinfo//image", ) +container_image( + name = "golang_1_23_grpc_server_with_buildinfo", + base = "@golang_1_23_grpc_server_with_buildinfo//image", +) + container_image( name = "amqp_image", base = "@rabbitmq_3_management//image", From 600075303da94e08bdf587a5c26608781b1800df Mon Sep 17 00:00:00 2001 From: Dom Del Nano Date: Tue, 6 Jan 2026 04:43:19 +0000 Subject: [PATCH 03/11] Update go mod tidy to use oldest go sdk Signed-off-by: Dom Del Nano --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1d2db23887f..74286e6d6b3 100644 --- a/Makefile +++ b/Makefile @@ -70,7 +70,7 @@ test-tsan: ## Run all the tests, with thread sanitizer. .PHONY: go-mod-tidy go-mod-tidy: ## Ensure that go are cleaned up. - go mod tidy -compat=1.21 + go mod tidy -compat=1.24 .PHONY: go-mod-ensure go-mod-ensure: ## Ensure that go dependencies exist. From e9849a1a59b770507829a179f230e848a7481d61 Mon Sep 17 00:00:00 2001 From: Dom Del Nano Date: Tue, 6 Jan 2026 06:32:14 +0000 Subject: [PATCH 04/11] Add missing Go client server container classes Signed-off-by: Dom Del Nano --- .../socket_tracer/go_tls_trace_bpf_test.cc | 11 +++++++++-- .../socket_tracer/http2_trace_bpf_test.cc | 11 +++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/stirling/source_connectors/socket_tracer/go_tls_trace_bpf_test.cc b/src/stirling/source_connectors/socket_tracer/go_tls_trace_bpf_test.cc index afe76d9f758..074b6011742 100644 --- a/src/stirling/source_connectors/socket_tracer/go_tls_trace_bpf_test.cc +++ b/src/stirling/source_connectors/socket_tracer/go_tls_trace_bpf_test.cc @@ -86,7 +86,8 @@ struct Go1_22TLSClientServerContainers { struct Go1_23TLSClientServerContainers { using GoTLSServerContainer = ::px::stirling::testing::Go1_23_TLSServerContainer; - using GoTLSClientContainer = ::px::stirling::testing::Go1_23_TLSClientContainer; + // Go 1.23 client container is no longer built; use 1.24 client instead. + using GoTLSClientContainer = ::px::stirling::testing::Go1_24_TLSClientContainer; }; struct Go1_24TLSClientServerContainers { @@ -94,6 +95,11 @@ struct Go1_24TLSClientServerContainers { using GoTLSClientContainer = ::px::stirling::testing::Go1_24_TLSClientContainer; }; +struct Go1_25TLSClientServerContainers { + using GoTLSServerContainer = ::px::stirling::testing::Go1_25_TLSServerContainer; + using GoTLSClientContainer = ::px::stirling::testing::Go1_25_TLSClientContainer; +}; + struct GoBoringCryptoTLSClientServerContainers { using GoTLSServerContainer = ::px::stirling::testing::GoBoringCryptoTLSServerContainer; using GoTLSClientContainer = ::px::stirling::testing::GoBoringCryptoTLSClientContainer; @@ -102,7 +108,8 @@ struct GoBoringCryptoTLSClientServerContainers { typedef ::testing::Types + Go1_23TLSClientServerContainers, Go1_24TLSClientServerContainers, + Go1_25TLSClientServerContainers> GoVersions; TYPED_TEST_SUITE(GoTLSTraceTest, GoVersions); diff --git a/src/stirling/source_connectors/socket_tracer/http2_trace_bpf_test.cc b/src/stirling/source_connectors/socket_tracer/http2_trace_bpf_test.cc index 61cdc2625c0..40b3b16a840 100644 --- a/src/stirling/source_connectors/socket_tracer/http2_trace_bpf_test.cc +++ b/src/stirling/source_connectors/socket_tracer/http2_trace_bpf_test.cc @@ -90,7 +90,8 @@ struct Go1_22GRPCClientServerContainers { struct Go1_23GRPCClientServerContainers { using ServerContainer = ::px::stirling::testing::Go1_23_GRPCServerContainer; - using ClientContainer = ::px::stirling::testing::Go1_23_GRPCClientContainer; + // Go 1.23 client container is no longer built; use 1.24 client instead. + using ClientContainer = ::px::stirling::testing::Go1_24_GRPCClientContainer; }; struct Go1_24GRPCClientServerContainers { @@ -98,6 +99,11 @@ struct Go1_24GRPCClientServerContainers { using ClientContainer = ::px::stirling::testing::Go1_24_GRPCClientContainer; }; +struct Go1_25GRPCClientServerContainers { + using ServerContainer = ::px::stirling::testing::Go1_25_GRPCServerContainer; + using ClientContainer = ::px::stirling::testing::Go1_25_GRPCClientContainer; +}; + struct GoBoringCryptoGRPCClientServerContainers { using ServerContainer = ::px::stirling::testing::GoBoringCryptoGRPCServerContainer; using ClientContainer = ::px::stirling::testing::GoBoringCryptoGRPCClientContainer; @@ -106,7 +112,8 @@ struct GoBoringCryptoGRPCClientServerContainers { typedef ::testing::Types + Go1_23GRPCClientServerContainers, Go1_24GRPCClientServerContainers, + Go1_25GRPCClientServerContainers> GoVersions; TYPED_TEST_SUITE(HTTP2TraceTest, GoVersions); From e695bdf40e7674ea0c3e145fa167cbe358542aea Mon Sep 17 00:00:00 2001 From: Dom Del Nano Date: Tue, 6 Jan 2026 07:09:20 +0000 Subject: [PATCH 05/11] Disable proto mode to avoid protobuf import cycle from rules_go Signed-off-by: Dom Del Nano --- go_deps.bzl | 1 + 1 file changed, 1 insertion(+) diff --git a/go_deps.bzl b/go_deps.bzl index 4917b875320..81b61660962 100644 --- a/go_deps.bzl +++ b/go_deps.bzl @@ -4426,6 +4426,7 @@ def pl_go_dependencies(): go_repository( name = "org_golang_google_protobuf", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], + build_file_proto_mode = "disable", importpath = "google.golang.org/protobuf", sum = "h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU=", version = "v1.36.3", From d78691f166d4b15d150154942257d5a8810a5484 Mon Sep 17 00:00:00 2001 From: Dom Del Nano Date: Tue, 6 Jan 2026 21:15:21 +0000 Subject: [PATCH 06/11] Fix compilation Signed-off-by: Dom Del Nano --- go.mod | 3 +-- go.sum | 26 +++++++++++++++++++++++++- go_deps.bzl | 5 ++--- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 10092b8e4be..08bf9c343f5 100644 --- a/go.mod +++ b/go.mod @@ -163,7 +163,7 @@ require ( github.com/goccy/go-yaml v1.9.8 // indirect github.com/golang-jwt/jwt/v4 v4.5.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.0.1 // indirect github.com/google/gnostic v0.6.9 // indirect @@ -310,7 +310,6 @@ replace ( github.com/go-openapi/strfmt => github.com/go-openapi/strfmt v0.20.0 // Upgrade after https://github.com/golang/mock/pull/601 makes it into a release github.com/golang/mock => github.com/golang/mock v1.5.0 - github.com/golang/protobuf => github.com/golang/protobuf v1.5.2 github.com/google/go-cmp => github.com/google/go-cmp v0.5.5 google.golang.org/api => google.golang.org/api v0.43.0 google.golang.org/genproto => google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa diff --git a/go.sum b/go.sum index 1a9025e4194..d2336630fda 100644 --- a/go.sum +++ b/go.sum @@ -416,8 +416,25 @@ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.5.0 h1:jlYHihg//f7RRwuPfptm04yp4s7O6Kw8EZiVYIGcH0g= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.2-0.20190904063534-ff6b7dc882cf/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= @@ -1327,8 +1344,15 @@ google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa h1:I0YcKz0I7OAhddo google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/grpc v1.43.0 h1:Eeu7bZtDZ2DpRCsLhUlcrLnvYaMK1Gz86a+hMVvELmM= google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU= diff --git a/go_deps.bzl b/go_deps.bzl index 81b61660962..d1578d1c4a1 100644 --- a/go_deps.bzl +++ b/go_deps.bzl @@ -1527,9 +1527,8 @@ def pl_go_dependencies(): name = "com_github_golang_protobuf", build_directives = ["gazelle:map_kind go_binary pl_go_binary @px//bazel:pl_build_system.bzl", "gazelle:map_kind go_test pl_go_test @px//bazel:pl_build_system.bzl"], importpath = "github.com/golang/protobuf", - replace = "github.com/golang/protobuf", - sum = "h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=", - version = "v1.5.2", + sum = "h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=", + version = "v1.5.4", ) go_repository( name = "com_github_golang_snappy", From c42f8d3fd2b3e08610e93d79c2a7dbf130560581 Mon Sep 17 00:00:00 2001 From: Dom Del Nano Date: Wed, 7 Jan 2026 06:32:30 +0000 Subject: [PATCH 07/11] Fix dwarvifier unit test magic numbers Signed-off-by: Dom Del Nano --- .../dynamic_tracer/dynamic_tracing/dwarvifier_test.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stirling/source_connectors/dynamic_tracer/dynamic_tracing/dwarvifier_test.cc b/src/stirling/source_connectors/dynamic_tracer/dynamic_tracing/dwarvifier_test.cc index 27dce6fffd6..30c61e083cc 100644 --- a/src/stirling/source_connectors/dynamic_tracer/dynamic_tracing/dwarvifier_test.cc +++ b/src/stirling/source_connectors/dynamic_tracer/dynamic_tracing/dwarvifier_test.cc @@ -1820,7 +1820,7 @@ probes { scalar_var { name: "main__IntStruct_sym_addr1" type: UINT64 - constant: "5104096" + constant: "5104088" } } vars { From 923c467e9df2cea7ac55f71825afc33ded47be9f Mon Sep 17 00:00:00 2001 From: Dom Del Nano Date: Thu, 19 Feb 2026 21:22:25 -0800 Subject: [PATCH 08/11] Update to latest Go minor versions. Update docker image with correct Go version Signed-off-by: Dom Del Nano --- WORKSPACE | 6 +++--- docker.properties | 8 ++++---- go.mod | 2 +- tools/chef/cookbooks/px_dev/attributes/linux.rb | 4 ++-- tools/chef/cookbooks/px_dev/attributes/mac_os_x.rb | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index 44c2963fe2f..47d9e47803f 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -41,7 +41,7 @@ pl_go_overrides() go_download_sdk( name = "go_sdk", - version = "1.25.5", + version = "1.25.7", ) go_rules_dependencies() @@ -221,7 +221,7 @@ gazelle_dependencies(go_sdk = "go_sdk") go_download_sdk( name = "go_sdk_1_24", - version = "1.24.11", + version = "1.24.13", ) # The go_sdk_boringcrypto SDK is used for testing boringcrypto specific functionality (TLS tracing). @@ -234,7 +234,7 @@ go_download_sdk( go_download_sdk( name = "go_sdk_boringcrypto", experiments = ["boringcrypto"], - version = "1.24.10", + version = "1.24.12", ) pip_parse( diff --git a/docker.properties b/docker.properties index bb7696c727f..21fd4d8bd7b 100644 --- a/docker.properties +++ b/docker.properties @@ -1,4 +1,4 @@ -DOCKER_IMAGE_TAG=202512082352 -LINTER_IMAGE_DIGEST=441fc5a65697dab0b38627d5afde9e38da6812f1a5b98732b224161c23238e73 -DEV_IMAGE_DIGEST=cac2e8a1c3e70dde4e5089b2383b2e11cc022af467ee430c12416eb42066fbb7 -DEV_IMAGE_WITH_EXTRAS_DIGEST=e84f82d62540e1ca72650f8f7c9c4fe0b32b64a33f04cf0b913b9961527c9e30 +DOCKER_IMAGE_TAG=202602200429 +LINTER_IMAGE_DIGEST=78b2af6f23375e9b8f048d03c6cb1de139636104f31f8d5a0c7e7afaa12f2fae +DEV_IMAGE_DIGEST=ca94c1abe72e89afed95ee1c6497604e5a65f36ac4f5221b9b19a890657c7f96 +DEV_IMAGE_WITH_EXTRAS_DIGEST=a0cf945bb588860f25229482503547ad1a390e7c42d91936cdaa79e2ee018b9f diff --git a/go.mod b/go.mod index 08bf9c343f5..e8b6051d59a 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module px.dev/pixie -go 1.24.6 +go 1.25.7 require ( cloud.google.com/go v0.81.0 diff --git a/tools/chef/cookbooks/px_dev/attributes/linux.rb b/tools/chef/cookbooks/px_dev/attributes/linux.rb index 7af82f14002..e93d7ac48fe 100644 --- a/tools/chef/cookbooks/px_dev/attributes/linux.rb +++ b/tools/chef/cookbooks/px_dev/attributes/linux.rb @@ -33,9 +33,9 @@ '648b599397548e4bb92429eec6391374c2cbb0edb835e3b3f03d4281c011f401' default['golang']['download_path'] = - 'https://go.dev/dl/go1.24.6.linux-amd64.tar.gz' + 'https://go.dev/dl/go1.25.7.linux-amd64.tar.gz' default['golang']['sha256'] = - 'bbca37cc395c974ffa4893ee35819ad23ebb27426df87af92e93a9ec66ef8712' + '12e6d6a191091ae27dc31f6efc630e3a3b8ba409baf3573d955b196fdf086005' default['golangci-lint']['download_path'] = 'https://github.com/golangci/golangci-lint/releases/download/v2.3.1/golangci-lint-2.3.1-linux-amd64.tar.gz' diff --git a/tools/chef/cookbooks/px_dev/attributes/mac_os_x.rb b/tools/chef/cookbooks/px_dev/attributes/mac_os_x.rb index 0df3d4e58ac..0a33ca2ae05 100644 --- a/tools/chef/cookbooks/px_dev/attributes/mac_os_x.rb +++ b/tools/chef/cookbooks/px_dev/attributes/mac_os_x.rb @@ -34,9 +34,9 @@ '8d3709d957c7115610e764621569728be102d213fee15bc1d1aa9d465eb2c258' default['golang']['download_path'] = - 'https://go.dev/dl/go1.24.6.darwin-amd64.tar.gz' + 'https://go.dev/dl/go1.25.7.darwin-amd64.tar.gz' default['golang']['sha256'] = - '4a8d7a32052f223e71faab424a69430455b27b3fff5f4e651f9d97c3e51a8746' + 'bf5050a2152f4053837b886e8d9640c829dbacbc3370f913351eb0904cb706f5' default['golangci-lint']['download_path'] = 'https://github.com/golangci/golangci-lint/releases/download/v2.3.1/golangci-lint-2.3.1-darwin-amd64.tar.gz' From 75e15ed37eb58da0b13d1f498ad42708ccd303f1 Mon Sep 17 00:00:00 2001 From: Dom Del Nano Date: Thu, 19 Feb 2026 22:15:18 -0800 Subject: [PATCH 09/11] Fix boring crypto version Signed-off-by: Dom Del Nano --- bazel/pl_build_system.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bazel/pl_build_system.bzl b/bazel/pl_build_system.bzl index 8a4cdaec903..82e0ba89fa3 100644 --- a/bazel/pl_build_system.bzl +++ b/bazel/pl_build_system.bzl @@ -23,7 +23,7 @@ load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") load("@rules_python//python:defs.bzl", "py_test") load("//bazel:toolchain_transitions.bzl", "qemu_interactive_runner") -pl_boringcrypto_go_sdk = ["1.24.10"] +pl_boringcrypto_go_sdk = ["1.24.12"] pl_go_test_versions = ["1.18", "1.19", "1.20", "1.21", "1.22", "1.23"] pl_supported_go_sdk_versions = ["1.24", "1.25"] From e2c3e256033a4713303ff8babb9c87d4ad5f0cfe Mon Sep 17 00:00:00 2001 From: Dom Del Nano Date: Fri, 20 Feb 2026 07:09:25 -0800 Subject: [PATCH 10/11] Fix unit tests Signed-off-by: Dom Del Nano --- src/stirling/obj_tools/go_syms_test.cc | 2 +- .../dynamic_tracer/dynamic_tracing/dwarvifier_test.cc | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/stirling/obj_tools/go_syms_test.cc b/src/stirling/obj_tools/go_syms_test.cc index a28836e3e25..5e309932d33 100644 --- a/src/stirling/obj_tools/go_syms_test.cc +++ b/src/stirling/obj_tools/go_syms_test.cc @@ -58,7 +58,7 @@ TEST(ReadGoBuildInfoTest, BuildinfoEndianAgnostic) { ASSERT_OK_AND_ASSIGN(std::unique_ptr elf_reader, ElfReader::Create(kPath)); ASSERT_OK_AND_ASSIGN(auto pair, ReadGoBuildInfo(elf_reader.get())); auto version = pair.first; - EXPECT_THAT(version, StrEq("1.24.11")); + EXPECT_THAT(version, StrEq("1.24.13")); } TEST(ReadGoBuildInfoTest, BuildinfoLittleEndian) { diff --git a/src/stirling/source_connectors/dynamic_tracer/dynamic_tracing/dwarvifier_test.cc b/src/stirling/source_connectors/dynamic_tracer/dynamic_tracing/dwarvifier_test.cc index 30c61e083cc..f7790f2d21e 100644 --- a/src/stirling/source_connectors/dynamic_tracer/dynamic_tracing/dwarvifier_test.cc +++ b/src/stirling/source_connectors/dynamic_tracer/dynamic_tracing/dwarvifier_test.cc @@ -1820,28 +1820,28 @@ probes { scalar_var { name: "main__IntStruct_sym_addr1" type: UINT64 - constant: "5104088" + constant: "5104104" } } vars { scalar_var { name: "runtime__errorString_sym_addr2" type: UINT64 - constant: "5104384" + constant: "5104416" } } vars { scalar_var { name: "runtime__plainError_sym_addr3" type: UINT64 - constant: "5104416" + constant: "5104448" } } vars { scalar_var { name: "internal___poll__errNetClosing_sym_addr4" type: UINT64 - constant: "5104448" + constant: "5104480" } } vars { From a963bcf648376fa51554d279ee8ca31492b601d4 Mon Sep 17 00:00:00 2001 From: Dom Del Nano Date: Fri, 20 Feb 2026 23:03:54 -0800 Subject: [PATCH 11/11] Handle docker in docker side car container access Signed-off-by: Dom Del Nano --- src/shared/services/pgtest/pgtest.go | 73 ++++++++++++++++++++++-- src/utils/testingutils/docker/elastic.go | 69 +++++++++++++++++++++- 2 files changed, 136 insertions(+), 6 deletions(-) diff --git a/src/shared/services/pgtest/pgtest.go b/src/shared/services/pgtest/pgtest.go index ac65f65172c..907cec67bbe 100644 --- a/src/shared/services/pgtest/pgtest.go +++ b/src/shared/services/pgtest/pgtest.go @@ -19,7 +19,11 @@ package pgtest import ( + "bufio" "fmt" + "os" + "regexp" + "time" "github.com/golang-migrate/migrate" "github.com/golang-migrate/migrate/database/postgres" @@ -33,6 +37,27 @@ import ( "px.dev/pixie/src/shared/services/pg" ) +// selfContainerID returns the current Docker container ID by parsing +// /proc/self/mountinfo. Docker bind-mounts /etc/hostname from +// /var/lib/docker/containers//hostname, exposing the container ID. +// Returns empty string if not running inside a Docker container. +func selfContainerID() string { + f, err := os.Open("/proc/self/mountinfo") + if err != nil { + return "" + } + defer f.Close() + + re := regexp.MustCompile(`/containers/([a-f0-9]{64})/hostname`) + scanner := bufio.NewScanner(f) + for scanner.Scan() { + if m := re.FindStringSubmatch(scanner.Text()); m != nil { + return m[1] + } + } + return "" +} + // SetupTestDB sets up a test database instance and applies migrations. func SetupTestDB(schemaSource *bindata.AssetSource) (*sqlx.DB, func(), error) { var db *sqlx.DB @@ -69,18 +94,58 @@ func SetupTestDB(schemaSource *bindata.AssetSource) (*sqlx.DB, func(), error) { if err != nil { return nil, nil, fmt.Errorf("Failed to run docker pool: %w", err) } - // Set a 5 minute expiration on resources. - err = resource.Expire(300) + // Set a 15 minute expiration on resources (extended for debugging). + err = resource.Expire(900) if err != nil { return nil, nil, err } - viper.Set("postgres_port", resource.GetPort("5432/tcp")) - viper.Set("postgres_hostname", resource.Container.NetworkSettings.Gateway) + // When running inside a container (e.g. CI), the postgres container is on + // a different Docker network and we can't reach it via host port mapping. + // Detect this and connect postgres to our network instead. + pgHost := resource.Container.NetworkSettings.Gateway + pgPort := resource.GetPort("5432/tcp") + selfID := selfContainerID() + log.Infof("selfContainerID: %q", selfID) + if selfID != "" { + selfContainer, err := pool.Client.InspectContainer(selfID) + if err != nil { + return nil, nil, fmt.Errorf("failed to inspect self container %s: %w", selfID, err) + } + for netName, net := range selfContainer.NetworkSettings.Networks { + if netName == "host" { + continue + } + err := pool.Client.ConnectNetwork(net.NetworkID, docker.NetworkConnectionOptions{ + Container: resource.Container.ID, + }) + if err != nil { + return nil, nil, fmt.Errorf("failed to connect postgres to network %s: %w", netName, err) + } + // Re-inspect to get the postgres container's IP on our network. + updated, err := pool.Client.InspectContainer(resource.Container.ID) + if err != nil { + return nil, nil, fmt.Errorf("failed to re-inspect postgres container: %w", err) + } + resource.Container = updated + if pgNet, ok := updated.NetworkSettings.Networks[netName]; ok { + pgHost = pgNet.IPAddress + pgPort = "5432" + log.Infof("pgHost set to %s:%s via network %s", pgHost, pgPort, netName) + } + break + } + } + if pgHost == "" { + pgHost = "localhost" + } + viper.Set("postgres_port", pgPort) + viper.Set("postgres_hostname", pgHost) viper.Set("postgres_db", dbName) viper.Set("postgres_username", "postgres") viper.Set("postgres_password", "secret") + pool.MaxWait = 10 * time.Minute if err = pool.Retry(func() error { log.Info("trying to connect") db = pg.MustCreateDefaultPostgresDB() diff --git a/src/utils/testingutils/docker/elastic.go b/src/utils/testingutils/docker/elastic.go index a90dafef4c2..22bf8972dae 100644 --- a/src/utils/testingutils/docker/elastic.go +++ b/src/utils/testingutils/docker/elastic.go @@ -19,7 +19,11 @@ package docker import ( + "bufio" "fmt" + "os" + "regexp" + "time" "github.com/olivere/elastic/v7" "github.com/ory/dockertest/v3" @@ -27,6 +31,27 @@ import ( log "github.com/sirupsen/logrus" ) +// selfContainerID returns the current Docker container ID by parsing +// /proc/self/mountinfo. Docker bind-mounts /etc/hostname from +// /var/lib/docker/containers//hostname, exposing the container ID. +// Returns empty string if not running inside a Docker container. +func selfContainerID() string { + f, err := os.Open("/proc/self/mountinfo") + if err != nil { + return "" + } + defer f.Close() + + re := regexp.MustCompile(`/containers/([a-f0-9]{64})/hostname`) + scanner := bufio.NewScanner(f) + for scanner.Scan() { + if m := re.FindStringSubmatch(scanner.Text()); m != nil { + return m[1] + } + } + return "" +} + func connectElastic(esURL string, esUser string, esPass string) (*elastic.Client, error) { es, err := elastic.NewClient(elastic.SetURL(esURL), elastic.SetBasicAuth(esUser, esPass), @@ -104,12 +129,52 @@ func SetupElastic() (*elastic.Client, func(), error) { return nil, cleanup, err } - clientPort := resource.GetPort("9200/tcp") + // When running inside a container (e.g. CI), the ES container is on + // a different Docker network and we can't reach it via host port mapping. + // Detect this and connect ES to our network instead. + esHost := resource.Container.NetworkSettings.Gateway + esPort := resource.GetPort("9200/tcp") + selfID := selfContainerID() + log.Infof("selfContainerID: %q", selfID) + if selfID != "" { + selfContainer, err := pool.Client.InspectContainer(selfID) + if err != nil { + return nil, cleanup, fmt.Errorf("failed to inspect self container %s: %w", selfID, err) + } + for netName, net := range selfContainer.NetworkSettings.Networks { + if netName == "host" { + continue + } + err := pool.Client.ConnectNetwork(net.NetworkID, docker.NetworkConnectionOptions{ + Container: resource.Container.ID, + }) + if err != nil { + return nil, cleanup, fmt.Errorf("failed to connect ES to network %s: %w", netName, err) + } + // Re-inspect to get the ES container's IP on our network. + updated, err := pool.Client.InspectContainer(resource.Container.ID) + if err != nil { + return nil, cleanup, fmt.Errorf("failed to re-inspect ES container: %w", err) + } + resource.Container = updated + if esNet, ok := updated.NetworkSettings.Networks[netName]; ok { + esHost = esNet.IPAddress + esPort = "9200" + log.Infof("esHost set to %s:%s via network %s", esHost, esPort, netName) + } + break + } + } + if esHost == "" { + esHost = "localhost" + } + + pool.MaxWait = 10 * time.Minute var client *elastic.Client err = pool.Retry(func() error { var err error client, err = connectElastic(fmt.Sprintf("http://%s:%s", - resource.Container.NetworkSettings.Gateway, clientPort), "elastic", esPass) + esHost, esPort), "elastic", esPass) if err != nil { log.WithError(err).Errorf("Failed to connect to elasticsearch.") }