Skip to content

Commit 1a0f465

Browse files
authored
Add Go TLS tracing tests for binaries built with boringcrypto (#1461)
Summary: Add Go TLS tracing tests for binaries built with boringcrypto I will follow up with updating the docs.px.dev encryption library section of the [data source docs](https://docs.px.dev/about-pixie/data-sources/#encryption-libraries) to list boringcrypto as a supported TLS library. Relevant Issues: Fixes #597 Type of change: /kind test-infra Test Plan: New test coverage verifies boringcrypto TLS tracing is functional and verified that binaries used have boringcrypto enabled with `goversion -crypto` <details> <summary>goversion test output</summary> ``` # Build the boringcrypto binaries used the trace bpf tests ddelnano@vigenere:~/code/pixie (ddelnano/add-go-boringcrypto-tls-tracing-tests) $ bazel query //... | grep boringcrypto | grep binary | xargs -I{} bazel build {} Loading: 0 packages loaded Loading: 501 packages loaded INFO: Invocation ID: ebe2161e-6317-42d8-8c23-e83173c5ab64 INFO: Streaming build results to: https://bb.corp.pixielabs.ai/invocation/ebe2161e-6317-42d8-8c23-e83173c5ab64 INFO: Analyzed target //src/stirling/testing/demo_apps/go_grpc_tls_pl/client:golang_boringcrypto_grpc_tls_client_binary (0 packages loaded, 0 targets configured). INFO: Found 1 target... Target //src/stirling/testing/demo_apps/go_grpc_tls_pl/client:golang_boringcrypto_grpc_tls_client_binary up-to-date: bazel-bin/src/stirling/testing/demo_apps/go_grpc_tls_pl/client/golang_boringcrypto_grpc_tls_client_binary INFO: Elapsed time: 1.118s, Critical Path: 0.11s INFO: 1 process: 1 internal. INFO: Streaming build results to: https://bb.corp.pixielabs.ai/invocation/ebe2161e-6317-42d8-8c23-e83173c5ab64 INFO: Build completed successfully, 1 total action INFO: Invocation ID: bab5d6bb-5e75-48f3-91a7-5c7b7ab7fb25 INFO: Streaming build results to: https://bb.corp.pixielabs.ai/invocation/bab5d6bb-5e75-48f3-91a7-5c7b7ab7fb25 INFO: Analyzed target //src/stirling/testing/demo_apps/go_grpc_tls_pl/server:golang_boringcrypto_grpc_tls_server_binary (2 packages loaded, 6 targets configured). INFO: Found 1 target... Target //src/stirling/testing/demo_apps/go_grpc_tls_pl/server:golang_boringcrypto_grpc_tls_server_binary up-to-date: bazel-bin/src/stirling/testing/demo_apps/go_grpc_tls_pl/server/golang_boringcrypto_grpc_tls_server_binary INFO: Elapsed time: 0.932s, Critical Path: 0.04s INFO: 1 process: 1 internal. INFO: Streaming build results to: https://bb.corp.pixielabs.ai/invocation/bab5d6bb-5e75-48f3-91a7-5c7b7ab7fb25 INFO: Build completed successfully, 1 total action INFO: Invocation ID: ff5e37d4-0cdf-4f78-b582-affeef69dcc4 INFO: Streaming build results to: https://bb.corp.pixielabs.ai/invocation/ff5e37d4-0cdf-4f78-b582-affeef69dcc4 INFO: Analyzed target //src/stirling/testing/demo_apps/go_https/client:golang_boringcrypto_client_binary (1 packages loaded, 4 targets configured). INFO: Found 1 target... Target //src/stirling/testing/demo_apps/go_https/client:golang_boringcrypto_client_binary up-to-date: bazel-bin/src/stirling/testing/demo_apps/go_https/client/golang_boringcrypto_client_binary INFO: Elapsed time: 0.503s, Critical Path: 0.06s INFO: 1 process: 1 internal. INFO: Streaming build results to: https://bb.corp.pixielabs.ai/invocation/ff5e37d4-0cdf-4f78-b582-affeef69dcc4 INFO: Build completed successfully, 1 total action INFO: Invocation ID: e1938fea-1793-490b-befd-38f632f95c6c INFO: Streaming build results to: https://bb.corp.pixielabs.ai/invocation/e1938fea-1793-490b-befd-38f632f95c6c INFO: Analyzed target //src/stirling/testing/demo_apps/go_https/server:golang_boringcrypto_server_binary (1 packages loaded, 4 targets configured). INFO: Found 1 target... Target //src/stirling/testing/demo_apps/go_https/server:golang_boringcrypto_server_binary up-to-date: bazel-bin/src/stirling/testing/demo_apps/go_https/server/golang_boringcrypto_server_binary INFO: Elapsed time: 0.421s, Critical Path: 0.05s INFO: 1 process: 1 internal. INFO: Streaming build results to: https://bb.corp.pixielabs.ai/invocation/e1938fea-1793-490b-befd-38f632f95c6c INFO: Build completed successfully, 1 total action # Verify with goversion -crypto that boringcrypto is in use ddelnano@vigenere:~/code/pixie (ddelnano/add-go-boringcrypto-tls-tracing-tests) $ ~/go/bin/goversion -crypto bazel-bin/src/stirling/testing/demo_apps/go_grpc_tls_pl/client/golang_boringcrypto_grpc_tls_client_binary bazel-bin/src/stirling/testing/demo_apps/go_grpc_tls_pl/client/golang_boringcrypto_grpc_tls_client_binary go1.20.4 X:boringcrypto,nocoverageredesign (boring crypto) ddelnano@vigenere:~/code/pixie (ddelnano/add-go-boringcrypto-tls-tracing-tests) $ ~/go/bin/goversion -crypto bazel-bin/src/stirling/testing/demo_apps/go_grpc_tls_pl/server/golang_boringcrypto_grpc_tls_server_binary bazel-bin/src/stirling/testing/demo_apps/go_grpc_tls_pl/server/golang_boringcrypto_grpc_tls_server_binary go1.20.4 X:boringcrypto,nocoverageredesign (boring crypto) ddelnano@vigenere:~/code/pixie (ddelnano/add-go-boringcrypto-tls-tracing-tests) $ ~/go/bin/goversion -crypto bazel-bin/src/stirling/testing/demo_apps/go_https/client/golang_boringcrypto_client_binary bazel-bin/src/stirling/testing/demo_apps/go_https/client/golang_boringcrypto_client_binary go1.20.4 X:boringcrypto,nocoverageredesign (boring crypto) ddelnano@vigenere:~/code/pixie (ddelnano/add-go-boringcrypto-tls-tracing-tests) $ ~/go/bin/goversion -crypto bazel-bin/src/stirling/testing/demo_apps/go_https/server/golang_boringcrypto_server_binary bazel-bin/src/stirling/testing/demo_apps/go_https/server/golang_boringcrypto_server_binary go1.20.4 X:boringcrypto,nocoverageredesign (boring crypto) ``` </details> --------- Signed-off-by: Dom Del Nano <ddelnano@pixielabs.ai>
1 parent e599084 commit 1a0f465

File tree

16 files changed

+245
-25
lines changed

16 files changed

+245
-25
lines changed

WORKSPACE

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,19 @@ go_download_sdk(
239239
version = "1.20.5",
240240
)
241241

242+
# The go_sdk_boringcrypto SDK is used for testing boringcrypto specific functionality (TLS tracing).
243+
# This SDK is used for specific test cases and is not meant to be used wholesale for a particular go
244+
# version.
245+
#
246+
# rules_go doesn't support using multiple SDKs with the same version and differing
247+
# GOEXPERIMENTs. This can use the same version as our latest go version once
248+
# https://github.com/bazelbuild/rules_go/issues/3582 is addressed.
249+
go_download_sdk(
250+
name = "go_sdk_boringcrypto",
251+
experiments = ["boringcrypto"],
252+
version = "1.20.4",
253+
)
254+
242255
pip_parse(
243256
name = "amqp_gen_reqs",
244257
requirements_lock = "//src/stirling/source_connectors/socket_tracer/protocols/amqp/amqp_code_generator:requirements.bazel.txt",

src/stirling/source_connectors/socket_tracer/BUILD.bazel

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,11 +307,13 @@ pl_cc_bpf_test(
307307
"//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client:golang_1_18_grpc_client",
308308
"//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client:golang_1_19_grpc_client",
309309
"//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client:golang_1_20_grpc_client",
310+
"//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client:golang_boringcrypto_grpc_client",
310311
"//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_16_grpc_server_with_certs",
311312
"//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_17_grpc_server_with_certs",
312313
"//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_18_grpc_server_with_certs",
313314
"//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_19_grpc_server_with_certs",
314315
"//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_1_20_grpc_server_with_certs",
316+
"//src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server:golang_boringcrypto_grpc_server_with_certs",
315317
],
316318
flaky = True,
317319
shard_count = 3,
@@ -354,6 +356,8 @@ pl_cc_bpf_test(
354356
"//src/stirling/source_connectors/socket_tracer/testing/container_images:go_1_19_grpc_server_container",
355357
"//src/stirling/source_connectors/socket_tracer/testing/container_images:go_1_20_grpc_client_container",
356358
"//src/stirling/source_connectors/socket_tracer/testing/container_images:go_1_20_grpc_server_container",
359+
"//src/stirling/source_connectors/socket_tracer/testing/container_images:go_boringcrypto_grpc_client_container",
360+
"//src/stirling/source_connectors/socket_tracer/testing/container_images:go_boringcrypto_grpc_server_container",
357361
"//src/stirling/source_connectors/socket_tracer/testing/container_images:product_catalog_client_container",
358362
"//src/stirling/source_connectors/socket_tracer/testing/container_images:product_catalog_service_container",
359363
"//src/stirling/testing:cc_library",
@@ -528,6 +532,8 @@ pl_cc_bpf_test(
528532
"//src/stirling/source_connectors/socket_tracer/testing/container_images:go_1_19_tls_server_container",
529533
"//src/stirling/source_connectors/socket_tracer/testing/container_images:go_1_20_tls_client_container",
530534
"//src/stirling/source_connectors/socket_tracer/testing/container_images:go_1_20_tls_server_container",
535+
"//src/stirling/source_connectors/socket_tracer/testing/container_images:go_boringcrypto_tls_client_container",
536+
"//src/stirling/source_connectors/socket_tracer/testing/container_images:go_boringcrypto_tls_server_container",
531537
"//src/stirling/testing:cc_library",
532538
],
533539
)

src/stirling/source_connectors/socket_tracer/go_tls_trace_bpf_test.cc

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/go_1_19_tls_server_container.h"
2929
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/go_1_20_tls_client_container.h"
3030
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/go_1_20_tls_server_container.h"
31+
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/go_boringcrypto_tls_client_container.h"
32+
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/go_boringcrypto_tls_server_container.h"
3133
#include "src/stirling/source_connectors/socket_tracer/testing/protocol_checkers.h"
3234
#include "src/stirling/source_connectors/socket_tracer/testing/socket_trace_bpf_test_fixture.h"
3335
#include "src/stirling/testing/common.h"
@@ -85,8 +87,14 @@ struct Go1_20TLSClientServerContainers {
8587
using GoTLSClientContainer = ::px::stirling::testing::Go1_20_TLSClientContainer;
8688
};
8789

90+
struct GoBoringCryptoTLSClientServerContainers {
91+
using GoTLSServerContainer = ::px::stirling::testing::GoBoringCryptoTLSServerContainer;
92+
using GoTLSClientContainer = ::px::stirling::testing::GoBoringCryptoTLSClientContainer;
93+
};
94+
8895
typedef ::testing::Types<Go1_17TLSClientServerContainers, Go1_18TLSClientServerContainers,
89-
Go1_19TLSClientServerContainers, Go1_20TLSClientServerContainers>
96+
Go1_19TLSClientServerContainers, Go1_20TLSClientServerContainers,
97+
GoBoringCryptoTLSClientServerContainers>
9098
GoVersions;
9199
TYPED_TEST_SUITE(GoTLSTraceTest, GoVersions);
92100

src/stirling/source_connectors/socket_tracer/grpc_trace_bpf_test.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,8 @@ INSTANTIATE_TEST_SUITE_P(SecurityModeTest, GRPCTraceTest,
193193
TestParams{"1_17", false, true}, TestParams{"1_17", false, false},
194194
TestParams{"1_18", false, true}, TestParams{"1_18", true, false},
195195
TestParams{"1_19", false, false}, TestParams{"1_19", true, true},
196-
TestParams{"1_20", true, true}, TestParams{"1_20", true, false}));
196+
TestParams{"1_20", true, true}, TestParams{"1_20", true, false},
197+
TestParams{"boringcrypto", true, true}));
197198

