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