// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.model.container.http; import com.yahoo.config.model.builder.xml.test.DomBuilderTest; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.container.core.ChainsConfig; import com.yahoo.jdisc.http.ServerConfig; import com.yahoo.vespa.model.container.component.BindingPattern; import com.yahoo.vespa.model.container.component.UserBindingPattern; import com.yahoo.vespa.model.container.xml.ContainerModelBuilder; import org.junit.jupiter.api.Test; import org.w3c.dom.Element; import java.util.Map; import java.util.Set; import static java.util.stream.Collectors.toMap; import static java.util.stream.Collectors.toSet; import static org.junit.jupiter.api.Assertions.assertEquals; /** * @author bjorncs */ public class DefaultFilterTest extends DomBuilderTest { private void buildContainerCluster(Element containerElem) { new ContainerModelBuilder(true, ContainerModelBuilder.Networking.enable).build(DeployState.createTestState(), null, null, root, containerElem); root.freezeModelTopology(); } @Test void default_request_and_response_filters_in_services_xml_are_listen_in_server_config() { BindingPattern binding = UserBindingPattern.fromHttpPath("/my-chain-binding"); Element xml = parse( "", " ", " ", " ", " " + binding.patternString() + "", " ", " ", " " + binding.patternString() + "", " ", " " + " ", " ", " ", " ", " ", ""); buildContainerCluster(xml); assertDefaultFiltersInConfig(root.getConfig(ServerConfig.class, "container/http/jdisc-jetty/server1")); assertDefaultFiltersInConfig(root.getConfig(ServerConfig.class, "container/http/jdisc-jetty/server2")); ChainsConfig chainsConfig = root.getConfig(ChainsConfig.class, "container/filters/chain"); Set chainsIds = chainsConfig.chains().stream().map(ChainsConfig.Chains::id).collect(toSet()); assertEquals(chainsIds, Set.of("request-chain-with-binding", "response-chain-with-binding", "my-default-request-chain", "my-default-response-chain")); } private static void assertDefaultFiltersInConfig(ServerConfig config) { var asMap = config.defaultFilters().stream().collect(toMap(ServerConfig.DefaultFilters::filterId, ServerConfig.DefaultFilters::localPort)); assertEquals(asMap, Map.of("my-default-request-chain", 8000, "my-default-response-chain", 8000)); } }