198199
class PyGRPCTraceTest : public testing::SocketTraceBPFTestFixture</* TClientSideTracing */ false> {
199200
protected:

src/stirling/source_connectors/socket_tracer/http2_trace_bpf_test.cc

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/go_1_19_grpc_server_container.h"
3030
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/go_1_20_grpc_client_container.h"
3131
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/go_1_20_grpc_server_container.h"
32+
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/go_boringcrypto_grpc_client_container.h"
33+
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/go_boringcrypto_grpc_server_container.h"
3234
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/product_catalog_client_container.h"
3335
#include "src/stirling/source_connectors/socket_tracer/testing/container_images/product_catalog_service_container.h"
3436
#include "src/stirling/source_connectors/socket_tracer/testing/protocol_checkers.h"
@@ -89,8 +91,14 @@ struct Go1_20GRPCClientServerContainers {
8991
using ClientContainer = ::px::stirling::testing::Go1_20_GRPCClientContainer;
9092
};
9193

94+
struct GoBoringCryptoGRPCClientServerContainers {
95+
using ServerContainer = ::px::stirling::testing::GoBoringCryptoGRPCServerContainer;
96+
using ClientContainer = ::px::stirling::testing::GoBoringCryptoGRPCClientContainer;
97+
};
98+
9299
typedef ::testing::Types<Go1_17GRPCClientServerContainers, Go1_18GRPCClientServerContainers,
93-
Go1_19GRPCClientServerContainers, Go1_20GRPCClientServerContainers>
100+
Go1_19GRPCClientServerContainers, Go1_20GRPCClientServerContainers,
101+
GoBoringCryptoGRPCClientServerContainers>
94102
GoVersions;
95103
TYPED_TEST_SUITE(HTTP2TraceTest, GoVersions);
96104

src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_client/BUILD.bazel

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# SPDX-License-Identifier: Apache-2.0
1616

1717
load("@io_bazel_rules_go//go:def.bzl", "go_cross_binary", "go_library")
18-
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_go_sdk_version_template_to_label", "pl_supported_go_sdk_versions")
18+
load("//bazel:pl_build_system.bzl", "pl_all_supported_go_sdk_versions", "pl_go_binary", "pl_go_sdk_version_template_to_label")
1919

2020
package(default_visibility = ["//src/stirling:__subpackages__"])
2121

@@ -44,5 +44,5 @@ pl_go_binary(
4444
tags = ["manual"],
4545
target = ":client",
4646
)
47-
for sdk_version in pl_supported_go_sdk_versions
47+
for sdk_version in pl_all_supported_go_sdk_versions
4848
]

