diff --git a/test/integration/cors_filter_integration_test.cc b/test/integration/cors_filter_integration_test.cc index 494c85eb46273..3da3920836788 100644 --- a/test/integration/cors_filter_integration_test.cc +++ b/test/integration/cors_filter_integration_test.cc @@ -11,10 +11,52 @@ class CorsFilterIntegrationTest : public HttpIntegrationTest, CorsFilterIntegrationTest() : HttpIntegrationTest(Http::CodecClient::Type::HTTP1, GetParam()) {} void initialize() override { - initialized_ = true; - fake_upstreams_.emplace_back(new FakeUpstream(0, FakeHttpConnection::Type::HTTP1, version_)); - registerPort("upstream_0", fake_upstreams_.back()->localAddress()->ip()->port()); - createTestServer("test/config/integration/server_cors_filter.json", {"http"}); + config_helper_.addFilter("name: envoy.cors"); + config_helper_.addConfigModifier( + [&](envoy::api::v2::filter::network::HttpConnectionManager& hcm) -> void { + auto* route_config = hcm.mutable_route_config(); + auto* virtual_host = route_config->mutable_virtual_hosts(0); + { + auto* cors = virtual_host->mutable_cors(); + cors->add_allow_origin("*"); + cors->set_allow_headers("content-type,x-grpc-web"); + cors->set_allow_methods("GET,POST"); + } + + { + auto* route = virtual_host->mutable_routes(0); + route->mutable_match()->set_prefix("/cors-vhost-config"); + } + + { + auto* route = virtual_host->add_routes(); + route->mutable_match()->set_prefix("/no-cors"); + route->mutable_route()->set_cluster("cluster_0"); + route->mutable_route()->mutable_cors()->mutable_enabled()->set_value(false); + } + + { + auto* route = virtual_host->add_routes(); + route->mutable_match()->set_prefix("/cors-route-config"); + route->mutable_route()->set_cluster("cluster_0"); + auto* cors = route->mutable_route()->mutable_cors(); + cors->add_allow_origin("test-origin-1"); + cors->add_allow_origin("test-host-2"); + cors->set_allow_headers("content-type"); + cors->set_allow_methods("POST"); + cors->set_expose_headers("content-type"); + cors->set_max_age("100"); + } + { + auto* route = virtual_host->add_routes(); + route->mutable_match()->set_prefix("/cors-credentials-allowed"); + route->mutable_route()->set_cluster("cluster_0"); + auto* cors = route->mutable_route()->mutable_cors(); + cors->add_allow_origin("test-origin-1"); + cors->mutable_allow_credentials()->set_value(true); + } + }); + HttpIntegrationTest::initialize(); } protected: diff --git a/test/integration/grpc_json_transcoder_integration_test.cc b/test/integration/grpc_json_transcoder_integration_test.cc index c6fcc90f76c96..db4301b2e7c47 100644 --- a/test/integration/grpc_json_transcoder_integration_test.cc +++ b/test/integration/grpc_json_transcoder_integration_test.cc @@ -28,9 +28,17 @@ class GrpcJsonTranscoderIntegrationTest * Global initializer for all integration tests. */ void SetUp() override { - fake_upstreams_.emplace_back(new FakeUpstream(0, FakeHttpConnection::Type::HTTP2, version_)); - registerPort("upstream_0", fake_upstreams_.back()->localAddress()->ip()->port()); - createTestServer("test/config/integration/server_grpc_json_transcoder.json", {"http"}); + setUpstreamProtocol(FakeHttpConnection::Type::HTTP2); + const std::string filter = + R"EOF( + name: envoy.grpc_json_transcoder + config: + proto_descriptor : "{}" + services : "bookstore.Bookstore" + )EOF"; + config_helper_.addFilter( + fmt::format(filter, TestEnvironment::runfilesPath("/test/proto/bookstore.descriptor"))); + HttpIntegrationTest::initialize(); } /** diff --git a/test/integration/integration_admin_test.cc b/test/integration/integration_admin_test.cc index 8c28e2b5259b5..7e64131dd4418 100644 --- a/test/integration/integration_admin_test.cc +++ b/test/integration/integration_admin_test.cc @@ -16,6 +16,8 @@ INSTANTIATE_TEST_CASE_P(IpVersions, IntegrationAdminTest, testing::ValuesIn(TestEnvironment::getIpVersionsForTest())); TEST_P(IntegrationAdminTest, HealthCheck) { + initialize(); + BufferingStreamDecoderPtr response = IntegrationUtil::makeSingleRequest( lookupPort("http"), "GET", "/healthcheck", "", downstreamProtocol(), version_); EXPECT_TRUE(response->complete()); @@ -40,14 +42,21 @@ TEST_P(IntegrationAdminTest, HealthCheck) { downstreamProtocol(), version_); EXPECT_TRUE(response->complete()); EXPECT_STREQ("200", response->headers().Status()->value().c_str()); +} - response = IntegrationUtil::makeSingleRequest(lookupPort("http_buffer"), "GET", "/healthcheck", - "", downstreamProtocol(), version_); +TEST_P(IntegrationAdminTest, HealthCheckWithBufferFilter) { + config_helper_.addFilter(ConfigHelper::DEFAULT_BUFFER_FILTER); + initialize(); + + BufferingStreamDecoderPtr response = IntegrationUtil::makeSingleRequest( + lookupPort("http"), "GET", "/healthcheck", "", downstreamProtocol(), version_); EXPECT_TRUE(response->complete()); EXPECT_STREQ("200", response->headers().Status()->value().c_str()); } TEST_P(IntegrationAdminTest, AdminLogging) { + initialize(); + BufferingStreamDecoderPtr response = IntegrationUtil::makeSingleRequest( lookupPort("admin"), "GET", "/logging", "", downstreamProtocol(), version_); EXPECT_TRUE(response->complete()); @@ -92,6 +101,8 @@ TEST_P(IntegrationAdminTest, AdminLogging) { } TEST_P(IntegrationAdminTest, Admin) { + initialize(); + BufferingStreamDecoderPtr response = IntegrationUtil::makeSingleRequest( lookupPort("admin"), "GET", "/", "", downstreamProtocol(), version_); EXPECT_TRUE(response->complete()); @@ -136,13 +147,13 @@ TEST_P(IntegrationAdminTest, Admin) { testing::HasSubstr("# TYPE envoy_cluster_upstream_cx_active gauge\n")); EXPECT_THAT( response->body(), - testing::HasSubstr("envoy_cluster_upstream_cx_active{envoy_cluster_name=\"cds\"} 0\n")); + testing::HasSubstr("envoy_cluster_upstream_cx_active{envoy_cluster_name=\"cluster_0\"} 0\n")); response = IntegrationUtil::makeSingleRequest(lookupPort("admin"), "GET", "/clusters", "", downstreamProtocol(), version_); EXPECT_TRUE(response->complete()); EXPECT_STREQ("200", response->headers().Status()->value().c_str()); EXPECT_THAT(response->body(), testing::HasSubstr("added_via_api")); - EXPECT_THAT(response->body(), testing::HasSubstr("version_info::\n")); + EXPECT_THAT(response->body(), testing::HasSubstr("version_info::static\n")); response = IntegrationUtil::makeSingleRequest(lookupPort("admin"), "GET", "/cpuprofiler", "", downstreamProtocol(), version_); @@ -185,6 +196,12 @@ TEST_P(IntegrationAdminTest, Admin) { #ifdef TCMALLOC TEST_P(IntegrationAdminTest, AdminCpuProfilerStart) { + config_helper_.addConfigModifier([&](envoy::api::v2::Bootstrap& bootstrap) -> void { + auto* admin = bootstrap.mutable_admin(); + admin->set_profile_path(TestEnvironment::temporaryPath("/envoy.prof")); + }); + + initialize(); BufferingStreamDecoderPtr response = IntegrationUtil::makeSingleRequest( lookupPort("admin"), "GET", "/cpuprofiler?enable=y", "", downstreamProtocol(), version_); EXPECT_TRUE(response->complete()); diff --git a/test/integration/integration_admin_test.h b/test/integration/integration_admin_test.h index a9abbf529d74c..8a039dac72c2b 100644 --- a/test/integration/integration_admin_test.h +++ b/test/integration/integration_admin_test.h @@ -10,16 +10,10 @@ class IntegrationAdminTest : public HttpIntegrationTest, public testing::TestWithParam { public: IntegrationAdminTest() : HttpIntegrationTest(Http::CodecClient::Type::HTTP1, GetParam()) {} - /** - * Initializer for an individual test. - */ - void SetUp() override { - fake_upstreams_.emplace_back(new FakeUpstream(0, FakeHttpConnection::Type::HTTP1, version_)); - registerPort("upstream_0", fake_upstreams_.back()->localAddress()->ip()->port()); - fake_upstreams_.emplace_back(new FakeUpstream(0, FakeHttpConnection::Type::HTTP1, version_)); - registerPort("upstream_1", fake_upstreams_.back()->localAddress()->ip()->port()); - createTestServer("test/config/integration/server.json", - {"http", "http_buffer", "tcp_proxy", "rds"}); + + void initialize() override { + config_helper_.addFilter(ConfigHelper::DEFAULT_HEALTH_CHECK_FILTER); + HttpIntegrationTest::initialize(); } /** diff --git a/test/integration/proxy_proto_integration_test.h b/test/integration/proxy_proto_integration_test.h index f239130e5363d..e62aa22ac9c1b 100644 --- a/test/integration/proxy_proto_integration_test.h +++ b/test/integration/proxy_proto_integration_test.h @@ -13,13 +13,12 @@ namespace Envoy { class ProxyProtoIntegrationTest : public HttpIntegrationTest, public testing::TestWithParam { public: - ProxyProtoIntegrationTest() : HttpIntegrationTest(Http::CodecClient::Type::HTTP1, GetParam()) {} - - void initialize() override { - initialized_ = true; - fake_upstreams_.emplace_back(new FakeUpstream(0, FakeHttpConnection::Type::HTTP1, version_)); - registerPort("upstream_0", fake_upstreams_.back()->localAddress()->ip()->port()); - createTestServer("test/config/integration/server_proxy_proto.json", {"http"}); + ProxyProtoIntegrationTest() : HttpIntegrationTest(Http::CodecClient::Type::HTTP1, GetParam()) { + config_helper_.addConfigModifier([&](envoy::api::v2::Bootstrap& bootstrap) -> void { + auto* listener = bootstrap.mutable_static_resources()->mutable_listeners(0); + auto* filter_chain = listener->mutable_filter_chains(0); + filter_chain->mutable_use_proxy_proto()->set_value(true); + }); } }; } // namespace Envoy diff --git a/test/integration/xds_integration_test.cc b/test/integration/xds_integration_test.cc index 9f6ffc3d00f3f..2e3523aa0c5f6 100644 --- a/test/integration/xds_integration_test.cc +++ b/test/integration/xds_integration_test.cc @@ -10,11 +10,11 @@ namespace { class XdsIntegrationTest : public HttpIntegrationTest, public testing::TestWithParam { public: - XdsIntegrationTest() : HttpIntegrationTest(Http::CodecClient::Type::HTTP2, GetParam()) {} + XdsIntegrationTest() : HttpIntegrationTest(Http::CodecClient::Type::HTTP2, GetParam()) { + setUpstreamProtocol(FakeHttpConnection::Type::HTTP2); + } - void initialize() override { - initialized_ = true; - fake_upstreams_.emplace_back(new FakeUpstream(0, FakeHttpConnection::Type::HTTP2, version_)); + void createEnvoy() override { registerPort("upstream_0", fake_upstreams_.back()->localAddress()->ip()->port()); createApiTestServer( { diff --git a/test/test_common/utility.h b/test/test_common/utility.h index 218c9f9b1ae3b..1e1e1dd6d6666 100644 --- a/test/test_common/utility.h +++ b/test/test_common/utility.h @@ -233,6 +233,17 @@ class TestHeaderMapImpl : public HeaderMapImpl { TestHeaderMapImpl(const std::initializer_list>& values); TestHeaderMapImpl(const HeaderMap& rhs); + friend std::ostream& operator<<(std::ostream& os, const TestHeaderMapImpl& p) { + p.iterate( + [](const HeaderEntry& header, void* context) -> HeaderMap::Iterate { + std::ostream* local_os = static_cast(context); + *local_os << header.key().c_str() << " " << header.value().c_str() << std::endl; + return HeaderMap::Iterate::Continue; + }, + &os); + return os; + } + using HeaderMapImpl::addCopy; void addCopy(const std::string& key, const std::string& value); std::string get_(const std::string& key);