From 1b90bbc71589d5c55dc502c7593328744a76dceb Mon Sep 17 00:00:00 2001 From: Marco Hofstetter Date: Mon, 20 Jan 2025 15:18:16 +0100 Subject: [PATCH] bpf_metadata: add unit-test for proxylib l7 proto This commit adds an unit test that verifies that the proxylib l7 protocol has been correctly set to the request application protocols of the network socket. Signed-off-by: Marco Hofstetter --- tests/metadata_config_test.cc | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tests/metadata_config_test.cc b/tests/metadata_config_test.cc index b9c91dd3d..1afac28dd 100644 --- a/tests/metadata_config_test.cc +++ b/tests/metadata_config_test.cc @@ -5,6 +5,7 @@ #include #include #include +#include #include #include @@ -481,6 +482,40 @@ TEST_F(MetadataConfigTest, EastWestL7LbMetadataNoOriginalSource) { (cilium_mark_socket_option->mark_ >> 16) == 8); } +TEST_F(MetadataConfigTest, ProxyLibNotConfigured) { + ::cilium::BpfMetadata config{}; + + EXPECT_NO_THROW(initialize(config)); + + auto socket_metadata = config_->extractSocketMetadata(socket_); + EXPECT_TRUE(socket_metadata); + + EXPECT_CALL(socket_, setRequestedApplicationProtocols(_)).Times(0); + + socket_metadata->configureProxyLibApplicationProtocol(socket_); +} + +TEST_F(MetadataConfigTest, ProxyLibConfigured) { + ::cilium::BpfMetadata config{}; + + EXPECT_NO_THROW(initialize(config)); + + auto socket_metadata = config_->extractSocketMetadata(socket_); + EXPECT_TRUE(socket_metadata); + + // set proxylib proto manually + socket_metadata->proxylib_l7_proto_ = "r2d2"; + + std::vector protocols = {"h2c"}; + EXPECT_CALL(socket_, requestedApplicationProtocols).WillOnce(testing::ReturnRef(protocols)); + + // proxylib protocol should be appended to the list of existing requested application protocols + const auto protos = std::vector{"h2c", "r2d2"}; + EXPECT_CALL(socket_, setRequestedApplicationProtocols(protos)); + + socket_metadata->configureProxyLibApplicationProtocol(socket_); +} + } // namespace } // namespace Cilium } // namespace Envoy