src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server/BUILD.bazel

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# SPDX-License-Identifier: Apache-2.0
1616

1717
load("@io_bazel_rules_go//go:def.bzl", "go_cross_binary", "go_library")
18-
load("//bazel:pl_build_system.bzl", "pl_go_binary", "pl_go_sdk_version_template_to_label", "pl_supported_go_sdk_versions")
18+
load("//bazel:pl_build_system.bzl", "pl_all_supported_go_sdk_versions", "pl_go_binary", "pl_go_sdk_version_template_to_label")
1919

2020
package(default_visibility = ["//src/stirling:__subpackages__"])
2121

@@ -43,7 +43,7 @@ pl_go_binary(
4343
tags = ["manual"],
4444
target = ":server",
4545
)
46-
for sdk_version in pl_supported_go_sdk_versions
46+
for sdk_version in pl_all_supported_go_sdk_versions
4747
]
4848

4949
[
@@ -56,5 +56,5 @@ pl_go_binary(
5656
],
5757
visibility = ["//src/stirling:__subpackages__"],
5858
)
59-
for sdk_version in pl_supported_go_sdk_versions
59+
for sdk_version in pl_all_supported_go_sdk_versions
6060
]

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#
1515
# SPDX-License-Identifier: Apache-2.0
1616

17-
load("//bazel:pl_build_system.bzl", "pl_cc_test_library", "pl_go_sdk_version_template_to_label")
17+
load("//bazel:pl_build_system.bzl", "pl_boringcrypto_go_sdk", "pl_cc_test_library", "pl_go_sdk_version_template_to_label")
1818

