Skip to content

Commit 345dddc

Browse files
committed
Include offsetgen case in http2_trace_bpf_test
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
1 parent 0ad34ce commit 345dddc

30 files changed

+1697
-53
lines changed

.arclint

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,16 @@
2323
"(^src/stirling/bpf_tools/bcc_bpf/system-headers)",
2424
"(^src/stirling/mysql/testing/.*\\.json$)",
2525
"(^src/stirling/obj_tools/testdata/go/test_go_binary.go)",
26+
"(^src/stirling/offsetgen_offsets.json$)",
2627
"(^src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client/main.go$)",
2728
"(^src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server/main.go$)",
29+
"(^src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server/main.go$)",
30+
"(^src/stirling/testing/demo_apps/go_grpc_tls_pl/server/mod_info/go.mod$)",
31+
"(^src/stirling/testing/demo_apps/go_grpc_tls_pl/server/mod_info/go.sum$)",
32+
"(^src/stirling/testing/demo_apps/go_grpc_tls_pl/server/mod_info/server.go$)",
33+
"(^src/stirling/testing/demo_apps/go_https/server/go.mod$)",
34+
"(^src/stirling/testing/demo_apps/go_https/server/go.sum$)",
35+
"(^src/stirling/testing/demo_apps/go_https/server/https_server.go$)",
2836
"(^src/stirling/utils/testdata/config$)",
2937
"(^src/ui/\\.pnp.*)",
3038
"(^src/ui/\\.yarn/)",

bazel/container_images.bzl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,8 +289,14 @@ def stirling_test_images():
289289
)
290290

291291
container_pull(
292-
name = "golang_1_23_0_https_server_with_buildinfo",
292+
name = "golang_1_23_https_server_with_buildinfo",
293293
digest = "sha256:84120192f05cc2d809360e8876eafafa9e08cc848c188e2be0112a8b3cd2ec19",
294294
registry = "docker.io",
295295
repository = "ddelnano/go_https_with_mod_info",
296296
)
297+
container_pull(
298+
name = "go_1_23_grpc_server_with_mod_info",
299+
digest = "sha256:a06b8f280a37e671f64a93d534ca35d0ac495f5f3b8adb6e623a765fc6e9a1f5",
300+
registry = "docker.io",
301+
repository = "ddelnano/go_1_23_grpc_server_with_mod_info",
302+
)

