diff --git a/test/integration/echo_integration_test.cc b/test/integration/echo_integration_test.cc index 8ce3a3ad16bb8..c60cf8452b03a 100644 --- a/test/integration/echo_integration_test.cc +++ b/test/integration/echo_integration_test.cc @@ -63,13 +63,14 @@ TEST_P(EchoIntegrationTest, Hello) { TEST_P(EchoIntegrationTest, AddRemoveListener) { const std::string json = TestEnvironment::substitute(R"EOF( - { - "name": "new_listener", - "address": "tcp://{{ ip_loopback_address }}:0", - "filters": [ - { "name": "echo", "config": {} } - ] - } +name: new_listener +address: + socket_address: + address: "{{ ip_loopback_address }}" + port_value: 0 +filter_chains: +- filters: + - name: envoy.echo )EOF", GetParam()); @@ -80,7 +81,7 @@ TEST_P(EchoIntegrationTest, AddRemoveListener) { [&listener_added_by_worker]() -> void { listener_added_by_worker.setReady(); }); test_server_->server().dispatcher().post([this, json, &listener_added_by_manager]() -> void { EXPECT_TRUE(test_server_->server().listenerManager().addOrUpdateListener( - Server::parseListenerFromJson(json), "", true)); + Server::parseListenerFromV2Yaml(json), "", true)); listener_added_by_manager.setReady(); }); listener_added_by_worker.waitReady(); diff --git a/test/server/BUILD b/test/server/BUILD index 8b31ee942cad7..3ebf82386d89f 100644 --- a/test/server/BUILD +++ b/test/server/BUILD @@ -231,9 +231,8 @@ envoy_cc_test_library( name = "utility_lib", hdrs = ["utility.h"], deps = [ - "//source/common/config:lds_json_lib", - "//source/common/json:json_loader_lib", "//source/common/protobuf:utility_lib", + "@envoy_api//envoy/api/v2:lds_cc", ], ) diff --git a/test/server/listener_manager_impl_test.cc b/test/server/listener_manager_impl_test.cc index 4e112120024d0..81d46c97aed5f 100644 --- a/test/server/listener_manager_impl_test.cc +++ b/test/server/listener_manager_impl_test.cc @@ -1,4 +1,8 @@ +#include #include +#include +#include +#include #include "envoy/admin/v2alpha/config_dump.pb.h" #include "envoy/registry/registry.h" @@ -301,68 +305,80 @@ class MockLdsApi : public LdsApi { }; TEST_F(ListenerManagerImplWithRealFiltersTest, EmptyFilter) { - const std::string json = R"EOF( - { - "address": "tcp://127.0.0.1:1234", - "filters": [] - } + const std::string yaml = R"EOF( +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: [] )EOF"; EXPECT_CALL(server_.random_, uuid()); EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, true)); - manager_->addOrUpdateListener(parseListenerFromJson(json), "", true); + manager_->addOrUpdateListener(parseListenerFromV2Yaml(yaml), "", true); EXPECT_EQ(1U, manager_->listeners().size()); EXPECT_EQ(std::chrono::milliseconds(15000), manager_->listeners().front().get().listenerFiltersTimeout()); } TEST_F(ListenerManagerImplWithRealFiltersTest, DefaultListenerPerConnectionBufferLimit) { - const std::string json = R"EOF( - { - "address": "tcp://127.0.0.1:1234", - "filters": [] - } + const std::string yaml = R"EOF( +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: [] )EOF"; EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, true)); - manager_->addOrUpdateListener(parseListenerFromJson(json), "", true); + manager_->addOrUpdateListener(parseListenerFromV2Yaml(yaml), "", true); EXPECT_EQ(1024 * 1024U, manager_->listeners().back().get().perConnectionBufferLimitBytes()); } TEST_F(ListenerManagerImplWithRealFiltersTest, SetListenerPerConnectionBufferLimit) { - const std::string json = R"EOF( - { - "address": "tcp://127.0.0.1:1234", - "filters": [], - "per_connection_buffer_limit_bytes": 8192 - } + const std::string yaml = R"EOF( +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: [] +per_connection_buffer_limit_bytes: 8192 )EOF"; EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, true)); - manager_->addOrUpdateListener(parseListenerFromJson(json), "", true); + manager_->addOrUpdateListener(parseListenerFromV2Yaml(yaml), "", true); EXPECT_EQ(8192U, manager_->listeners().back().get().perConnectionBufferLimitBytes()); } TEST_F(ListenerManagerImplWithRealFiltersTest, SslContext) { - const std::string json = TestEnvironment::substitute(R"EOF( - { - "address": "tcp://127.0.0.1:1234", - "filters" : [], - "ssl_context" : { - "cert_chain_file" : "{{ test_rundir }}/test/extensions/transport_sockets/tls/test_data/san_uri_cert.pem", - "private_key_file" : "{{ test_rundir }}/test/extensions/transport_sockets/tls/test_data/san_uri_key.pem", - "ca_cert_file" : "{{ test_rundir }}/test/extensions/transport_sockets/tls/test_data/ca_cert.pem", - "verify_subject_alt_name" : [ - "localhost", - "127.0.0.1" - ] - } - } + const std::string yaml = TestEnvironment::substitute(R"EOF( +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: [] + tls_context: + common_tls_context: + tls_certificates: + - certificate_chain: + filename: "{{ test_rundir }}/test/extensions/transport_sockets/tls/test_data/san_uri_cert.pem" + private_key: + filename: "{{ test_rundir }}/test/extensions/transport_sockets/tls/test_data/san_uri_key.pem" + validation_context: + trusted_ca: + filename: "{{ test_rundir }}/test/extensions/transport_sockets/tls/test_data/ca_cert.pem" + verify_subject_alt_name: + - localhost + - 127.0.0.1 )EOF", Network::Address::IpVersion::v4); EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, true)); - manager_->addOrUpdateListener(parseListenerFromJson(json), "", true); + manager_->addOrUpdateListener(parseListenerFromV2Yaml(yaml), "", true); EXPECT_EQ(1U, manager_->listeners().size()); auto filter_chain = findFilterChain(1234, true, "127.0.0.1", true, "", true, "tls", true, {}, @@ -393,50 +409,50 @@ TEST_F(ListenerManagerImplWithRealFiltersTest, UdpAddress) { } TEST_F(ListenerManagerImplWithRealFiltersTest, BadListenerConfig) { - const std::string json = R"EOF( - { - "address": "tcp://127.0.0.1:1234", - "filters": [], - "test": "a" - } + const std::string yaml = R"EOF( +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: [] +test: a )EOF"; - EXPECT_THROW(manager_->addOrUpdateListener(parseListenerFromJson(json), "", true), - Json::Exception); + EXPECT_THROW_WITH_REGEX(manager_->addOrUpdateListener(parseListenerFromV2Yaml(yaml), "", true), + EnvoyException, "test: Cannot find field"); } TEST_F(ListenerManagerImplWithRealFiltersTest, BadFilterConfig) { - const std::string json = R"EOF( - { - "address": "tcp://127.0.0.1:1234", - "filters": [ - { - "foo" : "type", - "name" : "name", - "config" : {} - } - ] - } + const std::string yaml = R"EOF( +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: + - foo: type + name: name + config: {} )EOF"; - EXPECT_THROW(manager_->addOrUpdateListener(parseListenerFromJson(json), "", true), - Json::Exception); + EXPECT_THROW_WITH_REGEX(manager_->addOrUpdateListener(parseListenerFromV2Yaml(yaml), "", true), + EnvoyException, "foo: Cannot find field"); } TEST_F(ListenerManagerImplWithRealFiltersTest, BadFilterName) { - const std::string json = R"EOF( - { - "address": "tcp://127.0.0.1:1234", - "filters": [ - { - "name" : "invalid", - "config" : {} - } - ] - } + const std::string yaml = R"EOF( +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: + - name: invalid + config: {} )EOF"; - EXPECT_THROW_WITH_MESSAGE(manager_->addOrUpdateListener(parseListenerFromJson(json), "", true), + EXPECT_THROW_WITH_MESSAGE(manager_->addOrUpdateListener(parseListenerFromV2Yaml(yaml), "", true), EnvoyException, "Didn't find a registered implementation for name: 'invalid'"); } @@ -446,31 +462,47 @@ class TestStatsConfigFactory : public Configuration::NamedNetworkFilterConfigFac // Configuration::NamedNetworkFilterConfigFactory Network::FilterFactoryCb createFilterFactory(const Json::Object&, Configuration::FactoryContext& context) override { + return commonFilterFactory(context); + } + + Network::FilterFactoryCb + createFilterFactoryFromProto(const Protobuf::Message&, + Configuration::FactoryContext& context) override { + return commonFilterFactory(context); + } + + ProtobufTypes::MessagePtr createEmptyConfigProto() override { + return std::make_unique(); + } + + std::string name() override { return "stats_test"; } + +private: + Network::FilterFactoryCb commonFilterFactory(Configuration::FactoryContext& context) { context.scope().counter("bar").inc(); return [](Network::FilterManager&) -> void {}; } - std::string name() override { return "stats_test"; } }; TEST_F(ListenerManagerImplWithRealFiltersTest, StatsScopeTest) { Registry::RegisterFactory registered; - const std::string json = R"EOF( - { - "address": "tcp://127.0.0.1:1234", - "bind_to_port": false, - "filters": [ - { - "name" : "stats_test", - "config" : {} - } - ] - } + const std::string yaml = R"EOF( +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +deprecated_v1: + bind_to_port: false +filter_chains: +- filters: + - name: stats_test + config: {} )EOF"; EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, false)); - manager_->addOrUpdateListener(parseListenerFromJson(json), "", true); + manager_->addOrUpdateListener(parseListenerFromV2Yaml(yaml), "", true); manager_->listeners().front().get().listenerScope().counter("foo").inc(); EXPECT_EQ(1UL, server_.stats_store_.counter("bar").value()); @@ -478,7 +510,7 @@ TEST_F(ListenerManagerImplWithRealFiltersTest, StatsScopeTest) { } TEST_F(ListenerManagerImplTest, NotDefaultListenerFiltersTimeout) { - const std::string json = R"EOF( + const std::string yaml = R"EOF( name: "foo" address: socket_address: { address: 127.0.0.1, port_value: 10000 } @@ -488,7 +520,7 @@ TEST_F(ListenerManagerImplTest, NotDefaultListenerFiltersTimeout) { )EOF"; EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, true)); - EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromV2Yaml(json), "", true)); + EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromV2Yaml(yaml), "", true)); EXPECT_EQ(std::chrono::milliseconds(), manager_->listeners().front().get().listenerFiltersTimeout()); } @@ -519,36 +551,41 @@ TEST_F(ListenerManagerImplTest, AddListenerAddressNotMatching) { InSequence s; // Add foo listener. - const std::string listener_foo_json = R"EOF( - { - "name": "foo", - "address": "tcp://127.0.0.1:1234", - "filters": [], - "drain_type": "default" - } + const std::string listener_foo_yaml = R"EOF( +name: foo +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: [] +drain_type: default + )EOF"; ListenerHandle* listener_foo = expectListenerCreate(false); EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, true)); - EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromJson(listener_foo_json), "", true)); + EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_foo_yaml), "", true)); checkStats(1, 0, 0, 0, 1, 0); // Update foo listener, but with a different address. Should throw. - const std::string listener_foo_different_address_json = R"EOF( - { - "name": "foo", - "address": "tcp://127.0.0.1:1235", - "filters": [], - "drain_type": "modify_only" - } + const std::string listener_foo_different_address_yaml = R"EOF( +name: foo +address: + socket_address: + address: 127.0.0.1 + port_value: 1235 +filter_chains: +- filters: [] +drain_type: modify_only )EOF"; ListenerHandle* listener_foo_different_address = expectListenerCreate(false, envoy::api::v2::Listener_DrainType_MODIFY_ONLY); EXPECT_CALL(*listener_foo_different_address, onDestroy()); EXPECT_THROW_WITH_MESSAGE( - manager_->addOrUpdateListener(parseListenerFromJson(listener_foo_different_address_json), "", - true), + manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_foo_different_address_yaml), + "", true), EnvoyException, "error updating listener: 'foo' has a different address " "'127.0.0.1:1235' from existing listener"); @@ -565,13 +602,15 @@ TEST_F(ListenerManagerImplTest, AddListenerOnIpv4OnlySetups) { NiceMock os_sys_calls; TestThreadsafeSingletonInjector os_calls(&os_sys_calls); - const std::string listener_foo_json = R"EOF( - { - "name": "foo", - "address": "tcp://127.0.0.1:1234", - "filters": [], - "drain_type": "default" - } + const std::string listener_foo_yaml = R"EOF( +name: foo +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: [] +drain_type: default )EOF"; ListenerHandle* listener_foo = expectListenerCreate(false); @@ -581,7 +620,7 @@ TEST_F(ListenerManagerImplTest, AddListenerOnIpv4OnlySetups) { EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, true)); - EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromJson(listener_foo_json), "", true)); + EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_foo_yaml), "", true)); checkStats(1, 0, 0, 0, 1, 0); EXPECT_CALL(*listener_foo, onDestroy()); } @@ -595,13 +634,15 @@ TEST_F(ListenerManagerImplTest, AddListenerOnIpv6OnlySetups) { NiceMock os_sys_calls; TestThreadsafeSingletonInjector os_calls(&os_sys_calls); - const std::string listener_foo_json = R"EOF( - { - "name": "foo", - "address": "tcp://[::0001]:1234", - "filters": [], - "drain_type": "default" - } + const std::string listener_foo_yaml = R"EOF( +name: foo +address: + socket_address: + address: "::0001" + port_value: 1234 +filter_chains: +- filters: [] +drain_type: default )EOF"; ListenerHandle* listener_foo = expectListenerCreate(false); @@ -611,7 +652,7 @@ TEST_F(ListenerManagerImplTest, AddListenerOnIpv6OnlySetups) { EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, true)); - EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromJson(listener_foo_json), "", true)); + EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_foo_yaml), "", true)); checkStats(1, 0, 0, 0, 1, 0); EXPECT_CALL(*listener_foo, onDestroy()); } @@ -623,17 +664,19 @@ TEST_F(ListenerManagerImplTest, UpdateRemoveNotModifiableListener) { InSequence s; // Add foo listener. - const std::string listener_foo_json = R"EOF( - { - "name": "foo", - "address": "tcp://127.0.0.1:1234", - "filters": [] - } + const std::string listener_foo_yaml = R"EOF( +name: foo +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: [] )EOF"; ListenerHandle* listener_foo = expectListenerCreate(false); EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, true)); - EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromJson(listener_foo_json), "", false)); + EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_foo_yaml), "", false)); checkStats(1, 0, 0, 0, 1, 0); checkConfigDump(R"EOF( static_listeners: @@ -653,18 +696,20 @@ TEST_F(ListenerManagerImplTest, UpdateRemoveNotModifiableListener) { )EOF"); // Update foo listener. Should be blocked. - const std::string listener_foo_update1_json = R"EOF( - { - "name": "foo", - "address": "tcp://127.0.0.1:1234", - "filters": [ - { "name" : "fake", "config" : {} } - ] - } + const std::string listener_foo_update1_yaml = R"EOF( +name: foo +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: + - name: fake + config: {} )EOF"; EXPECT_FALSE( - manager_->addOrUpdateListener(parseListenerFromJson(listener_foo_update1_json), "", false)); + manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_foo_update1_yaml), "", false)); checkStats(1, 0, 0, 0, 1, 0); // Remove foo listener. Should be blocked. @@ -919,14 +964,16 @@ version_info: version5 checkStats(3, 2, 0, 1, 2, 0); // Update baz while it is warming. - const std::string listener_baz_update1_json = R"EOF( - { - "name": "baz", - "address": "tcp://127.0.0.1:1236", - "filters": [ - { "name" : "fake", "config" : {} } - ] - } + const std::string listener_baz_update1_yaml = R"EOF( +name: baz +address: + socket_address: + address: 127.0.0.1 + port_value: 1236 +filter_chains: +- filters: + - name: fake + config: {} )EOF"; ListenerHandle* listener_baz_update1 = expectListenerCreate(true); @@ -936,7 +983,7 @@ version_info: version5 })); EXPECT_CALL(listener_baz_update1->target_, initialize()); EXPECT_TRUE( - manager_->addOrUpdateListener(parseListenerFromJson(listener_baz_update1_json), "", true)); + manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_baz_update1_yaml), "", true)); EXPECT_EQ(2UL, manager_->listeners().size()); checkStats(3, 3, 0, 1, 2, 0); @@ -959,12 +1006,14 @@ TEST_F(ListenerManagerImplTest, AddDrainingListener) { manager_->startWorkers(guard_dog_); // Add foo listener directly into active. - const std::string listener_foo_json = R"EOF( - { - "name": "foo", - "address": "tcp://127.0.0.1:1234", - "filters": [] - } + const std::string listener_foo_yaml = R"EOF( +name: foo +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: [] )EOF"; Network::Address::InstanceConstSharedPtr local_address( @@ -974,7 +1023,7 @@ TEST_F(ListenerManagerImplTest, AddDrainingListener) { ListenerHandle* listener_foo = expectListenerCreate(false); EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, true)); EXPECT_CALL(*worker_, addListener(_, _)); - EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromJson(listener_foo_json), "", true)); + EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_foo_yaml), "", true)); worker_->callAddCompletion(true); checkStats(1, 0, 0, 0, 1, 0); @@ -990,7 +1039,7 @@ TEST_F(ListenerManagerImplTest, AddDrainingListener) { // Add foo again. We should use the socket from draining. ListenerHandle* listener_foo2 = expectListenerCreate(false); EXPECT_CALL(*worker_, addListener(_, _)); - EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromJson(listener_foo_json), "", true)); + EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_foo_yaml), "", true)); worker_->callAddCompletion(true); checkStats(2, 0, 1, 0, 1, 1); @@ -1007,19 +1056,21 @@ TEST_F(ListenerManagerImplTest, CantBindSocket) { EXPECT_CALL(*worker_, start(_)); manager_->startWorkers(guard_dog_); - const std::string listener_foo_json = R"EOF( - { - "name": "foo", - "address": "tcp://127.0.0.1:1234", - "filters": [] - } + const std::string listener_foo_yaml = R"EOF( +name: foo +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: [] )EOF"; ListenerHandle* listener_foo = expectListenerCreate(true); EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, true)) .WillOnce(Throw(EnvoyException("can't bind"))); EXPECT_CALL(*listener_foo, onDestroy()); - EXPECT_THROW(manager_->addOrUpdateListener(parseListenerFromJson(listener_foo_json), "", true), + EXPECT_THROW(manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_foo_yaml), "", true), EnvoyException); } @@ -1029,18 +1080,20 @@ TEST_F(ListenerManagerImplTest, ListenerDraining) { EXPECT_CALL(*worker_, start(_)); manager_->startWorkers(guard_dog_); - const std::string listener_foo_json = R"EOF( - { - "name": "foo", - "address": "tcp://127.0.0.1:1234", - "filters": [] - } + const std::string listener_foo_yaml = R"EOF( +name: foo +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: [] )EOF"; ListenerHandle* listener_foo = expectListenerCreate(false); EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, true)); EXPECT_CALL(*worker_, addListener(_, _)); - EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromJson(listener_foo_json), "", true)); + EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_foo_yaml), "", true)); worker_->callAddCompletion(true); checkStats(1, 0, 0, 0, 1, 0); @@ -1081,18 +1134,20 @@ TEST_F(ListenerManagerImplTest, RemoveListener) { EXPECT_FALSE(manager_->removeListener("unknown")); // Add foo listener into warming. - const std::string listener_foo_json = R"EOF( - { - "name": "foo", - "address": "tcp://127.0.0.1:1234", - "filters": [] - } + const std::string listener_foo_yaml = R"EOF( +name: foo +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: [] )EOF"; ListenerHandle* listener_foo = expectListenerCreate(true); EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, true)); EXPECT_CALL(listener_foo->target_, initialize()); - EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromJson(listener_foo_json), "", true)); + EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_foo_yaml), "", true)); EXPECT_EQ(0UL, manager_->listeners().size()); checkStats(1, 0, 0, 1, 0, 0); @@ -1106,7 +1161,7 @@ TEST_F(ListenerManagerImplTest, RemoveListener) { listener_foo = expectListenerCreate(true); EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, true)); EXPECT_CALL(listener_foo->target_, initialize()); - EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromJson(listener_foo_json), "", true)); + EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_foo_yaml), "", true)); checkStats(2, 0, 1, 1, 0, 0); EXPECT_CALL(*worker_, addListener(_, _)); listener_foo->target_.ready(); @@ -1115,20 +1170,22 @@ TEST_F(ListenerManagerImplTest, RemoveListener) { checkStats(2, 0, 1, 0, 1, 0); // Update foo into warming. - const std::string listener_foo_update1_json = R"EOF( - { - "name": "foo", - "address": "tcp://127.0.0.1:1234", - "filters": [ - { "name" : "fake", "config" : {} } - ] - } + const std::string listener_foo_update1_yaml = R"EOF( +name: foo +address: + socket_address: + address: 127.0.0.1 + port_value: 1234 +filter_chains: +- filters: + - name: fake + config: {} )EOF"; ListenerHandle* listener_foo_update1 = expectListenerCreate(true); EXPECT_CALL(listener_foo_update1->target_, initialize()); EXPECT_TRUE( - manager_->addOrUpdateListener(parseListenerFromJson(listener_foo_update1_json), "", true)); + manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_foo_update1_yaml), "", true)); EXPECT_EQ(1UL, manager_->listeners().size()); checkStats(2, 1, 1, 1, 1, 0); @@ -1154,18 +1211,20 @@ TEST_F(ListenerManagerImplTest, AddListenerFailure) { manager_->startWorkers(guard_dog_); // Add foo listener into active. - const std::string listener_foo_json = R"EOF( - { - "name": "foo", - "address": "tcp://0.0.0.0:1234", - "filters": [] - } + const std::string listener_foo_yaml = R"EOF( +name: foo +address: + socket_address: + address: 0.0.0.0 + port_value: 1234 +filter_chains: +- filters: [] )EOF"; ListenerHandle* listener_foo = expectListenerCreate(false); EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, true)); EXPECT_CALL(*worker_, addListener(_, _)); - EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromJson(listener_foo_json), "", true)); + EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_foo_yaml), "", true)); EXPECT_CALL(*worker_, stopListener(_)); EXPECT_CALL(*listener_foo->drain_manager_, startDrainSequence(_)); @@ -1181,15 +1240,16 @@ TEST_F(ListenerManagerImplTest, AddListenerFailure) { } TEST_F(ListenerManagerImplTest, StatsNameValidCharacterTest) { - const std::string json = R"EOF( - { - "address": "tcp://[::1]:10000", - "filters": [], - "bind_to_port": false - } + const std::string yaml = R"EOF( +address: + socket_address: + address: "::1" + port_value: 10000 +filter_chains: +- filters: [] )EOF"; - manager_->addOrUpdateListener(parseListenerFromJson(json), "", true); + manager_->addOrUpdateListener(parseListenerFromV2Yaml(yaml), "", true); manager_->listeners().front().get().listenerScope().counter("foo").inc(); EXPECT_EQ(1UL, server_.stats_store_.counter("listener.[__1]_10000.foo").value()); @@ -1202,34 +1262,40 @@ TEST_F(ListenerManagerImplTest, DuplicateAddressDontBind) { manager_->startWorkers(guard_dog_); // Add foo listener into warming. - const std::string listener_foo_json = R"EOF( - { - "name": "foo", - "address": "tcp://0.0.0.0:1234", - "filters": [], - "bind_to_port": false - } + const std::string listener_foo_yaml = R"EOF( +name: foo +address: + socket_address: + address: 0.0.0.0 + port_value: 1234 +deprecated_v1: + bind_to_port: false +filter_chains: +- filters: [] )EOF"; ListenerHandle* listener_foo = expectListenerCreate(true); EXPECT_CALL(listener_factory_, createListenSocket(_, _, _, false)); EXPECT_CALL(listener_foo->target_, initialize()); - EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromJson(listener_foo_json), "", true)); + EXPECT_TRUE(manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_foo_yaml), "", true)); // Add bar with same non-binding address. Should fail. - const std::string listener_bar_json = R"EOF( - { - "name": "bar", - "address": "tcp://0.0.0.0:1234", - "filters": [], - "bind_to_port": false - } + const std::string listener_bar_yaml = R"EOF( +name: bar +address: + socket_address: + address: 0.0.0.0 + port_value: 1234 +deprecated_v1: + bind_to_port: false +filter_chains: +- filters: [] )EOF"; ListenerHandle* listener_bar = expectListenerCreate(true); EXPECT_CALL(*listener_bar, onDestroy()); EXPECT_THROW_WITH_MESSAGE( - manager_->addOrUpdateListener(parseListenerFromJson(listener_bar_json), "", true), + manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_bar_yaml), "", true), EnvoyException, "error adding listener: 'bar' has duplicate address '0.0.0.0:1234' as existing listener"); @@ -1241,7 +1307,7 @@ TEST_F(ListenerManagerImplTest, DuplicateAddressDontBind) { listener_bar = expectListenerCreate(true); EXPECT_CALL(*listener_bar, onDestroy()); EXPECT_THROW_WITH_MESSAGE( - manager_->addOrUpdateListener(parseListenerFromJson(listener_bar_json), "", true), + manager_->addOrUpdateListener(parseListenerFromV2Yaml(listener_bar_yaml), "", true), EnvoyException, "error adding listener: 'bar' has duplicate address '0.0.0.0:1234' as existing listener"); diff --git a/test/server/utility.h b/test/server/utility.h index c07798b4a6b77..379923a2814e0 100644 --- a/test/server/utility.h +++ b/test/server/utility.h @@ -1,22 +1,15 @@ #pragma once -#include "common/config/lds_json.h" -#include "common/json/json_loader.h" +#include + +#include "envoy/api/v2/lds.pb.h" + #include "common/protobuf/utility.h" -#include "common/stats/stats_options_impl.h" namespace Envoy { namespace Server { namespace { -inline envoy::api::v2::Listener parseListenerFromJson(const std::string& json_string) { - envoy::api::v2::Listener listener; - auto json_object_ptr = Json::Factory::loadFromString(json_string); - Stats::StatsOptionsImpl stats_options; - Config::LdsJson::translateListener(*json_object_ptr, listener, stats_options); - return listener; -} - inline envoy::api::v2::Listener parseListenerFromV2Yaml(const std::string& yaml) { envoy::api::v2::Listener listener; MessageUtil::loadFromYaml(yaml, listener); diff --git a/test/test_common/environment.cc b/test/test_common/environment.cc index 136b35a1f222b..c3f924dff3a99 100644 --- a/test/test_common/environment.cc +++ b/test/test_common/environment.cc @@ -196,7 +196,7 @@ std::string TestEnvironment::substitute(const std::string& str, // Substitute IP loopback addresses. const std::regex loopback_address_regex("\\{\\{ ip_loopback_address \\}\\}"); out_json_string = std::regex_replace(out_json_string, loopback_address_regex, - Network::Test::getLoopbackAddressUrlString(version)); + Network::Test::getLoopbackAddressString(version)); const std::regex ntop_loopback_address_regex("\\{\\{ ntop_ip_loopback_address \\}\\}"); out_json_string = std::regex_replace(out_json_string, ntop_loopback_address_regex, Network::Test::getLoopbackAddressString(version));