1919
# TODO(vihang): load this from pl_build_system once we remove go 1.16
2020
pl_supported_go_sdk_versions = [
@@ -24,6 +24,8 @@ pl_supported_go_sdk_versions = [
2424
"1.20",
2525
]
2626

27+
pl_all_supported_go_sdk_versions = pl_supported_go_sdk_versions + pl_boringcrypto_go_sdk
28+
2729
package(default_visibility = ["//src/stirling:__subpackages__"])
2830

2931
pl_cc_test_library(
@@ -66,7 +68,7 @@ pl_cc_test_library(
6668
],
6769
deps = ["//src/common/testing/test_utils:cc_library"],
6870
)
69-
for sdk_version in pl_supported_go_sdk_versions
71+
for sdk_version in pl_all_supported_go_sdk_versions
7072
]
7173

7274
[
@@ -79,7 +81,7 @@ pl_cc_test_library(
7981
],
8082
deps = ["//src/common/testing/test_utils:cc_library"],
8183
)
82-
for sdk_version in pl_supported_go_sdk_versions
84+
for sdk_version in pl_all_supported_go_sdk_versions
8385
]
8486

8587
[
@@ -92,7 +94,7 @@ pl_cc_test_library(
9294
],
9395
deps = ["//src/common/testing/test_utils:cc_library"],
9496
)
95-
for sdk_version in pl_supported_go_sdk_versions
97+
for sdk_version in pl_all_supported_go_sdk_versions
9698
]
9799