src/stirling/source_connectors/socket_tracer/BUILD.bazel

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,9 @@ pl_cc_bpf_test(
349349
"no_asan",
350350
"requires_bpf",
351351
],
352+
data = [
353+
"//src/stirling:offsetgen_offsets",
354+
],
352355
deps = [
353356
":cc_library",
354357
"//src/common/exec:cc_library",

src/stirling/source_connectors/socket_tracer/go_tls_trace_bpf_test.cc

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,7 @@ using ::testing::UnorderedElementsAre;
6262
template <typename TClientServerContainers>
6363
class GoTLSTraceTest : public testing::SocketTraceBPFTestFixture</* TClientSideTracing */ false> {
6464
protected:
65-
GoTLSTraceTest()
66-
: server_(std::string(TClientServerContainers::server_image_tar)),
67-
client_()
68-
{
65+
GoTLSTraceTest() : server_(std::string(TClientServerContainers::server_image_tar)), client_() {
6966
// Run the server.
7067
// The container runner will make sure it is in the ready state before unblocking.
7168
// Stirling will run after this unblocks, as part of SocketTraceBPFTest SetUp().
@@ -133,7 +130,9 @@ struct Go1_23TLSClientServerNoDWARFContainers {
133130
using GoTLSServerContainer = ::px::stirling::testing::Go1_23_TLSServerContainer;
134131
using GoTLSClientContainer = ::px::stirling::testing::Go1_23_TLSClientContainer;
135132

136-
static constexpr std::string_view server_image_tar = "src/stirling/source_connectors/socket_tracer/testing/containers/golang_1_23_0_https_server_with_buildinfo.tar";
133+
static constexpr std::string_view server_image_tar =
134+
"src/stirling/source_connectors/socket_tracer/testing/containers/"
135+
"golang_1_23_0_https_server_with_buildinfo.tar";
137136
static const bool disable_dwarf = true;
138137
};
139138

src/stirling/source_connectors/socket_tracer/http2_trace_bpf_test.cc

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
#include "src/stirling/source_connectors/socket_tracer/testing/socket_trace_bpf_test_fixture.h"
4242
#include "src/stirling/testing/common.h"
4343

44+
DECLARE_string(offsetgen_filepath);
45+
4446
namespace px {
4547
namespace stirling {
4648

@@ -64,11 +66,15 @@ using ::testing::UnorderedElementsAre;
6466
template <typename TClientServerContainers>
6567
class HTTP2TraceTest : public testing::SocketTraceBPFTestFixture</* TClientSideTracing */ false> {
6668
protected:
67-
HTTP2TraceTest() {
69+
HTTP2TraceTest() : server_(std::string(TClientServerContainers::server_image_tar)) {
6870
// Run the server.
6971
// The container runner will make sure it is in the ready state before unblocking.
7072
// Stirling will run after this unblocks, as part of SocketTraceBPFTest SetUp().
7173
PX_CHECK_OK(server_.Run(std::chrono::seconds{60}));
74+
75+
auto f = ::px::testing::BazelRunfilePath("src/stirling/offsetgen_offsets.json");
76+
FLAGS_offsetgen_filepath = f.string();
77+
FLAGS_disable_dwarf_parsing = TClientServerContainers::disable_dwarf;
7278
}
7379

7480
typename TClientServerContainers::ServerContainer server_;
@@ -78,46 +84,78 @@ class HTTP2TraceTest : public testing::SocketTraceBPFTestFixture</* TClientSideT
7884
struct Go1_18GRPCClientServerContainers {
7985
using ServerContainer = ::px::stirling::testing::Go1_18_GRPCServerContainer;
8086
using ClientContainer = ::px::stirling::testing::Go1_18_GRPCClientContainer;
87+
88+
static constexpr std::string_view server_image_tar = ServerContainer::kBazelImageTar;
89+
static const bool disable_dwarf = false;
8190
};
8291

8392
struct Go1_19GRPCClientServerContainers {
8493
using ServerContainer = ::px::stirling::testing::Go1_19_GRPCServerContainer;
8594
using ClientContainer = ::px::stirling::testing::Go1_19_GRPCClientContainer;
95+
96+
static constexpr std::string_view server_image_tar = ServerContainer::kBazelImageTar;
97+
static const bool disable_dwarf = false;
8698
};
8799

88100
struct Go1_20GRPCClientServerContainers {
89101
using ServerContainer = ::px::stirling::testing::Go1_20_GRPCServerContainer;
90102
using ClientContainer = ::px::stirling::testing::Go1_20_GRPCClientContainer;
103+
104+
static constexpr std::string_view server_image_tar = ServerContainer::kBazelImageTar;
105+
static const bool disable_dwarf = false;
91106
};
92107

93108
struct Go1_21GRPCClientServerContainers {
94109
using ServerContainer = ::px::stirling::testing::Go1_21_GRPCServerContainer;
95110
using ClientContainer = ::px::stirling::testing::Go1_21_GRPCClientContainer;
111+
112+
static constexpr std::string_view server_image_tar = ServerContainer::kBazelImageTar;
113+
static const bool disable_dwarf = false;
96114
};
97115

98116
struct Go1_22GRPCClientServerContainers {
99117
using ServerContainer = ::px::stirling::testing::Go1_22_GRPCServerContainer;
100118
using ClientContainer = ::px::stirling::testing::Go1_22_GRPCClientContainer;
119+
120+
static constexpr std::string_view server_image_tar = ServerContainer::kBazelImageTar;
121+
static const bool disable_dwarf = false;
101122
};
102123

103124
struct Go1_23GRPCClientServerContainers {
104125
using ServerContainer = ::px::stirling::testing::Go1_23_GRPCServerContainer;
105126
using ClientContainer = ::px::stirling::testing::Go1_23_GRPCClientContainer;
127+
128+
static constexpr std::string_view server_image_tar = ServerContainer::kBazelImageTar;
129+
static const bool disable_dwarf = false;
130+
};
131+
132+
struct Go1_23GRPCClientServerContainersNoDWARF {
133+
using ServerContainer = ::px::stirling::testing::Go1_23_GRPCServerContainer;
134+
using ClientContainer = ::px::stirling::testing::Go1_23_GRPCClientContainer;
135+
136+
static constexpr std::string_view server_image_tar =
137+
"src/stirling/source_connectors/socket_tracer/testing/containers/"
138+
"go_1_23_grpc_server_with_mod_info.tar";
139+
static const bool disable_dwarf = true;
106140
};
107141

108142
struct GoBoringCryptoGRPCClientServerContainers {
109143
using ServerContainer = ::px::stirling::testing::GoBoringCryptoGRPCServerContainer;
110144
using ClientContainer = ::px::stirling::testing::GoBoringCryptoGRPCClientContainer;
145+
146+
static constexpr std::string_view server_image_tar = ServerContainer::kBazelImageTar;
147+
static const bool disable_dwarf = false;
111148
};
112149

113150
typedef ::testing::Types<GoBoringCryptoGRPCClientServerContainers, Go1_18GRPCClientServerContainers,
114151
Go1_19GRPCClientServerContainers, Go1_20GRPCClientServerContainers,
115152
Go1_21GRPCClientServerContainers, Go1_22GRPCClientServerContainers,
116-
Go1_23GRPCClientServerContainers>
153+
Go1_23GRPCClientServerContainers, Go1_23GRPCClientServerContainersNoDWARF>
117154
GoVersions;
118155
TYPED_TEST_SUITE(HTTP2TraceTest, GoVersions);
119156

120157
TYPED_TEST(HTTP2TraceTest, Basic) {
158+
FLAGS_stirling_conn_trace_pid = this->server_.process_pid();
121159
this->StartTransferDataThread();
122160

123161
// Run the client in the network of the server, so they can connect to each other.

src/stirling/source_connectors/socket_tracer/testing/container_images/BUILD.bazel

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ pl_cc_test_library(
8080
hdrs = [pl_go_sdk_version_template_to_label("go_%s_grpc_server_container.h", sdk_version)],
8181
data = [
8282
pl_go_sdk_version_template_to_label("//src/stirling/testing/demo_apps/go_grpc_tls_pl/server:golang_%s_grpc_tls_server.tar", sdk_version),
83+
"//src/stirling/source_connectors/socket_tracer/testing/containers:go_1_23_grpc_server_with_mod_info.tar",
8384
],
8485
deps = ["//src/common/testing/test_utils:cc_library"],
8586
)
@@ -106,7 +107,7 @@ pl_cc_test_library(
106107
hdrs = [pl_go_sdk_version_template_to_label("go_%s_tls_server_container.h", sdk_version)],
107108
data = [
108109
pl_go_sdk_version_template_to_label("//src/stirling/testing/demo_apps/go_https/server:golang_%s_https_server.tar", sdk_version),
109-
"//src/stirling/source_connectors/socket_tracer/testing/containers:golang_1_23_0_https_server_with_buildinfo.tar",
110+
"//src/stirling/source_connectors/socket_tracer/testing/containers:golang_1_23_https_server_with_buildinfo.tar",
110111
],
111112
deps = ["//src/common/testing/test_utils:cc_library"],
112113
)

src/stirling/source_connectors/socket_tracer/testing/container_images/go_1_18_grpc_server_container.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,14 @@ namespace testing {
2929

3030
class Go1_18_GRPCServerContainer : public ContainerRunner {
3131
public:
32-
Go1_18_GRPCServerContainer()
33-
: ContainerRunner(::px::testing::BazelRunfilePath(kBazelImageTar), kContainerNamePrefix,
32+
explicit Go1_18_GRPCServerContainer(std::string image_tar)
33+
: ContainerRunner(::px::testing::BazelRunfilePath(image_tar), kContainerNamePrefix,
3434
kReadyMessage) {}
3535

36-
private:
3736
static constexpr std::string_view kBazelImageTar =
3837
"src/stirling/testing/demo_apps/go_grpc_tls_pl/server/golang_1_18_grpc_tls_server.tar";
38+
39+
private:
3940
static constexpr std::string_view kContainerNamePrefix = "grpc_server";
4041
static constexpr std::string_view kReadyMessage = "Starting HTTP/2 server";
4142
};

src/stirling/source_connectors/socket_tracer/testing/container_images/go_1_18_tls_server_container.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ namespace testing {
2929

3030
class Go1_18_TLSServerContainer : public ContainerRunner {
3131
public:
32-
Go1_18_TLSServerContainer(std::string image_tar)
32+
explicit Go1_18_TLSServerContainer(std::string image_tar)
3333
: ContainerRunner(::px::testing::BazelRunfilePath(image_tar), kContainerNamePrefix,
3434
kReadyMessage) {}
3535

src/stirling/source_connectors/socket_tracer/testing/container_images/go_1_19_grpc_server_container.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,14 @@ namespace testing {
2929

3030
class Go1_19_GRPCServerContainer : public ContainerRunner {
3131
public:
32-
Go1_19_GRPCServerContainer()
33-
: ContainerRunner(::px::testing::BazelRunfilePath(kBazelImageTar), kContainerNamePrefix,
32+
explicit Go1_19_GRPCServerContainer(std::string image_tar)
33+
: ContainerRunner(::px::testing::BazelRunfilePath(image_tar), kContainerNamePrefix,
3434
kReadyMessage) {}
3535

36-
private:
3736
static constexpr std::string_view kBazelImageTar =
3837
"src/stirling/testing/demo_apps/go_grpc_tls_pl/server/golang_1_19_grpc_tls_server.tar";
38+
39+
private:
3940
static constexpr std::string_view kContainerNamePrefix = "grpc_server";
4041
static constexpr std::string_view kReadyMessage = "Starting HTTP/2 server";
4142
};

src/stirling/source_connectors/socket_tracer/testing/container_images/go_1_19_tls_server_container.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ namespace testing {
2929

3030
class Go1_19_TLSServerContainer : public ContainerRunner {
3131
public:
32-
Go1_19_TLSServerContainer(std::string image_tar)
32+
explicit Go1_19_TLSServerContainer(std::string image_tar)
3333
: ContainerRunner(::px::testing::BazelRunfilePath(image_tar), kContainerNamePrefix,
3434
kReadyMessage) {}
3535

0 commit comments

Comments
 (0)