98100
[
@@ -105,7 +107,7 @@ pl_cc_test_library(
105107
],
106108
deps = ["//src/common/testing/test_utils:cc_library"],
107109
)
108-
for sdk_version in pl_supported_go_sdk_versions
110+
for sdk_version in pl_all_supported_go_sdk_versions
109111
]
110112

111113
pl_cc_test_library(
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* Copyright 2018- The Pixie Authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
* SPDX-License-Identifier: Apache-2.0
17+
*/
18+
19+
#pragma once
20+
21+
#include <string>
22+
23+
#include "src/common/testing/test_environment.h"
24+
#include "src/common/testing/test_utils/container_runner.h"
25+
26+
namespace px {
27+
namespace stirling {
28+
namespace testing {
29+
30+
class GoBoringCryptoGRPCClientContainer : public ContainerRunner {
31+
public:
32+
GoBoringCryptoGRPCClientContainer()
33+
: ContainerRunner(::px::testing::BazelRunfilePath(kBazelImageTar), kContainerNamePrefix,
34+
kReadyMessage) {}
35+
36+
private:
37+
static constexpr std::string_view kBazelImageTar =
38+
"src/stirling/testing/demo_apps/go_grpc_tls_pl/client/"
39+
"golang_boringcrypto_grpc_tls_client.tar";
40+
static constexpr std::string_view kContainerNamePrefix = "grpc_client";
41+
static constexpr std::string_view kReadyMessage = "";
42+
};
43+
44+
} // namespace testing
45+
} // namespace stirling
46+
} // namespace px
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* Copyright 2018- The Pixie Authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
* SPDX-License-Identifier: Apache-2.0
17+
*/
18+
19+
#pragma once
20+
21+
#include <string>
22+
23+
#include "src/common/testing/test_environment.h"
24+
#include "src/common/testing/test_utils/container_runner.h"
25+
26+
namespace px {
27+
namespace stirling {
28+
namespace testing {
29+
30+
class GoBoringCryptoGRPCServerContainer : public ContainerRunner {
31+
public:
32+
GoBoringCryptoGRPCServerContainer()
33+
: ContainerRunner(::px::testing::BazelRunfilePath(kBazelImageTar), kContainerNamePrefix,
34+
kReadyMessage) {}
35+
36+
private:
37+
static constexpr std::string_view kBazelImageTar =
38+
"src/stirling/testing/demo_apps/go_grpc_tls_pl/server/"
39+
"golang_boringcrypto_grpc_tls_server.tar";
40+
static constexpr std::string_view kContainerNamePrefix = "grpc_server";
41+
static constexpr std::string_view kReadyMessage = "Starting HTTP/2 server";
42+
};
43+
44+
} // namespace testing
45+
} // namespace stirling
46+
} // namespace px

0 commit comments

Comments
 (0)